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