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