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