------------------------------------------------------------------------------- $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']); } } } } ?>