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: Thu May 15 18:36:01 2003
21 Autor: Martin Marrese <mmarre@mecon.gov.ar>
22 -------------------------------------------------------------------------------
24 -----------------------------------------------------------------------------*/
26 require_once 'HTML/Table.php';
27 require_once 'MLIB/HTML/Image.php';
28 require_once 'MLIB/Marco/MenuHorizontal.php';
32 * Clase que se encarga del manejo del menu principal. Este menu es el de secciones general del sistema.
36 class MLIB_Marco_MenuPrincipal extends MLIB_Marco_MenuHorizontal {
38 * Contiene el objeto seccion que se encuentra seleccionada. Se utiliza para mostrar el menu.
40 * @var Seccion $seccionSeleccionada
43 var $_seccionSeleccionada = null;
46 * @param array $configuracion Configuracion del sistema
51 function MLIB_Marco_MenuPrincipal($configuracion)
53 parent::MLIB_Marco_Menu($configuracion);
55 if (!is_null($configuracion['secciones'] || $configuracion['secciones'] == '')) {
56 $this->_armarArraySecciones($this->_obtenerConfSecciones());
57 //Serializo el array asociativo de paginas-secciones
58 // if (!file_exists($this->_configuracion['directorios']['root'].'/'.ARRAYSECCIONES_SERIALIZADO)) {
59 $this->_serializarArraySecciones();
66 * Funcion que se encarga de agregar el body a la seccion seleccionada
73 function addBody($body)
75 //ARMO EL MENU PRINCIPAL
76 $colspan = count($this->_componentes);
78 $copete =& new MLIB_Marco_Copete
79 (@$this->_configuracion['directorios']['imagenes'],
80 @$this->_configuracion['ayuda'],
81 @$this->_configuracion['titulo_sistema']
83 $tmp = $this->_tabla->addRow(array($copete->toHtml()),
84 'align="center" bgcolor="#FFFFFF"');
85 $this->_tabla->updateCellAttributes($tmp, 0,
86 'colspan="'. $colspan .'"');
87 //Agrego las secciones
88 $tmp = $this->_tabla->addRow($this->_componentes,
89 'align="center" bgcolor="#CCCCCC"');
90 $width = intval (100 / $colspan);
91 for ($col=0; $col < $colspan; $col++) {
92 $this->_tabla->updateCellAttributes($tmp, $col,
93 'width="'.$width.'%"');
95 //Agrego la linea de separacion
96 $tmp = $this->_tabla->addRow(array(new MLIB_HTML_Image(
97 '/MLIB/images/general_linea.gif', str_repeat('=', 108)
98 )),'align="center" height="1"');
99 $this->_tabla->updateCellAttributes($tmp, 0, 'colspan="'.$colspan.'"');
101 //BUSCO LA SECCION SELECCIONADA
102 foreach ($this->_secciones as $sec) {
103 if ($sec->verifSeccionSeleccionada($_SERVER['PHP_SELF']))
105 $this->_seccionSeleccionada = $sec;
106 break; //Salgo del foreach
110 //IMPORTANTE: ACA EMPIEZO A ACTUAR DIFERENTE SEGUN EL ESTILO DE MENU QUE
113 //VOY POR LAS SUBSECCIONES, AGREGO EL MENU SI CORRESPONDE
114 if (isset($this->_seccionSeleccionada->_hijos)) {
115 $this->resultado[] = $this->_tabla;
116 $this->_seccionSeleccionada->_hijos->addBody(
118 $this->_seccionSeleccionada->_nombre,
119 $body['menuVertical']
121 foreach ($this->_seccionSeleccionada->_hijos->resultado AS $res) {
122 $this->resultado[] = $res;
126 //NO HAY MENUES DE MARCO
127 //Agrego el encabezado
128 if ($this->_seccionSeleccionada) {
129 $this->_tabla->addRow(
131 $this->_armarEncabezado($this->_seccionSeleccionada->_nombre.
132 $this->_configuracion['subtitulo'])
133 ),'align="left" bgcolor="#FFFFFF" colspan="'.
135 $this->_tabla->addRow(array(
136 new MLIB_HTML_Image('/MLIB/images/general_linea2.gif',
137 str_repeat('-', 108))),
138 'border="0" align="center" colspan="'. $colspan .'"');
140 $this->resultado[] = $this->_tabla;
142 //Si hay un menu vertical lo tengo en cuenta, sino tiro el contenido
144 if ($body['menuVertical']) {
145 $MENUVERTICAL = new HTML_Table ('width="760"');
147 if (is_array($body['body'])) {
148 if ($this->_configuracion['espacios']) {
149 $cuerpo.= ' <BR>';
151 foreach ($body['body'] as $bod) {
152 if (is_object($bod)) {
153 if (method_exists($bod,'toHtml')) {
154 $cuerpo.= $bod->toHtml();
157 trigger_error('El metodo no existe! - '.
158 get_class($bod).'::toHtml()',
168 $cuerpo = $body['body'];
170 $MENUVERTICAL->addRow(array($body['menuVertical'], $cuerpo),
172 $MENUVERTICAL->updateColAttributes(0, 'width="10%"');
173 $this->resultado[] = $MENUVERTICAL;
176 //Agrego si corresponde el espacio al inicio
177 if ($this->_configuracion['espacios']) {
178 $this->resultado[] = ' <BR>';
180 $this->resultado = array_merge($this->resultado, $body['body']);