]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
Se agrego el metodo MECON_Marco::addBodyContent que redefine el metodo de HTML_Page...
[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 @deprecated
165      *
166      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
167      *
168      * @return void
169      * @access public
170      */
171     function addBody($body) // ~X2C
172     {
173         if ((is_object($body)) && (method_exists($body, 'getcss'))) {
174             $this->addStyleSheet($body->getCSS());
175         }
176         $this->addBodyContent($body);
177     }
178     // -X2C
179
180     // +X2C Operation 124
181     /**
182      * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
183      *
184      * @param  string $titulo String que se quiere agregar al titulo del sistema
185      *
186      * @return void
187      * @access public
188      */
189     function addTitle($titulo) // ~X2C
190     {
191         $this->setTitle($this->_configuracion['titulo_sistema'].' - '.$titulo);
192     }
193     // -X2C
194
195     // +X2C Operation 207
196     /**
197      * Setea la variable que define si hay que separar el body del menu
198      *
199      * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
200      *
201      * @return void
202      * @access public
203      */
204     function setEspacios($espacios = true) // ~X2C
205     {
206         $this->_espacios = $espacios;
207     }
208     // -X2C
209
210     // +X2C Operation 214
211     /**
212      * Agrega un menu vertical a la izquierda en la pantalla.
213      *
214      * @param  mixed $menuVertical Objeto u Html que representa el menu a mostrar.
215      *
216      * @return void
217      * @access public
218      */
219     function addMenuVertical($menuVertical) // ~X2C
220     {
221         if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
222             $this->addStyleSheet($menuVertical->getCSS());
223         }
224         $this->_menuVertical = $menuVertical;
225     }
226     // -X2C
227
228     // +X2C Operation 218
229     /**
230      * Permite habilitar o deshabilitar los links de una pagina (todos)
231      *
232      * @param  bool $param True habilita los links, False no.
233      *
234      * @return void
235      * @access public
236      */
237     function habilitarLinks($param = true) // ~X2C
238     {
239         $this->_links = $param;
240     }
241     // -X2C
242
243     // +X2C Operation 220
244     /**
245      * Devuelve el html de la pagina
246      *
247      * @return string
248      * @access public
249      */
250     function toHTML() // ~X2C
251     {
252         //Agrego la opcion seleccionada de links a la configuracion 
253         $this->_configuracion['links']    = $this->_links;
254         //Agrego la opcion seleccionada de espacios a la configuracion 
255         $this->_configuracion['espacios'] = $this->_espacios;
256         //Creo el menu principal
257         $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
258         //Agrego el contenido de la pagina
259         $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
260                                   //Page
261         //Agrego el contenido al menu
262         $menu->addBody($body);       
263         //Agrego el Marco completo a Page
264         $this->setBody($menu->toHtml());
265         return parent::toHTML();
266     }
267     // -X2C
268
269     // +X2C Operation 223
270     /**
271      * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
272 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
273      *
274      * @param  mixed $content Contenido a agregar en la pagina
275      *
276      * @return void
277      * @access public
278      */
279     function addBodyContent($content) // ~X2C
280     {
281         if ((is_object($content)) && (method_exists($content, 'getcss'))) {
282             $this->addStyleSheet($content->getCSS());
283         }
284         parent::addBodyContent($content);
285     }
286     // -X2C
287
288 } // -X2C Class :MECON_Marco
289
290 ?>