]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
Se borra tag de xmi2code.
[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 // +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 MECON_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::MECON_HTML_Page();
106         //Obtengo y arreglo la configuracion
107         $this->_obtenerConfiguracion($arch_configuracion);
108         //Agrego el objeto permiso a la configuracion
109         if (@$obj_permiso) {
110             $this->_configuracion['obj_permiso'] = $obj_permiso;    
111         }
112         //Agrego el estilo y el script genericos
113         $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
114         $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
115         //Seteo el titulo
116         $this->setTitle($this->_configuracion['titulo_sistema']);
117         $this->_configuracion['subtitulo'] = '';
118         $this->_configuracion['titulo_sistema2'] = '';
119     }
120     // -X2C
121
122     // +X2C Operation 32
123     /**
124      * Funcion que se encarga de la obtencion y generacion del array de configuracion. Recibe como parametro el path del archivo de configuracion
125      *
126      * @param  string $archivo Archivo de configuracion del sistema
127      *
128      * @return array
129      * @access private
130      */
131     function _obtenerConfiguracion($archivo) // ~X2C
132     {
133         $this->_configuracion = include $archivo;    
134         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
135         if (!@$this->_configuracion['directorios']['root']) {
136             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
137         }
138         if (!@$this->_configuracion['directorios']['imagenes']){
139             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
140         }
141         if (!@$this->_configuracion['directorios']['estilos']){
142             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
143         }
144         if (!@$this->_configuracion['directorios']['js']){
145             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
146         }        
147         if (!@$this->_configuracion['directorios']['www']){
148             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
149         }        
150         if (!@$this->_configuracion['directorios_fs']['cache']){
151             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
152         }         
153     }
154     // -X2C
155
156
157     // +X2C Operation 97
158     /**
159      * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
160 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
161 @deprecated
162      *
163      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
164      *
165      * @return void
166      * @access public
167      */
168     function addBody($body) // ~X2C
169     {
170         $this->addBodyContent($body);
171     }
172     // -X2C
173
174     // +X2C Operation 124
175     /**
176      * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
177      *
178      * @param  string $titulo String que se quiere agregar al titulo del sistema
179      *
180      * @return void
181      * @access public
182      */
183     function addTitle($titulo) // ~X2C
184     {
185         $this->_configuracion['titulo_sistema2'].= ' - '.$titulo;
186     }
187     // -X2C
188
189     // +X2C Operation 207
190     /**
191      * Setea la variable que define si hay que separar el body del menu
192      *
193      * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
194      *
195      * @return void
196      * @access public
197      */
198     function setEspacios($espacios = true) // ~X2C
199     {
200         $this->_espacios = $espacios;
201     }
202     // -X2C
203
204     // +X2C Operation 214
205     /**
206      * Agrega un menu vertical a la izquierda en la pantalla.
207      *
208      * @param  mixed $menuVertical Objeto u Html que representa el menu a mostrar.
209      *
210      * @return void
211      * @access public
212      */
213     function addMenuVertical($menuVertical) // ~X2C
214     {
215         if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
216             $this->addStyleSheet($menuVertical->getCSS());
217         }
218         $this->_menuVertical = $menuVertical;
219     }
220     // -X2C
221
222     // +X2C Operation 218
223     /**
224      * Permite habilitar o deshabilitar los links de una pagina (todos)
225      *
226      * @param  bool $param True habilita los links, False no.
227      *
228      * @return void
229      * @access public
230      */
231     function habilitarLinks($param = true) // ~X2C
232     {
233         $this->_links = $param;
234     }
235     // -X2C
236
237     // +X2C Operation 220
238     /**
239      * Devuelve el html de la pagina
240      *
241      * @return string
242      * @access public
243      */
244     function toHTML() // ~X2C
245     {
246         //Seteo el titulo de la pagina
247         parent::setTitle($this->_configuracion['titulo_sistema'].$this->_configuracion['titulo_sistema2']);
248         //Agrego la opcion seleccionada de links a la configuracion 
249         $this->_configuracion['links']    = $this->_links;
250         //Agrego la opcion seleccionada de espacios a la configuracion 
251         $this->_configuracion['espacios'] = $this->_espacios;
252         //Creo el menu principal
253         $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
254         //Agrego el contenido de la pagina
255         $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
256                                   //Page
257         //Agrego el contenido al menu
258         $menu->addBody($body);       
259         //Agrego el Marco completo a Page
260         $this->setBody($menu->toHtml());
261         return parent::toHTML();
262     }
263     // -X2C
264
265     // +X2C Operation 224
266     /**
267      * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
268      *
269      * @param  string $subtitulo Subtitulo a agregar
270      *
271      * @return void
272      * @access public
273      */
274     function addSubTitle($subtitulo) // ~X2C
275     {
276         if (is_a($subtitulo, 'mecon_html_link')) {
277             $subtitulo->updateAttributes(
278                 array('class' => 'mecon_marco_subtitle'));
279         }
280         if (method_exists($subtitulo, 'tohtml')) {
281             $subtitulo = $subtitulo->toHtml();
282         }
283         $this->_configuracion['subtitulo'] .= ' - ' . $subtitulo;
284     }
285     // -X2C
286
287     // +X2C Operation 225
288     /**
289      * Concatena lo pasado por parametro al titulo del sistema
290      *
291      * @param  string $titulo Titulo a agregar. Si se pasa vacio se borra lo que pudiera estar
292      *
293      * @return void
294      * @access public
295      */
296     function setTitle($titulo = '') // ~X2C
297     {
298         $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo :
299             '';
300     }
301     // -X2C
302
303     // +X2C Operation 226
304     /**
305      * Concatena lo pasado por parametro al titulo de seccion
306      *
307      * @param  string $subtitulo Setea el subtitulo. Si se pasa vacio borra lo que pudiera estar.
308      *
309      * @return void
310      * @access public
311      */
312     function setSubtitle($subtitulo = '') // ~X2C
313     {
314         $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo :
315             '';
316     }
317     // -X2C
318
319     // +X2C Operation 243
320     /**
321      * Permite hacer que en el copete aparezca un icono de ayuda, en un lugar predefinido. Sobreescribe lo seteado anteriormente por cualquier metodo.
322      *
323      * @param  mixed $ayuda Objeto MECON_HTML_Link o string para utilizar en el map.
324      *
325      * @return void
326      * @access public
327      */
328     function setAyuda($ayuda) // ~X2C
329     {
330         $this->_configuracion['ayuda'] = $ayuda;
331     }
332     // -X2C
333
334     // +X2C Operation 277
335     /**
336      * 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.
337      *
338      * @param  string $clave Clave del array de configuracion a obtener.
339      *
340      * @return mixed
341      * @access public
342      */
343     function getConf($clave = null) // ~X2C
344     {
345         if ($clave) {
346             return @$this->_configuracion[$clave];
347         }
348         else {
349             return $this->_configuracion;
350         }
351     }
352     // -X2C
353
354 } // -X2C Class :MECON_Marco
355
356 ?>