]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
Se ponen bien los ALT.
[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/Menu.php';
30 require_once 'MECON/Marco/MenuPrincipal.php';
31
32 //Agregado para el uso de HTML_Page (Uso la version Original de Pear)
33 require_once 'HTML/Page.php';
34 require_once 'HTML/Table.php';
35
36 //Defino los directorios por default
37 define ('DIR_IMAGENES', 'images');
38 define ('DIR_ESTILOS' , 'css'   );
39 define ('DIR_JS'      , 'js'    );
40 define ('DIR_WWW'     , 'www'   );
41 define ('DIR_CACHE'   , '/tmp'  );
42 //
43 //Defino las constantes
44 define ('SCRIPT_DIR_BASE', '/MECON/js/' );
45 define ('ESTILO_DIR_BASE', '/MECON/css/');
46 define ('SCRIPT_GENERICO', 'marco.js'   );
47 define ('ESTILO_GENERICO', 'marco.css'  );
48 //
49
50 // +X2C Class 3 :MECON_Marco
51 /**
52  * Clase encargada del manejo del Marco de los sistemas.
53  *
54  * @package MECON
55  * @access public
56  */
57 class MECON_Marco extends HTML_Page {
58     /**
59      * Array con los datos de configuracion del sistema.
60      *
61      * @var    array $configuracion
62      * @access private
63      */
64     var $_configuracion;
65
66     /**
67      * Mantiene el estado de los espacios
68      *
69      * @var    bool $espacios
70      * @access private
71      */
72     var $_espacios = true;
73
74     /**
75      * Menu vertical para agregar en la pantalla.
76      *
77      * @var    mixed $menuVertical
78      * @access private
79      */
80     var $_menuVertical = null;
81
82     /**
83      * Mantiene el estado de los links en la pagina. (True habilitados, False no)
84      *
85      * @var    bool $links
86      * @access private
87      */
88     var $_links = true;
89
90     // ~X2C
91
92     // +X2C Operation 26
93     /**
94      * Constructor. Recibe como parametro el path del archivo de configuracion
95      *
96      * @param  string $arch_configuracion indicacion de la ubicacion y nombre del archivo de configuracion
97      * @param  MECON_Perm $obj_permiso Objeto Permisos
98      *
99      * @return void
100      * @access public
101      */
102     function MECON_Marco($arch_configuracion, $obj_permiso = null) // ~X2C
103     {
104         //Creo el objeto pagina
105         parent::HTML_Page(array ('doctype'  => 'HTML 4.01 Transitional',
106                                  'charset'  => 'iso-8859-1'            ,
107                                  'lineend'  => 'unix'                  ,
108                                  'language' => 'es'                    ,
109                                  'cache'    => 'false'                 ,
110                                  'simple'   => 'true'                  ));
111         //Obtengo y arreglo la configuracion
112         $this->_obtenerConfiguracion($arch_configuracion);
113         //Agrego el objeto permiso a la configuracion
114         if (@$obj_permiso) {
115             $this->_configuracion['obj_permiso'] = $obj_permiso;    
116         }
117         //Agrego el estilo y el script genericos
118         $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
119         $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
120         //Seteo el titulo
121         $this->setTitle($this->_configuracion['titulo_sistema']);
122         $this->_configuracion['subtitulo'] = '';
123         $this->_configuracion['titulo_sistema2'] = '';
124     }
125     // -X2C
126
127     // +X2C Operation 32
128     /**
129      * Funcion que se encarga de la obtencion y generacion del array de configuracion. Recibe como parametro el path del archivo de configuracion
130      *
131      * @param  string $archivo Archivo de configuracion del sistema
132      *
133      * @return array
134      * @access private
135      */
136     function _obtenerConfiguracion($archivo) // ~X2C
137     {
138         $this->_configuracion = include $archivo;    
139         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
140         if (!@$this->_configuracion['directorios']['root']) {
141             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
142         }
143         if (!@$this->_configuracion['directorios']['imagenes']){
144             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
145         }
146         if (!@$this->_configuracion['directorios']['estilos']){
147             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
148         }
149         if (!@$this->_configuracion['directorios']['js']){
150             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
151         }        
152         if (!@$this->_configuracion['directorios']['www']){
153             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
154         }        
155         if (!@$this->_configuracion['directorios_fs']['cache']){
156             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
157         }         
158     }
159     // -X2C
160
161
162     // +X2C Operation 97
163     /**
164      * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
165 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
166 @deprecated
167      *
168      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
169      *
170      * @return void
171      * @access public
172      */
173     function addBody($body) // ~X2C
174     {
175         $this->addBodyContent($body);
176     }
177     // -X2C
178
179     // +X2C Operation 124
180     /**
181      * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
182      *
183      * @param  string $titulo String que se quiere agregar al titulo del sistema
184      *
185      * @return void
186      * @access public
187      */
188     function addTitle($titulo) // ~X2C
189     {
190         $this->_configuracion['titulo_sistema2'].= ' - '.$titulo;
191     }
192     // -X2C
193
194     // +X2C Operation 207
195     /**
196      * Setea la variable que define si hay que separar el body del menu
197      *
198      * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
199      *
200      * @return void
201      * @access public
202      */
203     function setEspacios($espacios = true) // ~X2C
204     {
205         $this->_espacios = $espacios;
206     }
207     // -X2C
208
209     // +X2C Operation 214
210     /**
211      * Agrega un menu vertical a la izquierda en la pantalla.
212      *
213      * @param  mixed $menuVertical Objeto u Html que representa el menu a mostrar.
214      *
215      * @return void
216      * @access public
217      */
218     function addMenuVertical($menuVertical) // ~X2C
219     {
220         if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
221             $this->addStyleSheet($menuVertical->getCSS());
222         }
223         $this->_menuVertical = $menuVertical;
224     }
225     // -X2C
226
227     // +X2C Operation 218
228     /**
229      * Permite habilitar o deshabilitar los links de una pagina (todos)
230      *
231      * @param  bool $param True habilita los links, False no.
232      *
233      * @return void
234      * @access public
235      */
236     function habilitarLinks($param = true) // ~X2C
237     {
238         $this->_links = $param;
239     }
240     // -X2C
241
242     // +X2C Operation 220
243     /**
244      * Devuelve el html de la pagina
245      *
246      * @return string
247      * @access public
248      */
249     function toHTML() // ~X2C
250     {
251         //Seteo el titulo de la pagina
252         parent::setTitle($this->_configuracion['titulo_sistema'].$this->_configuracion['titulo_sistema2']);
253         //Agrego la opcion seleccionada de links a la configuracion 
254         $this->_configuracion['links']    = $this->_links;
255         //Agrego la opcion seleccionada de espacios a la configuracion 
256         $this->_configuracion['espacios'] = $this->_espacios;
257         //Creo el menu principal
258         $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
259         //Agrego el contenido de la pagina
260         $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
261                                   //Page
262         //Agrego el contenido al menu
263         $menu->addBody($body);       
264         //Agrego el Marco completo a Page
265         $this->setBody($menu->toHtml());
266         return parent::toHTML();
267     }
268     // -X2C
269
270     // +X2C Operation 223
271     /**
272      * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
273 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
274      *
275      * @param  mixed $content Contenido a agregar en la pagina
276      *
277      * @return void
278      * @access public
279      */
280     function addBodyContent($content) // ~X2C
281     {
282         if ((is_object($content)) && (method_exists($content, 'getcss'))) {
283             $this->addStyleSheet($content->getCSS());
284         }
285         parent::addBodyContent($content);
286     }
287     // -X2C
288
289     // +X2C Operation 224
290     /**
291      * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
292      *
293      * @param  string $subtitulo Subtitulo a agregar
294      *
295      * @return void
296      * @access public
297      */
298     function addSubTitle($subtitulo) // ~X2C
299     {
300         if (is_a($subtitulo, 'mecon_html_link')) {
301             $subtitulo->updateAttributes(
302                 array('class' => 'mecon_marco_subtitle'));
303         }
304         if (method_exists($subtitulo, 'tohtml')) {
305             $subtitulo = $subtitulo->toHtml();
306         }
307         $this->_configuracion['subtitulo'] .= ' - ' . $subtitulo;
308     }
309     // -X2C
310
311     // +X2C Operation 225
312     /**
313      * Concatena lo pasado por parametro al titulo del sistema
314      *
315      * @param  string $titulo Titulo a agregar. Si se pasa vacio se borra lo que pudiera estar
316      *
317      * @return void
318      * @access public
319      */
320     function setTitle($titulo = '') // ~X2C
321     {
322         $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo :
323             '';
324     }
325     // -X2C
326
327     // +X2C Operation 226
328     /**
329      * Concatena lo pasado por parametro al titulo de seccion
330      *
331      * @param  string $subtitulo Setea el subtitulo. Si se pasa vacio borra lo que pudiera estar.
332      *
333      * @return void
334      * @access public
335      */
336     function setSubtitle($subtitulo = '') // ~X2C
337     {
338         $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo :
339             '';
340     }
341     // -X2C
342
343     // +X2C Operation 243
344     /**
345      * Permite hacer que en el copete aparezca un icono de ayuda, en un lugar predefinido. Sobreescribe lo seteado anteriormente por cualquier metodo.
346      *
347      * @param  mixed $ayuda Objeto MECON_HTML_Link o string para utilizar en el map.
348      *
349      * @return void
350      * @access public
351      */
352     function setAyuda($ayuda) // ~X2C
353     {
354         $this->_configuracion['ayuda'] = $ayuda;
355     }
356     // -X2C
357
358     // +X2C Operation 277
359     /**
360      * Permite obtener el array de configuracion completo. En caso de recibir una clave como parametro devuelve su valor. Solo se tienen en cuenta las claves del primer nivel.
361      *
362      * @param  string $clave Clave del array de configuracion a obtener.
363      *
364      * @return mixed
365      * @access public
366      */
367     function getConf($clave = null) // ~X2C
368     {
369         if ($clave) {
370             return @$this->_configuracion[$clave];
371         }
372         else {
373             return $this->_configuracion;
374         }
375     }
376     // -X2C
377
378 } // -X2C Class :MECON_Marco
379
380 ?>