1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3 Ministerio de EconomÃa
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
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)
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.
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 -------------------------------------------------------------------------------
25 -----------------------------------------------------------------------------*/
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';
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';
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' );
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' );
50 // +X2C Class 3 :MECON_Marco
52 * Clase encargada del manejo del Marco de los sistemas.
57 class MECON_Marco extends HTML_Page {
59 * Array con los datos de configuracion del sistema.
61 * @var array $configuracion
67 * Mantiene el estado de los espacios
72 var $_espacios = true;
75 * Menu vertical para agregar en la pantalla.
77 * @var mixed $menuVertical
80 var $_menuVertical = null;
83 * Mantiene el estado de los links en la pagina. (True habilitados, False no)
94 * Constructor. Recibe como parametro el path del archivo de configuracion
96 * @param string $arch_configuracion indicacion de la ubicacion y nombre del archivo de configuracion
97 * @param MECON_Perm $obj_permiso Objeto Permisos
102 function MECON_Marco($arch_configuracion, $obj_permiso = null) // ~X2C
104 //Creo el objeto pagina
105 parent::HTML_Page(array ('doctype' => 'HTML 4.01 Transitional',
106 'charset' => 'iso-8859-1' ,
107 'lineend' => 'unix' ,
110 'simple' => 'true' ));
111 //Obtengo y arreglo la configuracion
112 $this->_obtenerConfiguracion($arch_configuracion);
113 //Agrego el objeto permiso a la configuracion
115 $this->_configuracion['obj_permiso'] = $obj_permiso;
117 //Agrego el estilo y el script genericos
118 $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
119 $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
121 $this->setTitle($this->_configuracion['titulo_sistema']);
122 $this->_configuracion['subtitulo'] = '';
123 $this->_configuracion['titulo_sistema2'] = '';
129 * Funcion que se encarga de la obtencion y generacion del array de configuracion. Recibe como parametro el path del archivo de configuracion
131 * @param string $archivo Archivo de configuracion del sistema
136 function _obtenerConfiguracion($archivo) // ~X2C
138 $this->_configuracion = include $archivo;
139 //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
140 if (!@$this->_configuracion['directorios']['root']) {
141 trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR);
143 if (!@$this->_configuracion['directorios']['imagenes']){
144 $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
146 if (!@$this->_configuracion['directorios']['estilos']){
147 $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
149 if (!@$this->_configuracion['directorios']['js']){
150 $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
152 if (!@$this->_configuracion['directorios']['www']){
153 $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
155 if (!@$this->_configuracion['directorios_fs']['cache']){
156 $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
164 * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
165 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
168 * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
173 function addBody($body) // ~X2C
175 $this->addBodyContent($body);
179 // +X2C Operation 124
181 * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
183 * @param string $titulo String que se quiere agregar al titulo del sistema
188 function addTitle($titulo) // ~X2C
190 $this->_configuracion['titulo_sistema2'].= ' - '.$titulo;
194 // +X2C Operation 207
196 * Setea la variable que define si hay que separar el body del menu
198 * @param bool $espacios Si es verdadero agrega los espacios, sino los elimina
203 function setEspacios($espacios = true) // ~X2C
205 $this->_espacios = $espacios;
209 // +X2C Operation 214
211 * Agrega un menu vertical a la izquierda en la pantalla.
213 * @param mixed $menuVertical Objeto u Html que representa el menu a mostrar.
218 function addMenuVertical($menuVertical) // ~X2C
220 if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
221 $this->addStyleSheet($menuVertical->getCSS());
223 $this->_menuVertical = $menuVertical;
227 // +X2C Operation 218
229 * Permite habilitar o deshabilitar los links de una pagina (todos)
231 * @param bool $param True habilita los links, False no.
236 function habilitarLinks($param = true) // ~X2C
238 $this->_links = $param;
242 // +X2C Operation 220
244 * Devuelve el html de la pagina
249 function toHTML() // ~X2C
251 //Seteo el titulo de la pagina
252 parent::setTitle($this->_configuracion['titulo_sistema'].$this->_configuracion['titulo_sistema2']);
253 //Agrego la opcion seleccionada de links a la configuracion
254 $this->_configuracion['links'] = $this->_links;
255 //Agrego la opcion seleccionada de espacios a la configuracion
256 $this->_configuracion['espacios'] = $this->_espacios;
257 //Creo el menu principal
258 $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
259 //Agrego el contenido de la pagina
260 $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
262 //Agrego el contenido al menu
263 $menu->addBody($body);
264 //Agrego el Marco completo a Page
265 $this->setBody($menu->toHtml());
266 return parent::toHTML();
270 // +X2C Operation 223
272 * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
273 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
275 * @param mixed $content Contenido a agregar en la pagina
280 function addBodyContent($content) // ~X2C
282 if ((is_object($content)) && (method_exists($content, 'getcss'))) {
283 $this->addStyleSheet($content->getCSS());
285 parent::addBodyContent($content);
289 // +X2C Operation 224
291 * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
293 * @param string $subtitulo Subtitulo a agregar
298 function addSubTitle($subtitulo) // ~X2C
300 $this->_configuracion['subtitulo'].= ' - '.$subtitulo;
304 // +X2C Operation 225
306 * Concatena lo pasado por parametro al titulo del sistema
308 * @param string $titulo Titulo a agregar. Si se pasa vacio se borra lo que pudiera estar
313 function setTitle($titulo = '') // ~X2C
315 $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo :
320 // +X2C Operation 226
322 * Concatena lo pasado por parametro al titulo de seccion
324 * @param string $subtitulo Setea el subtitulo. Si se pasa vacio borra lo que pudiera estar.
329 function setSubtitle($subtitulo = '') // ~X2C
331 $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo :
336 // +X2C Operation 243
338 * Permite hacer que en el copete aparezca un icono de ayuda, en un lugar predefinido. Sobreescribe lo seteado anteriormente por cualquier metodo.
340 * @param mixed $ayuda Objeto MECON_HTML_Link o string para utilizar en el map.
345 function setAyuda($ayuda) // ~X2C
347 $this->_configuracion['ayuda'] = $ayuda;
351 // +X2C Operation 277
353 * 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.
355 * @param string $clave Clave del array de configuracion a obtener.
360 function getConf($clave = null) // ~X2C
363 return @$this->_configuracion[$clave];
366 return $this->_configuracion
371 } // -X2C Class :MECON_Marco