]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
Se agrega un toString() (porque fue gratis experimentando con una mejor presentacion...
[mecon/meconlib.git] / lib / MECON / Marco.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: Mon Apr 14 16:23:22 2003
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'PEAR.php';
28 require_once 'MECON/Marco/Copete.php';
29 require_once 'MECON/Marco/Titulo.php';
30 require_once 'MECON/Marco/Pie.php';
31 require_once 'MECON/Marco/Menu.php';
32 require_once 'MECON/Marco/MenuPrincipal.php';
33
34 //Agregado para el uso de HTML_Page (Uso la version Original de Pear)
35 require_once 'HTML/Page.php';
36 require_once 'HTML/Table.php';
37
38 //Defino los directorios por default
39 define ('DIR_IMAGENES' , 'images');
40 define ('DIR_ESTILOS'  , 'css');
41 define ('DIR_JS'       , 'js');
42 define ('DIR_WWW'      , 'www');
43 define ('DIR_CACHE'    , '/tmp');
44 //
45 //Defino las constantes
46 define ('SCRIPT_DIR_BASE'  , '/MECON/js/');
47 define ('ESTILO_DIR_BASE'  , '/MECON/css/');
48 define ('SCRIPT_GENERICO'  , 'general_script.js');
49 define ('ESTILO_GENERICO'  , 'general_estilos.css');
50 //
51
52 // +X2C Class 3 :Marco
53 /**
54  * Clase que se encarga del manejo del marco en general en los sistemas de intranet.
55 Trabaja de forma general, llamando a los demas objetos para la realizacion del marco.
56  *
57  * @package MECON
58  * @access public
59  */
60 class Marco extends HTML_Page {
61     /**
62      * Array con los datos de configuracion del sistema.
63      *
64      * @var    array $configuracion
65      * @access private
66      */
67     var $_configuracion;
68
69     /**
70      * Referencia al objeto Titulo.
71      *
72      * @var    Titulo $titulo
73      * @access private
74      */
75     var $_titulo;
76
77     /**
78      * Titulo que quiere agregar el usuario al titulo del sistema
79      *
80      * @var    string $titulo2
81      * @access private
82      */
83     var $_titulo2;
84
85     /**
86      * Referencia al objeto Copete.
87      *
88      * @var    Copete $copete
89      * @access private
90      */
91     var $_copete;
92
93     /**
94      * Referencia al objeto Menu.
95      *
96      * @var    Menu $menu
97      * @access private
98      */
99     var $_menu;
100
101     /**
102      * Referencia al objeto Pie.
103      *
104      * @var    Pie $pie
105      * @access private
106      */
107     var $_pie;
108
109     /**
110      * Html u objetos que se quieren incluir a la pagina
111      *
112      * @var    array $contenido
113      * @access private
114      */
115     var $_contenido;
116
117     /**
118      * Indica si hay que agregar espacios o no entre los componentes del menu de secciones y el contenido de la pagina, asi como entre la pagina y el pie de pagina
119      *
120      * @var    bool $espacios
121      * @access private
122      */
123     var $_espacios;
124
125     /**
126      * Menu vertical para agregar en la pantalla.
127      *
128      * @var    mixed $menuVertical
129      * @access private
130      */
131     var $_menuVertical;
132
133     // ~X2C
134
135     // +X2C Operation 26
136     /**
137      * Constructor. Recibe como parametro el path del archivo de configuracion
138      *
139      * @param  string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
140      *
141      * @return void
142      * @access public
143      */
144     function Marco($arch_configuracion) // ~X2C
145     {
146         parent::HTML_Page(array ('doctype'=>'HTML 4.01 Transitional',
147                                  'charset'  => 'iso-8859-1',
148                                  'lineend'  => 'unix',
149                                  'language' => 'es',
150                                  'cache'    => 'false',
151                                  'simple'   => 'true'));
152         
153         $this->_obtenerConfiguracion($arch_configuracion);
154         
155         $this->_titulo        = new Titulo          ($this->_configuracion['titulo_sistema']);
156         $this->_copete        = new Copete          ($this->_configuracion['directorios']['imagenes']);
157         $this->_menu          = new MenuPrincipal   ($this->_configuracion);
158         $this->_pie           = new Pie             ($this->_configuracion);
159         $this->_contenido     = array ();
160         $this->_espacios      = true;
161         $this->_titulo2 = ''; 
162         $this->_menuVertical = null;
163     }
164     // -X2C
165
166
167
168     // +X2C Operation 30
169     /**
170      * Funcion que permite agregar archivos de script al sistema, ademas del generico.
171      *
172      * @param  string $archivo Nombre del archivo a incluir.
173      *
174      * @return void
175      * @access public
176      */
177     function agregarScript($archivo) // ~X2C
178     {
179         $tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo;
180         $this->addScript($tmp);
181     }
182     // -X2C
183
184     // +X2C Operation 31
185     /**
186      * Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
187      *
188      * @param  string $archivo Nombre del archivo a incluir.
189      *
190      * @return void
191      * @access public
192      */
193     function agregarEstilo($archivo) // ~X2C
194     {
195         $tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo;
196         $this->addStyleSheet($tmp);
197     }
198     // -X2C
199
200     // +X2C Operation 32
201     /**
202      * Funcion que se encarga de la obtencion y generacion del array de configuracion.Recibe como parametro el directorio en donde se encuentra el sistema.
203      *
204      * @param  string $archivo Archivo de configuracion del sistema
205      *
206      * @return array
207      * @access private
208      */
209     function _obtenerConfiguracion($archivo) // ~X2C
210     {
211         $this->_configuracion = include $archivo;    
212         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
213         if (!@$this->_configuracion['directorios']['root']) {
214             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
215         }
216         if (!@$this->_configuracion['directorios']['imagenes']){
217             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
218         }
219         if (!@$this->_configuracion['directorios']['estilos']){
220             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
221         }
222         if (!@$this->_configuracion['directorios']['js']){
223             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
224         }        
225         if (!@$this->_configuracion['directorios']['www']){
226             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
227         }        
228         if (!@$this->_configuracion['directorios_fs']['cache']){
229             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
230         }         
231     }
232     // -X2C
233
234     // +X2C Operation 91
235     /**
236      * Funcion que se encarga mostrar en pantalla el contenido completo de la pagina. Este metodo utiliza la clase HTML_Page, lo que nos permite utilizar solamente clases y nada de hooks.
237      *
238      * @return string
239      * @access public
240      */
241     function display() // ~X2C
242     {
243         //Agrego el header
244         $this->_header_display();
245         //Agrego el body
246         $this->_body_display();
247
248         $_SESSION['deshabilitar_links'] = null;
249
250         // MUESTRO EN PANTALLA LA PAGINA        
251         parent::display();
252     }
253     // -X2C
254
255     // +X2C Operation 97
256     /**
257      * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
258      *
259      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
260      *
261      * @return void
262      * @access public
263      */
264     function addBody($body) // ~X2C
265     {
266         $this->_contenido[] = $body;
267     }
268     // -X2C
269
270     // +X2C Operation 112
271     /**
272      * Funcion que se encarga de agregar a la pagina el contenido del header
273      *
274      * @return void
275      * @access private
276      */
277     function _header_display() // ~X2C
278     {
279         $tmp = $this->_titulo->darTitulo().$this->_titulo2;
280         $this->setTitle($tmp);
281         $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
282         $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
283     }
284     // -X2C
285
286     // +X2C Operation 113
287     /**
288      * Funcion que se encarga de agregar a la pagina el contenido del body
289      *
290      * @return void
291      * @access private
292      */
293     function _body_display() // ~X2C
294     {
295         $body = array ( 'copete'       => $this->_copete->toHtml(),
296                         'espacios'     => $this->_espacios,
297                         'body'         => $this->_contenido,
298                         'menuVertical' => $this->_menuVertical,
299                         'pie'          => $this->_pie->toHtml(),
300                       );
301         $this->_menu->addBody($body);        
302         $this->addBodyContent($this->_menu->toHtml());
303     }
304     // -X2C
305
306     // +X2C Operation 124
307     /**
308      * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
309      *
310      * @param  string $titulo Titulo de la pagina.
311      *
312      * @return void
313      * @access public
314      */
315     function addTitle($titulo) // ~X2C
316     {
317         $this->_titulo2.= ' - '.$titulo;
318     }
319     // -X2C
320
321     // +X2C Operation 207
322     /**
323      * Setea los espacios entre el menu principal el body y el pie de las paginas
324      *
325      * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
326      *
327      * @return void
328      * @access public
329      */
330     function setEspacios($espacios = true) // ~X2C
331     {
332         $this->_espacios = $espacios;
333     }
334     // -X2C
335
336     // +X2C Operation 214
337     /**
338      * Agrega un menu vertical a la izquierda en la pantalla. Por ahora solo funciona con MenuOculto
339      *
340      * @param  mixed $menuVertical Objeto u Html que representa el menu a mostrar.
341      *
342      * @return void
343      * @access public
344      */
345     function addMenuVertical($menuVertical) // ~X2C
346     {
347         $this->_menuVertical = $menuVertical;
348     }
349     // -X2C
350
351 } // -X2C Class :Marco
352
353 ?>