]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MLIB/Marco/MenuPrincipal.php
Se agrega la clase dummy MLIB_Tpl. Esta clase va con la licencia LGPL aunque
[mecon/meconlib.git] / lib / MLIB / Marco / MenuPrincipal.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: Thu May 15 18:36:01 2003
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'HTML/Table.php';
28 require_once 'MECON/HTML/Image.php';
29 require_once 'MECON/Marco/MenuHorizontal.php';
30
31
32 /**
33  * Clase que se encarga del manejo del menu principal. Este menu es el de secciones general del sistema.
34  *
35  * @access public
36  */
37 class MECON_Marco_MenuPrincipal extends MECON_Marco_MenuHorizontal {
38     /**
39      * Contiene el objeto seccion que se encuentra seleccionada. Se utiliza para mostrar el menu.
40      *
41      * @var    Seccion $seccionSeleccionada
42      * @access private
43      */
44     var $_seccionSeleccionada = null;
45     
46     /**
47      * @param  array $configuracion Configuracion del sistema
48      *
49      * @return void
50      * @access public
51      */
52     function MECON_Marco_MenuPrincipal($configuracion) 
53     {
54         parent::MECON_Marco_Menu($configuracion);
55
56         if (!is_null($configuracion['secciones'] || $configuracion['secciones'] == '')) {
57             $this->_armarArraySecciones($this->_obtenerConfSecciones());
58             //Serializo el array asociativo de paginas-secciones
59 //                if (!file_exists($this->_configuracion['directorios']['root'].'/'.ARRAYSECCIONES_SERIALIZADO)) {
60                     $this->_serializarArraySecciones();                
61 //                }
62         }
63         
64     }
65
66     /**
67      * Funcion que se encarga de agregar el body a la seccion seleccionada
68      *
69      * @param  array $body 
70      *
71      * @return void
72      * @access public
73      */
74     function addBody($body) 
75     {
76         //ARMO EL MENU PRINCIPAL
77         $colspan = count($this->_componentes);
78         //Agrego el copete
79         $copete =& new MECON_Marco_Copete 
80             (@$this->_configuracion['directorios']['imagenes'],
81              @$this->_configuracion['ayuda'], 
82              @$this->_configuracion['titulo_sistema']
83              );
84         $tmp = $this->_tabla->addRow(array($copete->toHtml()), 
85                 'align="center" bgcolor="#FFFFFF"');
86         $this->_tabla->updateCellAttributes($tmp, 0, 
87                 'colspan="'. $colspan .'"');
88         //Agrego las secciones
89         $tmp = $this->_tabla->addRow($this->_componentes, 
90                 'align="center" bgcolor="#CCCCCC"');
91         $width = intval (100 / $colspan);
92         for ($col=0; $col < $colspan; $col++) {
93             $this->_tabla->updateCellAttributes($tmp, $col,
94                     'width="'.$width.'%"');
95         }
96         //Agrego la linea de separacion
97         $tmp = $this->_tabla->addRow(array(new MECON_HTML_Image(
98                         '/MECON/images/general_linea.gif', str_repeat('=', 108)
99                         )),'align="center" height="1"');
100         $this->_tabla->updateCellAttributes($tmp, 0, 'colspan="'.$colspan.'"');
101
102         //BUSCO LA SECCION SELECCIONADA
103         foreach ($this->_secciones as $sec) { 
104             if ($sec->verifSeccionSeleccionada($_SERVER['PHP_SELF']))
105             {                                                                          
106                 $this->_seccionSeleccionada = $sec;
107                 break; //Salgo del foreach
108             }
109         }
110
111         //IMPORTANTE: ACA EMPIEZO A ACTUAR DIFERENTE SEGUN EL ESTILO DE MENU QUE
112         //SE SELECCIONE
113
114         //VOY POR LAS SUBSECCIONES, AGREGO EL MENU SI CORRESPONDE
115         if (isset($this->_seccionSeleccionada->_hijos)) {
116             $this->resultado[] = $this->_tabla;
117             $this->_seccionSeleccionada->_hijos->addBody(
118                     $body['body'],
119                     $this->_seccionSeleccionada->_nombre, 
120                     $body['menuVertical']
121                     );
122             foreach ($this->_seccionSeleccionada->_hijos->resultado AS $res) {
123                 $this->resultado[] = $res;
124             }
125         }
126         else {
127         //NO HAY MENUES DE MARCO
128             //Agrego el encabezado
129             if ($this->_seccionSeleccionada) {
130                 $this->_tabla->addRow(
131                         array(
132                             $this->_armarEncabezado($this->_seccionSeleccionada->_nombre.
133                                 $this->_configuracion['subtitulo'])
134                             ),'align="left" bgcolor="#FFFFFF" colspan="'. 
135                         $colspan .'"');
136                 $this->_tabla->addRow(array(
137                             new MECON_HTML_Image('/MECON/images/general_linea2.gif',
138                                 str_repeat('-', 108))),
139                         'border="0" align="center" colspan="'. $colspan .'"');
140             }
141             $this->resultado[] = $this->_tabla;
142             
143             //Si hay un menu vertical lo tengo en cuenta, sino tiro el contenido
144             //directamente
145             if ($body['menuVertical']) {
146                 $MENUVERTICAL = new HTML_Table ('width="760"');
147                 $cuerpo = '';
148                 if (is_array($body['body'])) {
149                     if ($this->_configuracion['espacios']) {
150                         $cuerpo.= '&nbsp;<BR>';
151                     }
152                     foreach ($body['body'] as $bod) {
153                         if (is_object($bod)) {
154                             if (method_exists($bod,'toHtml')) {
155                                 $cuerpo.= $bod->toHtml();
156                             } 
157                             else {
158                                 trigger_error('El metodo no existe! - '. 
159                                         get_class($bod).'::toHtml()', 
160                                         E_USER_WARNING);
161                             }
162                         } 
163                         else {
164                             $cuerpo.= $bod;
165                         }
166                     }
167                 } 
168                 else {
169                     $cuerpo = $body['body'];
170                 }
171                 $MENUVERTICAL->addRow(array($body['menuVertical'], $cuerpo),
172                         'valign="top"');
173                 $MENUVERTICAL->updateColAttributes(0, 'width="10%"');
174                 $this->resultado[] = $MENUVERTICAL;
175             }
176             else {
177                 //Agrego si corresponde el espacio al inicio
178                 if ($this->_configuracion['espacios']) {
179                     $this->resultado[] = '&nbsp;<BR>';
180                 }
181                 $this->resultado = array_merge($this->resultado, $body['body']);
182             }
183         }
184     }
185 }
186 ?>