// +----------------------------------------------------------------------+
//
// $Id$
// $Author$
// $URL$
// $Date$
// $Rev$
//
#require_once 'PEAR.php';
// +X2C includes
require_once 'Pagina.php';
// ~X2C
//Require Agregados por MMARRE, no pasan por el xmi2code
require_once 'ImagenAnimada.php';
require_once 'Menu.php';
require_once 'MenuHorizontal.php';
require_once 'MenuVertical.php';
require_once 'MenuOculto.php';
// +X2C Class 16 :Seccion
/**
* Clase seccion para el manejo de las secciones
*
* @access public
*/
class Seccion extends Pagina {
/**
* 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;
/**
* Lugar en donde esta el sistema.
*
* @var string $directorio
*
* @access private
*/
var $_directorio;
/**
*
* @var string $menuHtml
*
* @access private
*/
var $_menuHtml;
// ~X2C
// +X2C Operation 63
/**
* Constructor. Recibe como parametro el nombre de la seccion
*
* @param array $seccion Array con la informacion de la seccion
* @param string $directorio Dir en donde esta el sistema
*
* @return void
*
* @access public
* @static
*/
function Seccion($seccion, $directorio) // ~X2C
{
if (array_key_exists('nombre',$seccion)) {
$this->_nombre = $seccion['nombre'];
}
if (array_key_exists('imagenComun' ,$seccion))
$imgComun =$seccion['imagenComun'];
else
unset($imgComun);
if (array_key_exists('imagenMouseOn',$seccion))
$imgMouseOn=$seccion['imagenMouseOn'];
else
unset($imgMouseOn);
if (array_key_exists('imagenSelect' ,$seccion))
$imgSelect =$seccion['imagenSelect'];
else
unset($imgSelect);
$this->_imagen = new ImagenAnimada($imgComun,$imgMouseOn,$imgSelect);
if (array_key_exists('tipoMenu',$seccion)) {
$this->_tipoMenu = $seccion['tipoMenu'];
}
if (!is_null($directorio)) {
$this->_directorio = $directorio;
}
if (array_key_exists('link',$seccion)) {
parent::Pagina($seccion['link']);
}
if (array_key_exists('hijos',$seccion)) {
$this->_cargarHijos($seccion['hijos']);
}
}
// -X2C
// +X2C Operation 64
/**
* 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) // ~X2C
{
if (isset($_SESSION['deshabilitar_links']) && $_SESSION['deshabilitar_links']) {
$link_start = '';
$link_end = '';
$link_start2 = '';
}
else {
$link_start = '';
$link_start2 = '_nombre.'\',\'\',\''.$this->_imagen->_imgMouseOn.'\',1)>';
$link_end = '';
}
if ($this->verifSeccionSeleccionada($link_sel)) {
$sec = $link_start."_nombre."\" src=\"".$this->_imagen->_imgSelect."\" border=\"0\" alt=\"".$this->_imagen->_alt."\">".$link_end;
}
else {
$sec = $link_start2."_nombre."\" src=\"".$this->_imagen->_imgComun."\" border=\"0\" alt=\"".$this->_imagen->_alt."\">".$link_end;
}
return $sec;
}
// -X2C
// +X2C Operation 84
/**
* 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) // ~X2C
{
if ($this->_tipoMenu == 'vertical'){
$tmp = new MenuVertical($this->_directorio);
}
elseif ($this->_tipoMenu == 'horizontal') {
$tmp = new MenuHorizontal($this->_directorio);
}
else {
$tmp = new MenuOculto($this->_directorio);
}
foreach ($hijos as $hijo) {
$tmp->agregarComponente($hijo);
}
$this->_hijos = $tmp;
}
// -X2C
// +X2C Operation 127
/**
* Funcion que se encarga de desserializar el array asociativo paginas-secciones.
*
* @return void
*
* @access private
*/
function _desSerializarArraySecciones() // ~X2C
{
$tmp = PRE_DIR.$this->_directorio.POST_DIR.ARRAYSECCIONES_SERIALIZADO;
if (file_exists($tmp)) {
$s = implode("", @file($tmp));
return unserialize($s);
}
else {
return null;
}
}
// -X2C
// +X2C Operation 129
/**
* 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) // ~X2C
{
$tmp = $this->_desSerializarArraySecciones();
$retorno = 0;
if (isset($tmp) && array_key_exists($this->_nombre,$tmp)) {
foreach ($tmp[$this->_nombre] as $t) {
if ($link_sel == $t) {
$retorno = 1;
}
}
}
return $retorno;
}
// -X2C
// +X2C Operation 202
/**
*
* @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) // ~X2C
{
$style = "text-decoration:none";
if (isset($_SESSION['deshabilitar_links']) && $_SESSION['deshabilitar_links']) {
$link_start = '';
$link_end = '';
}
else {
$link_start = '';
$link_end = '';
}
$sec = array ();
if ($this->verifSeccionSeleccionada($link_sel)) {
if ($ultimo) {
$sec[] = $link_start.''.$link_end;
}
else {
$sec[] = $link_start.''.$link_end;
}
}
else {
if ($ultimo) {
$sec[] = $link_start.''.$link_end;
}
else {
$sec[] = $link_start.''.$link_end;
}
}
$sec[] = ''.$link_start.' '.$this->_nombre.$link_end.'';
return $sec;
}
// -X2C
} // -X2C Class :Seccion
?>