1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
4 -------------------------------------------------------------------------------
5 This file is part of mlib.
7 mlib is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your option)
12 mlib is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License; if not,
17 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 Boston, MA 02111-1307 USA
19 -------------------------------------------------------------------------------
20 Creado: Mon Apr 14 16:23:22 2003
21 Autor: Martin Marrese <mmarre@mecon.gov.ar>
22 -------------------------------------------------------------------------------
24 -----------------------------------------------------------------------------*/
26 require_once 'MLIB/Marco/ImagenAnimada.php';
27 require_once 'MLIB/Marco/Menu.php';
28 require_once 'MLIB/Marco/MenuHorizontal.php';
29 require_once 'MLIB/Marco/MenuVertical.php';
30 require_once 'MLIB/Marco/MenuOculto.php';
33 * Clase para el manejo de las secciones
37 class MLIB_Marco_Seccion {
39 * Nombre de la seccion.
47 * Este es el nombre de la imagen
55 * Hijos (menu) de la seccion.
63 * Valor string del tipo de menu de la seccion
65 * @var string $tipoMenu
71 * Array con la configuracion del sistema
73 * @var array $configuracion
76 var $_configuracion = array();
79 * Contiene el html del menu de la seccion
81 * @var string $menuHtml
87 * Nombre del archivo pagina.
95 * Recibe como parametro el nombre de la seccion
97 * @param array $seccion Array con la informacion de la seccion
98 * @param array $configuracion Array con la configuracion del sistema
103 function MLIB_Marco_Seccion($seccion, $configuracion)
105 $this->_nombre = @strval($seccion['nombre']);
106 $imgComun = @strval($seccion['imagenComun']);
107 $imgMouseOn = @strval($seccion['imagenMouseOn']);
108 $imgSelect = @strval($seccion['imagenSelect']);
109 $this->_tipoMenu = @strval(strtolower($seccion['tipoMenu']));
110 $this->_link = @strval($seccion['link']);
112 $this->_imagen = new MLIB_Marco_ImagenAnimada( $imgComun,
115 $configuracion['directorios']['imagenes'],
117 $configuracion['directorios']['root'].'/'.
119 @strval($seccion['alt']));
120 if (!is_null($configuracion)) {
121 $this->_configuracion = $configuracion;
123 if (array_key_exists('hijos', $seccion)) {
124 $this->_cargarHijos($seccion['hijos']);
129 * Funcion que devuelve un string con el html a imprimir por pantalla.
131 * @param string $link_sel Indica la pagina a la cual se quiere acceder.
136 function toHtml($link_sel)
138 if (!$this->_configuracion['links']) {
139 $this->_imagen->setHabilitada(false);
141 if ($this->verifSeccionSeleccionada($link_sel)) {
142 $this->_imagen->setSeleccionada(true);
144 return $this->_imagen->toHtml();
148 * Carga el array con los objetos hijos de la seccion
150 * @param array $hijos Array con los datos de los hijos de la seccion
155 function _cargarHijos($hijos)
157 if ($this->_tipoMenu == 'vertical'){
158 $tmp = new MLIB_Marco_MenuVertical($this->_configuracion);
160 elseif ($this->_tipoMenu == 'horizontal') {
161 $tmp = new MLIB_Marco_MenuHorizontal($this->_configuracion);
164 $tmp = new MLIB_Marco_MenuOculto($this->_configuracion);
166 foreach ($hijos as $hijo) {
167 $hijo['alt'] = @$hijo['alt'] ? $hijo['alt'] : $hijo['nombre'];
168 $hijo['nombre'] = $this->_nombre.'-'.$hijo['nombre'];
169 $tmp->agregarComponente($hijo);
171 $this->_hijos = $tmp;
175 * Funcion que se encarga de desserializar el array asociativo paginas-secciones.
180 function _desSerializarArraySecciones()
182 $file_cache = strtr($this->_configuracion['directorios']['root'],'/','_');
183 $tmp = $this->_configuracion['directorios_fs']['cache'].'/'.ARRAYSECCIONES_SERIALIZADO.'_'.$file_cache;
185 if (file_exists($tmp)) {
186 $s = implode("", @file($tmp));
187 return unserialize($s);
195 * Funcion que se encarga de verificar si la pagina a la cual se quiere
196 * acceder pertenece a la seccion que estoy dibujando. Se utiliza como
197 * agregado en toHtml.
198 * Devuelve 1 si pertenece a la seccion, en caso contrario 0.
200 * @param string $link_sel Nombre de la pagina a la cual se quiere acceder.
205 function verifSeccionSeleccionada($link_sel)
207 $tmp = $this->_desSerializarArraySecciones();
209 if (isset($tmp) && array_key_exists($this->_nombre,$tmp)) {
210 foreach ($tmp[$this->_nombre] as $t) {
211 if (rtrim($link_sel, '/') == rtrim($t, '/')) {
220 * Devuelve el html a mostrar en pantalla
222 * @param string $link_sel Nombre de la seccion seleccionada
223 * @param bool $ultimo Indica si es el ultimo componente del menu.....en caso de serlo, debe mostrar la imagen con codito
228 function toHtmlVertical($link_sel, $ultimo = false)
230 $style = "text-decoration:none";
232 if (!$this->_configuracion['links']) {
237 $link_start = '<a href="'.$this->_configuracion['directorios']['root'].'/'.$this->_link.'" style="'.$style.'">';
242 if ($this->verifSeccionSeleccionada($link_sel)) {
243 $sec[] = $link_start.'<img src="/MLIB/images/general_carpeta_f3" border="0">'.$link_end;
246 $sec[] = $link_start.'<img src="/MLIB/images/general_carpeta" border="0">'.$link_end;
249 $nombre = strstr($this->_nombre, '-');
250 $nombre = substr($nombre, 1);
251 $sec[] = '<font face="Arial, Helvetica, sans-serif" size="1"><p>'.$nombre.'</p></font>';