-------------------------------------------------------------------------------
$Id$
-----------------------------------------------------------------------------*/
require_once 'HTML/Table.php';
require_once 'MECON/HTML/Image.php';
require_once 'MECON/Marco/MenuHorizontal.php';
/**
* Clase que se encarga del manejo del menu principal. Este menu es el de secciones general del sistema.
*
* @access public
*/
class MECON_Marco_MenuPrincipal extends MECON_Marco_MenuHorizontal {
/**
* Contiene el objeto seccion que se encuentra seleccionada. Se utiliza para mostrar el menu.
*
* @var Seccion $seccionSeleccionada
* @access private
*/
var $_seccionSeleccionada = null;
/**
* @param array $configuracion Configuracion del sistema
*
* @return void
* @access public
*/
function MECON_Marco_MenuPrincipal($configuracion)
{
parent::MECON_Marco_Menu($configuracion);
if (!is_null($configuracion['secciones'] || $configuracion['secciones'] == '')) {
$this->_armarArraySecciones($this->_obtenerConfSecciones());
//Serializo el array asociativo de paginas-secciones
// if (!file_exists($this->_configuracion['directorios']['root'].'/'.ARRAYSECCIONES_SERIALIZADO)) {
$this->_serializarArraySecciones();
// }
}
}
/**
* Funcion que se encarga de agregar el body a la seccion seleccionada
*
* @param array $body
*
* @return void
* @access public
*/
function addBody($body)
{
//ARMO EL MENU PRINCIPAL
$colspan = count($this->_componentes);
//Agrego el copete
$copete =& new MECON_Marco_Copete
(@$this->_configuracion['directorios']['imagenes'],
@$this->_configuracion['ayuda'],
@$this->_configuracion['titulo_sistema']
);
$tmp = $this->_tabla->addRow(array($copete->toHtml()),
'align="center" bgcolor="#FFFFFF"');
$this->_tabla->updateCellAttributes($tmp, 0,
'colspan="'. $colspan .'"');
//Agrego las secciones
$tmp = $this->_tabla->addRow($this->_componentes,
'align="center" bgcolor="#CCCCCC"');
$width = intval (100 / $colspan);
for ($col=0; $col < $colspan; $col++) {
$this->_tabla->updateCellAttributes($tmp, $col,
'width="'.$width.'%"');
}
//Agrego la linea de separacion
$tmp = $this->_tabla->addRow(array(new MECON_HTML_Image(
'/MECON/images/general_linea.gif', str_repeat('=', 108)
)),'align="center" height="1"');
$this->_tabla->updateCellAttributes($tmp, 0, 'colspan="'.$colspan.'"');
//BUSCO LA SECCION SELECCIONADA
foreach ($this->_secciones as $sec) {
if ($sec->verifSeccionSeleccionada($_SERVER['PHP_SELF']))
{
$this->_seccionSeleccionada = $sec;
break; //Salgo del foreach
}
}
//IMPORTANTE: ACA EMPIEZO A ACTUAR DIFERENTE SEGUN EL ESTILO DE MENU QUE
//SE SELECCIONE
//VOY POR LAS SUBSECCIONES, AGREGO EL MENU SI CORRESPONDE
if (isset($this->_seccionSeleccionada->_hijos)) {
$this->resultado[] = $this->_tabla;
$this->_seccionSeleccionada->_hijos->addBody(
$body['body'],
$this->_seccionSeleccionada->_nombre,
$body['menuVertical']
);
foreach ($this->_seccionSeleccionada->_hijos->resultado AS $res) {
$this->resultado[] = $res;
}
}
else {
//NO HAY MENUES DE MARCO
//Agrego el encabezado
if ($this->_seccionSeleccionada) {
$this->_tabla->addRow(
array(
$this->_armarEncabezado($this->_seccionSeleccionada->_nombre.
$this->_configuracion['subtitulo'])
),'align="left" bgcolor="#FFFFFF" colspan="'.
$colspan .'"');
$this->_tabla->addRow(array(
new MECON_HTML_Image('/MECON/images/general_linea2.gif',
str_repeat('-', 108))),
'border="0" align="center" colspan="'. $colspan .'"');
}
$this->resultado[] = $this->_tabla;
//Si hay un menu vertical lo tengo en cuenta, sino tiro el contenido
//directamente
if ($body['menuVertical']) {
$MENUVERTICAL = new HTML_Table ('width="760" align="left"');
$cuerpo = '';
if (is_array($body['body'])) {
if ($this->_configuracion['espacios']) {
$cuerpo.= '
';
}
foreach ($body['body'] as $bod) {
if (is_object($bod)) {
if (method_exists($bod,'toHtml')) {
$cuerpo.= $bod->toHtml();
}
else {
trigger_error('El metodo no existe! - '.
get_class($bod).'::toHtml()',
E_USER_WARNING);
}
}
else {
$cuerpo.= $bod;
}
}
}
else {
$cuerpo = $body['body'];
}
$MENUVERTICAL->addRow(array($body['menuVertical'], $cuerpo),
'valign="top"');
$MENUVERTICAL->updateColAttributes(0, 'width="10%"');
$this->resultado[] = $MENUVERTICAL;
}
else {
//Agrego si corresponde el espacio al inicio
if ($this->_configuracion['espacios']) {
$this->resultado[] = '
';
}
$this->resultado = array_merge($this->resultado, $body['body']);
}
}
}
}
?>