]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
Se arreglan bugs reportados por Myrna.
[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', 'general_script.js'  );
47 define ('ESTILO_GENERICO', 'general_estilos.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     }
123     // -X2C
124
125     // +X2C Operation 32
126     /**
127      * Funcion que se encarga de la obtencion y generacion del array de configuracion. Recibe como parametro el path del archivo de configuracion
128      *
129      * @param  string $archivo Archivo de configuracion del sistema
130      *
131      * @return array
132      * @access private
133      */
134     function _obtenerConfiguracion($archivo) // ~X2C
135     {
136         $this->_configuracion = include $archivo;    
137         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
138         if (!@$this->_configuracion['directorios']['root']) {
139             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
140         }
141         if (!@$this->_configuracion['directorios']['imagenes']){
142             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
143         }
144         if (!@$this->_configuracion['directorios']['estilos']){
145             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
146         }
147         if (!@$this->_configuracion['directorios']['js']){
148             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
149         }        
150         if (!@$this->_configuracion['directorios']['www']){
151             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
152         }        
153         if (!@$this->_configuracion['directorios_fs']['cache']){
154             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
155         }         
156     }
157     // -X2C
158
159
160     // +X2C Operation 97
161     /**
162      * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
163 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
164      *
165      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
166      *
167      * @return void
168      * @access public
169      */
170     function addBody($body) // ~X2C
171     {
172         if ((is_object($body)) && (method_exists($body, 'getcss'))) {
173             $this->addStyleSheet($body->getCSS());
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->setTitle($this->_configuracion['titulo_sistema'].' - '.$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         //Agrego la opcion seleccionada de links a la configuracion 
252         $this->_configuracion['links']    = $this->_links;
253         //Agrego la opcion seleccionada de espacios a la configuracion 
254         $this->_configuracion['espacios'] = $this->_espacios;
255         //Creo el menu principal
256         $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
257         //Agrego el contenido de la pagina
258         $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
259                                   //Page
260         //Agrego el contenido al menu
261         $menu->addBody($body);       
262         //Agrego el Marco completo a Page
263         $this->setBody($menu->toHtml());
264         return parent::toHTML();
265     }
266     // -X2C
267
268 } // -X2C Class :MECON_Marco
269
270 ?>