]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco/Seccion.php
- Correccion de un bug.
[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 // +X2C includes
28 require_once 'MECON/Marco/Pagina.php';
29 // ~X2C
30
31 //Require Agregados por MMARRE, no pasan por el xmi2code
32 require_once 'MECON/Marco/ImagenAnimada.php';
33 require_once 'MECON/Marco/Menu.php';
34 require_once 'MECON/Marco/MenuHorizontal.php';
35 require_once 'MECON/Marco/MenuVertical.php';
36 require_once 'MECON/Marco/MenuOculto.php';
37
38 // +X2C Class 16 :Seccion
39 /**
40  * Clase seccion para el manejo de las secciones
41  *
42  * @package MECON_Marco
43  * @access public
44  */
45 class Seccion extends Pagina {
46     /**
47      * Nombre de la seccion.
48      *
49      * @var    string $nombre
50      * @access private
51      */
52     var $_nombre;
53
54     /**
55      * Este es el nombre de la imagen
56      *
57      * @var    Imagen $imagen
58      * @access private
59      */
60     var $_imagen;
61
62     /**
63      * Hijos (menu) de la seccion.
64      *
65      * @var    Menu $hijos
66      * @access private
67      */
68     var $_hijos;
69
70     /**
71      * Valor string del tipo de menu de la seccion
72      *
73      * @var    string $tipoMenu
74      * @access private
75      */
76     var $_tipoMenu;
77
78     /**
79      * Array con la configuracion del sistema
80      *
81      * @var    array $configuracion
82      * @access private
83      */
84     var $_configuracion;
85
86     /**
87      * @var    string $menuHtml
88      * @access private
89      */
90     var $_menuHtml;
91
92     // ~X2C
93
94     // +X2C Operation 63
95     /**
96      * Constructor. Recibe como parametro el nombre de la seccion
97      *
98      * @param  array $seccion Array con la informacion de la seccion
99      * @param  array $configuracion Array con la configuracion del sistema
100      *
101      * @return void
102      * @access public
103      * @static
104      */
105     function Seccion($seccion, $configuracion) // ~X2C
106     {
107         $this->_nombre   = @strval($seccion['nombre']);
108         $imgComun        = @strval($seccion['imagenComun']);
109         $imgMouseOn      = @strval($seccion['imagenMouseOn']);
110         $imgSelect       = @strval($seccion['imagenSelect']);
111         $this->_tipoMenu = @strval($seccion['tipoMenu']);
112         if (@$seccion['link']) {
113             parent::Pagina($seccion['link']);
114         }        
115         $this->_imagen = new ImagenAnimada($imgComun, $imgMouseOn, $imgSelect,
116             $configuracion['directorios']['imagenes'], $this->_nombre,
117             $configuracion['directorios']['root'].'/'.$this->_link);
118         if (!is_null($configuracion)) {
119             $this->_configuracion = $configuracion;
120         }
121         if (array_key_exists('hijos', $seccion)) {
122             $this->_cargarHijos($seccion['hijos']);
123         }
124     }
125     // -X2C
126
127     // +X2C Operation 64
128     /**
129      * Funcion que devuelve un string con el html a imprimir por pantalla.
130      *
131      * @param  string $link_sel Indica la pagina a la cual se quiere acceder.
132      *
133      * @return string
134      * @access public
135      */
136     function toHtml($link_sel) // ~X2C
137     {
138         if (isset($_SESSION['deshabilitar_links']) && $_SESSION['deshabilitar_links']) {
139             $this->_imagen->setHabilitada(false);
140         }
141         if ($this->verifSeccionSeleccionada($link_sel)) {
142             $this->_imagen->setSeleccionada(true);
143         }
144         return $this->_imagen->toHtml();
145     }
146     // -X2C
147
148     // +X2C Operation 84
149     /**
150      * Carga el array con los objetos hijos de la seccion
151      *
152      * @param  array $hijos Array con los datos de los hijos de la seccion
153      *
154      * @return void
155      * @access private
156      */
157     function _cargarHijos($hijos) // ~X2C
158     {
159         if ($this->_tipoMenu == 'vertical'){
160             $tmp = new MenuVertical($this->_configuracion);
161         }
162         elseif ($this->_tipoMenu == 'horizontal') {
163             $tmp = new MenuHorizontal($this->_configuracion);
164         }
165         else {
166             $tmp = new MenuOculto($this->_configuracion);
167         }
168         foreach ($hijos as $hijo) {
169             $tmp->agregarComponente($hijo);
170         }
171         $this->_hijos = $tmp;
172     }
173     // -X2C
174
175     // +X2C Operation 127
176     /**
177      * Funcion que se encarga de desserializar el array asociativo paginas-secciones.
178      *
179      * @return void
180      * @access private
181      */
182     function _desSerializarArraySecciones() // ~X2C
183     {
184         $file_cache = strtr($this->_configuracion['directorios']['root'],'/','_');
185         $tmp = $this->_configuracion['directorios_fs']['cache'].'/'.ARRAYSECCIONES_SERIALIZADO.'_'.$file_cache;
186         
187         if (file_exists($tmp)) {
188             $s = implode("", @file($tmp));
189             return unserialize($s);
190         }
191         else {
192             return null;
193         }
194     }
195     // -X2C
196
197     // +X2C Operation 129
198     /**
199      * 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.
200 Devuelve 1 si pertenece a la seccion, en caso contrario 0.
201      *
202      * @param  string $link_sel Nombre de la pagina a la cual se quiere acceder.
203      *
204      * @return int
205      * @access public
206      */
207     function verifSeccionSeleccionada($link_sel) // ~X2C
208     {
209         $tmp = $this->_desSerializarArraySecciones();
210         $retorno = 0;
211         if (isset($tmp) && array_key_exists($this->_nombre,$tmp)) {
212             foreach ($tmp[$this->_nombre] as $t) {
213                 if ($link_sel == $t) {
214                     $retorno = 1;
215                 }
216             }
217         }
218         return $retorno;
219     }
220     // -X2C
221
222
223
224     // +X2C Operation 202
225     /**
226      * @param  string $link_sel Nombre de la seccion seleccionada
227      * @param  bool $ultimo Indica si es el ultimo componente del menu.....en caso de serlo, debe mostrar la imagen con codito
228      *
229      * @return string
230      * @access public
231      */
232     function toHtmlVertical($link_sel, $ultimo = false) // ~X2C
233     {
234         $style = "text-decoration:none";
235         
236         if (isset($_SESSION['deshabilitar_links']) && $_SESSION['deshabilitar_links']) {
237             $link_start = '';
238             $link_end   = '';
239         }
240         else {
241             $link_start = '<a href="'.$this->_configuracion['directorios']['root'].'/'.$this->_link.'" style="'.$style.'">';
242             $link_end   = '</a>';
243         }
244         
245         $sec = array ();
246         if ($this->verifSeccionSeleccionada($link_sel)) {
247             if ($ultimo) {
248                 $sec[] = $link_start.'<img src="/MECON/images/general_carp2_f3" border="0">'.$link_end;
249             }
250             else {
251                 $sec[] = $link_start.'<img src="/MECON/images/general_carp1_f3" border="0">'.$link_end;
252             }
253         }
254         else {
255             if ($ultimo) {
256                 $sec[] = $link_start.'<img src="/MECON/images/general_carp2_f2" border="0">'.$link_end;
257             }
258             else {
259                 $sec[] = $link_start.'<img src="/MECON/images/general_carp1_f2" border="0">'.$link_end;
260             }
261         }
262         
263         $sec[] = '<font face="Arial, Helvetica, sans-serif" size="1" color=""><b>'.$link_start.'&nbsp;&nbsp;'.$this->_nombre.$link_end.'</b></font>';
264         return $sec;
265     }
266     // -X2C
267
268 } // -X2C Class :Seccion
269
270 ?>