]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
Se arregla un error en un sql de Mecon_Dependencia.
[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 'MECON/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  * Clase encargada del manejo del Marco de los sistemas.
51  *
52  * @access public
53  */
54 class MECON_Marco extends MECON_HTML_Page {
55     /**
56      * Array con los datos de configuracion del sistema.
57      *
58      * @var    array $configuracion
59      * @access private
60      */
61     var $_configuracion;
62
63     /**
64      * Mantiene el estado de los espacios
65      *
66      * @var    bool $espacios
67      * @access private
68      */
69     var $_espacios = true;
70
71     /**
72      * Menu vertical para agregar en la pantalla.
73      *
74      * @var    mixed $menuVertical
75      * @access private
76      */
77     var $_menuVertical = null;
78
79     /**
80      * Mantiene el estado de los links en la pagina. (True habilitados, False no)
81      *
82      * @var    bool $links
83      * @access private
84      */
85     var $_links = true;
86
87     /**
88      * Constructor. Recibe como parametro el path del archivo de configuracion
89      *
90      * @param  string $arch_configuracion indicacion de la ubicacion y nombre del archivo de configuracion
91      * @param  MECON_Perm $obj_permiso Objeto Permisos
92      *
93      * @return void
94      * @access public
95      */
96     function MECON_Marco($arch_configuracion, $obj_permiso = null) 
97     {
98         //Creo el objeto pagina
99         parent::MECON_HTML_Page();
100         //Obtengo y arreglo la configuracion
101         $this->_obtenerConfiguracion($arch_configuracion);
102         //Agrego el objeto permiso a la configuracion
103         if (@$obj_permiso) {
104             $this->_configuracion['obj_permiso'] = $obj_permiso;    
105         }
106         //Agrego el estilo y el script genericos
107         $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
108         $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
109         //Seteo el titulo
110         $this->setTitle($this->_configuracion['titulo_sistema']);
111         $this->_configuracion['subtitulo'] = '';
112         $this->_configuracion['titulo_sistema2'] = '';
113     }
114
115     /**
116      * Funcion que se encarga de la obtencion y generacion del array de configuracion. Recibe como parametro el path del archivo de configuracion
117      *
118      * @param  string $archivo Archivo de configuracion del sistema
119      *
120      * @return array
121      * @access private
122      */
123     function _obtenerConfiguracion($archivo) 
124     {
125         $this->_configuracion = include $archivo;    
126         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
127         if (!@$this->_configuracion['directorios']['root']) {
128             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
129         }
130         if (!@$this->_configuracion['directorios']['imagenes']){
131             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
132         }
133         if (!@$this->_configuracion['directorios']['estilos']){
134             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
135         }
136         if (!@$this->_configuracion['directorios']['js']){
137             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
138         }        
139         if (!@$this->_configuracion['directorios']['www']){
140             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
141         }        
142         if (!@$this->_configuracion['directorios_fs']['cache']){
143             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
144         }         
145     }
146
147     /**
148      * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
149 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
150 @deprecated
151      *
152      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
153      *
154      * @return void
155      * @access public
156      */
157     function addBody($body) 
158     {
159         $this->addBodyContent($body);
160     }
161
162     /**
163      * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
164      *
165      * @param  string $titulo String que se quiere agregar al titulo del sistema
166      *
167      * @return void
168      * @access public
169      */
170     function addTitle($titulo) 
171     {
172         $this->_configuracion['titulo_sistema2'].= ' - '.$titulo;
173     }
174
175     /**
176      * Setea la variable que define si hay que separar el body del menu
177      *
178      * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
179      *
180      * @return void
181      * @access public
182      */
183     function setEspacios($espacios = true) 
184     {
185         $this->_espacios = $espacios;
186     }
187
188     /**
189      * Agrega un menu vertical a la izquierda en la pantalla.
190      *
191      * @param  mixed $menuVertical Objeto u Html que representa el menu a mostrar.
192      *
193      * @return void
194      * @access public
195      */
196     function addMenuVertical($menuVertical) 
197     {
198         if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
199             $this->addStyleSheet($menuVertical->getCSS());
200         }
201         $this->_menuVertical = $menuVertical;
202     }
203
204     /**
205      * Permite habilitar o deshabilitar los links de una pagina (todos)
206      *
207      * @param  bool $param True habilita los links, False no.
208      *
209      * @return void
210      * @access public
211      */
212     function habilitarLinks($param = true) 
213     {
214         $this->_links = $param;
215     }
216
217     /**
218      * Devuelve el html de la pagina
219      *
220      * @return string
221      * @access public
222      */
223     function toHTML() 
224     {
225         //Seteo el titulo de la pagina
226         parent::setTitle($this->_configuracion['titulo_sistema'].$this->_configuracion['titulo_sistema2']);
227         //Agrego la opcion seleccionada de links a la configuracion 
228         $this->_configuracion['links']    = $this->_links;
229         //Agrego la opcion seleccionada de espacios a la configuracion 
230         $this->_configuracion['espacios'] = $this->_espacios;
231         //Creo el menu principal
232         $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
233         //Agrego el contenido de la pagina
234         $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
235                                   //Page
236         //Agrego el contenido al menu
237         $menu->addBody($body);       
238         //Agrego el Marco completo a Page
239         $this->setBody($menu->toHtml());
240         return parent::toHTML();
241     }
242
243     /**
244      * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
245      *
246      * @param  string $subtitulo Subtitulo a agregar
247      *
248      * @return void
249      * @access public
250      */
251     function addSubTitle($subtitulo) 
252     {
253         if (is_a($subtitulo, 'mecon_html_link')) {
254             $subtitulo->updateAttributes(
255                 array('class' => 'mecon_marco_subtitle'));
256         }
257         if (method_exists($subtitulo, 'tohtml')) {
258             $subtitulo = $subtitulo->toHtml();
259         }
260         $this->_configuracion['subtitulo'] .= ' - ' . $subtitulo;
261     }
262
263     /**
264      * Concatena lo pasado por parametro al titulo del sistema
265      *
266      * @param  string $titulo Titulo a agregar. Si se pasa vacio se borra lo que pudiera estar
267      *
268      * @return void
269      * @access public
270      */
271     function setTitle($titulo = '') 
272     {
273         $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo :
274             '';
275     }
276
277     /**
278      * Concatena lo pasado por parametro al titulo de seccion
279      *
280      * @param  string $subtitulo Setea el subtitulo. Si se pasa vacio borra lo que pudiera estar.
281      *
282      * @return void
283      * @access public
284      */
285     function setSubtitle($subtitulo = '') 
286     {
287         $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo :
288             '';
289     }
290
291     /**
292      * Permite hacer que en el copete aparezca un icono de ayuda, en un lugar predefinido. Sobreescribe lo seteado anteriormente por cualquier metodo.
293      *
294      * @param  mixed $ayuda Objeto MECON_HTML_Link o string para utilizar en el map.
295      *
296      * @return void
297      * @access public
298      */
299     function setAyuda($ayuda) 
300     {
301         $this->_configuracion['ayuda'] = $ayuda;
302     }
303
304     /**
305      * 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.
306      *
307      * @param  string $clave Clave del array de configuracion a obtener.
308      *
309      * @return mixed
310      * @access public
311      */
312     function getConf($clave = null) 
313     {
314         if ($clave) {
315             return @$this->_configuracion[$clave];
316         }
317         else {
318             return $this->_configuracion;
319         }
320     }
321 }
322 ?>