]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco/Seccion.php
009263ed4413a22c230909bbaa3905185f96433b
[mecon/meconlib.git] / lib / MECON / Marco / Seccion.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: Mon Apr 14 16:23:22 2003
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27
28 //Require Agregados por MMARRE, no pasan por el xmi2code
29 require_once 'MECON/Marco/ImagenAnimada.php';
30 require_once 'MECON/Marco/Menu.php';
31 require_once 'MECON/Marco/MenuHorizontal.php';
32 require_once 'MECON/Marco/MenuVertical.php';
33 require_once 'MECON/Marco/MenuOculto.php';
34
35 // +X2C Class 16 :MECON_Marco_Seccion
36 /**
37  * Clase para el manejo de las secciones
38  *
39  * @package MECON_Marco
40  * @access public
41  */
42 class MECON_Marco_Seccion {
43     /**
44      * Nombre de la seccion.
45      *
46      * @var    string $nombre
47      * @access private
48      */
49     var $_nombre = '';
50
51     /**
52      * Este es el nombre de la imagen
53      *
54      * @var    Imagen $imagen
55      * @access private
56      */
57     var $_imagen;
58
59     /**
60      * Hijos (menu) de la seccion.
61      *
62      * @var    Menu $hijos
63      * @access private
64      */
65     var $_hijos;
66
67     /**
68      * Valor string del tipo de menu de la seccion
69      *
70      * @var    string $tipoMenu
71      * @access private
72      */
73     var $_tipoMenu = '';
74
75     /**
76      * Array con la configuracion del sistema
77      *
78      * @var    array $configuracion
79      * @access private
80      */
81     var $_configuracion = array();
82
83     /**
84      * Contiene el html del menu de la seccion
85      *
86      * @var    string $menuHtml
87      * @access private
88      */
89     var $_menuHtml = '';
90
91     /**
92      * Nombre del archivo pagina.
93      *
94      * @var    string $link
95      * @access private
96      */
97     var $_link = '';
98
99     // ~X2C
100
101     // +X2C Operation 63
102     /**
103      * Recibe como parametro el nombre de la seccion
104      *
105      * @param  array $seccion Array con la informacion de la seccion
106      * @param  array $configuracion Array con la configuracion del sistema
107      *
108      * @return void
109      * @access public
110      */
111     function MECON_Marco_Seccion($seccion, $configuracion) // ~X2C
112     {
113         $this->_nombre   = @strval($seccion['nombre']);
114         $imgComun        = @strval($seccion['imagenComun']);
115         $imgMouseOn      = @strval($seccion['imagenMouseOn']);
116         $imgSelect       = @strval($seccion['imagenSelect']);
117         $this->_tipoMenu = @strval($seccion['tipoMenu']);
118         $this->_link     = @strval($seccion['link']);
119         $this->_imagen = new MECON_Marco_ImagenAnimada( $imgComun, 
120                                                         $imgMouseOn, 
121                                                         $imgSelect,
122                                                         $configuracion['directorios']['imagenes'], 
123                                                         $this->_nombre,
124                                                         $configuracion['directorios']['root'].'/'.
125                                                         $this->_link);
126         if (!is_null($configuracion)) {
127             $this->_configuracion = $configuracion;
128         }
129         if (array_key_exists('hijos', $seccion)) {
130             $this->_cargarHijos($seccion['hijos']);
131         }
132     }
133     // -X2C
134
135     // +X2C Operation 64
136     /**
137      * Funcion que devuelve un string con el html a imprimir por pantalla.
138      *
139      * @param  string $link_sel Indica la pagina a la cual se quiere acceder.
140      *
141      * @return string
142      * @access public
143      */
144     function toHtml($link_sel) // ~X2C
145     {
146         if (!$this->_configuracion['links']) {
147             $this->_imagen->setHabilitada(false);
148         }
149         if ($this->verifSeccionSeleccionada($link_sel)) {
150             $this->_imagen->setSeleccionada(true);
151         }
152         return $this->_imagen->toHtml();
153     }
154     // -X2C
155
156     // +X2C Operation 84
157     /**
158      * Carga el array con los objetos hijos de la seccion
159      *
160      * @param  array $hijos Array con los datos de los hijos de la seccion
161      *
162      * @return void
163      * @access private
164      */
165     function _cargarHijos($hijos) // ~X2C
166     {
167         if ($this->_tipoMenu == 'vertical'){
168             $tmp = new MECON_Marco_MenuVertical($this->_configuracion);
169         }
170         elseif ($this->_tipoMenu == 'horizontal') {
171             $tmp = new MECON_Marco_MenuHorizontal($this->_configuracion);
172         }
173         else {
174             $tmp = new MECON_Marco_MenuOculto($this->_configuracion);
175         }
176         foreach ($hijos as $hijo) {
177             $hijo['nombre'] = $this->_nombre.'-'.$hijo['nombre'];
178             $tmp->agregarComponente($hijo);
179         }
180         $this->_hijos = $tmp;
181     }
182     // -X2C
183
184     // +X2C Operation 127
185     /**
186      * Funcion que se encarga de desserializar el array asociativo paginas-secciones.
187      *
188      * @return void
189      * @access private
190      */
191     function _desSerializarArraySecciones() // ~X2C
192     {
193         $file_cache = strtr($this->_configuracion['directorios']['root'],'/','_');
194         $tmp = $this->_configuracion['directorios_fs']['cache'].'/'.ARRAYSECCIONES_SERIALIZADO.'_'.$file_cache;
195         
196         if (file_exists($tmp)) {
197             $s = implode("", @file($tmp));
198             return unserialize($s);
199         }
200         else {
201             return null;
202         }
203     }
204     // -X2C
205
206     // +X2C Operation 129
207     /**
208      * Funcion que se encarga de verificar si la pagina a la cual se quiere acceder pertenece a la seccion que estoy dibujando. Se utiliza como agregado en toHtml.
209 Devuelve 1 si pertenece a la seccion, en caso contrario 0.
210      *
211      * @param  string $link_sel Nombre de la pagina a la cual se quiere acceder.
212      *
213      * @return int
214      * @access public
215      */
216     function verifSeccionSeleccionada($link_sel) // ~X2C
217     {
218         $tmp = $this->_desSerializarArraySecciones();
219         $retorno = 0;
220         if (isset($tmp) && array_key_exists($this->_nombre,$tmp)) {
221             foreach ($tmp[$this->_nombre] as $t) {
222                 if ($link_sel == $t) {
223                     $retorno = 1;
224                 }
225             }
226         }
227         return $retorno;
228     }
229     // -X2C
230
231
232
233     // +X2C Operation 202
234     /**
235      * Devuelve el html a mostrar en pantalla
236      *
237      * @param  string $link_sel Nombre de la seccion seleccionada
238      * @param  bool $ultimo Indica si es el ultimo componente del menu.....en caso de serlo, debe mostrar la imagen con codito
239      *
240      * @return string
241      * @access public
242      */
243     function toHtmlVertical($link_sel, $ultimo = false) // ~X2C
244     {
245         $style = "text-decoration:none";
246         
247         if (!$this->_configuracion['links']) {
248             $link_start = '';
249             $link_end   = '';
250         }
251         else {
252             $link_start = '<a href="'.$this->_configuracion['directorios']['root'].'/'.$this->_link.'" style="'.$style.'">';
253             $link_end   = '</a>';
254         }
255         
256         $sec = array ();
257         if ($this->verifSeccionSeleccionada($link_sel)) {
258             if ($ultimo) {
259                 $sec[] = $link_start.'<img src="/MECON/images/general_carp2_f3" border="0">'.$link_end;
260             }
261             else {
262                 $sec[] = $link_start.'<img src="/MECON/images/general_carp1_f3" border="0">'.$link_end;
263             }
264         }
265         else {
266             if ($ultimo) {
267                 $sec[] = $link_start.'<img src="/MECON/images/general_carp2_f2" border="0">'.$link_end;
268             }
269             else {
270                 $sec[] = $link_start.'<img src="/MECON/images/general_carp1_f2" border="0">'.$link_end;
271             }
272         }
273         
274         $nombre = strstr($this->_nombre, '-');
275         $nombre = substr($nombre, 1);
276         $sec[] = '<font face="Arial, Helvetica, sans-serif" size="1" color=""><b>'.$link_start.'&nbsp;&nbsp;'.$nombre.$link_end.'</b></font>';
277         return $sec;
278     }
279     // -X2C
280
281 } // -X2C Class :MECON_Marco_Seccion
282
283 ?>