------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'MECON/Marco/ImagenAnimada.php'; require_once 'MECON/Marco/Menu.php'; require_once 'MECON/Marco/MenuHorizontal.php'; require_once 'MECON/Marco/MenuVertical.php'; require_once 'MECON/Marco/MenuOculto.php'; /** * Clase para el manejo de las secciones * * @access public */ class MECON_Marco_Seccion { /** * Nombre de la seccion. * * @var string $nombre * @access private */ var $_nombre = ''; /** * Este es el nombre de la imagen * * @var Imagen $imagen * @access private */ var $_imagen; /** * Hijos (menu) de la seccion. * * @var Menu $hijos * @access private */ var $_hijos; /** * Valor string del tipo de menu de la seccion * * @var string $tipoMenu * @access private */ var $_tipoMenu = ''; /** * Array con la configuracion del sistema * * @var array $configuracion * @access private */ var $_configuracion = array(); /** * Contiene el html del menu de la seccion * * @var string $menuHtml * @access private */ var $_menuHtml = ''; /** * Nombre del archivo pagina. * * @var string $link * @access private */ var $_link = ''; /** * Recibe como parametro el nombre de la seccion * * @param array $seccion Array con la informacion de la seccion * @param array $configuracion Array con la configuracion del sistema * * @return void * @access public */ function MECON_Marco_Seccion($seccion, $configuracion) { $this->_nombre = @strval($seccion['nombre']); $imgComun = @strval($seccion['imagenComun']); $imgMouseOn = @strval($seccion['imagenMouseOn']); $imgSelect = @strval($seccion['imagenSelect']); $this->_tipoMenu = @strval(strtolower($seccion['tipoMenu'])); $this->_link = @strval($seccion['link']); $this->_imagen = new MECON_Marco_ImagenAnimada( $imgComun, $imgMouseOn, $imgSelect, $configuracion['directorios']['imagenes'], $this->_nombre, $configuracion['directorios']['root'].'/'. $this->_link, @strval($seccion['alt'])); if (!is_null($configuracion)) { $this->_configuracion = $configuracion; } if (array_key_exists('hijos', $seccion)) { $this->_cargarHijos($seccion['hijos']); } } /** * Funcion que devuelve un string con el html a imprimir por pantalla. * * @param string $link_sel Indica la pagina a la cual se quiere acceder. * * @return string * @access public */ function toHtml($link_sel) { if (!$this->_configuracion['links']) { $this->_imagen->setHabilitada(false); } if ($this->verifSeccionSeleccionada($link_sel)) { $this->_imagen->setSeleccionada(true); } return $this->_imagen->toHtml(); } /** * Carga el array con los objetos hijos de la seccion * * @param array $hijos Array con los datos de los hijos de la seccion * * @return void * @access private */ function _cargarHijos($hijos) { if ($this->_tipoMenu == 'vertical'){ $tmp = new MECON_Marco_MenuVertical($this->_configuracion); } elseif ($this->_tipoMenu == 'horizontal') { $tmp = new MECON_Marco_MenuHorizontal($this->_configuracion); } else { $tmp = new MECON_Marco_MenuOculto($this->_configuracion); } foreach ($hijos as $hijo) { $hijo['alt'] = @$hijo['alt'] ? $hijo['alt'] : $hijo['nombre']; $hijo['nombre'] = $this->_nombre.'-'.$hijo['nombre']; $tmp->agregarComponente($hijo); } $this->_hijos = $tmp; } /** * Funcion que se encarga de desserializar el array asociativo paginas-secciones. * * @return void * @access private */ function _desSerializarArraySecciones() { $file_cache = strtr($this->_configuracion['directorios']['root'],'/','_'); $tmp = $this->_configuracion['directorios_fs']['cache'].'/'.ARRAYSECCIONES_SERIALIZADO.'_'.$file_cache; if (file_exists($tmp)) { $s = implode("", @file($tmp)); return unserialize($s); } else { return null; } } /** * 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. * Devuelve 1 si pertenece a la seccion, en caso contrario 0. * * @param string $link_sel Nombre de la pagina a la cual se quiere acceder. * * @return int * @access public */ function verifSeccionSeleccionada($link_sel) { $tmp = $this->_desSerializarArraySecciones(); $retorno = 0; if (isset($tmp) && array_key_exists($this->_nombre,$tmp)) { foreach ($tmp[$this->_nombre] as $t) { if (rtrim($link_sel, '/') == rtrim($t, '/')) { $retorno = 1; } } } return $retorno; } /** * Devuelve el html a mostrar en pantalla * * @param string $link_sel Nombre de la seccion seleccionada * @param bool $ultimo Indica si es el ultimo componente del menu.....en caso de serlo, debe mostrar la imagen con codito * * @return string * @access public */ function toHtmlVertical($link_sel, $ultimo = false) { $style = "text-decoration:none"; if (!$this->_configuracion['links']) { $link_start = ''; $link_end = ''; } else { $link_start = ''; $link_end = ''; } $sec = array (); if ($this->verifSeccionSeleccionada($link_sel)) { $sec[] = $link_start.''.$link_end; } else { $sec[] = $link_start.''.$link_end; } $nombre = strstr($this->_nombre, '-'); $nombre = substr($nombre, 1); $sec[] = '

'.$nombre.'

'; return $sec; } } ?>