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