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/Titulo.php';
30 require_once 'MECON/Marco/Menu.php';
31 require_once 'MECON/Marco/MenuPrincipal.php';
33 //Agregado para el uso de HTML_Page (Uso la version Original de Pear)
34 require_once 'HTML/Page.php';
35 require_once 'HTML/Table.php';
37 //Defino los directorios por default
38 define ('DIR_IMAGENES' , 'images');
39 define ('DIR_ESTILOS' , 'css');
40 define ('DIR_JS' , 'js');
41 define ('DIR_WWW' , 'www');
42 define ('DIR_CACHE' , '/tmp');
44 //Defino las constantes
45 define ('SCRIPT_DIR_BASE' , '/MECON/js/');
46 define ('ESTILO_DIR_BASE' , '/MECON/css/');
47 define ('SCRIPT_GENERICO' , 'general_script.js');
48 define ('ESTILO_GENERICO' , 'general_estilos.css');
51 // +X2C Class 3 :MECON_Marco
53 * Clase que se encarga del manejo del marco en general en los sistemas de intranet.
54 Trabaja de forma general, llamando a los demas objetos para la realizacion del marco.
59 class MECON_Marco extends HTML_Page {
61 * Array con los datos de configuracion del sistema.
63 * @var array $configuracion
69 * Indica si hay que agregar espacios o no entre los componentes del menu de secciones y el contenido de la pagina, asi como entre la pagina y el pie de pagina
74 var $_espacios = true;
77 * Menu vertical para agregar en la pantalla.
79 * @var mixed $menuVertical
82 var $_menuVertical = null;
85 * Mantiene el estado de los links en la pagina
96 * Constructor. Recibe como parametro el path del archivo de configuracion
98 * @param string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
103 function MECON_Marco($arch_configuracion) // ~X2C
105 //Creo el objeto pagina
106 parent::HTML_Page(array ('doctype' => 'HTML 4.01 Transitional',
107 'charset' => 'iso-8859-1' ,
108 'lineend' => 'unix' ,
111 'simple' => 'true' ));
112 //Obtengo y arreglo la configuracion
113 $this->_obtenerConfiguracion($arch_configuracion);
114 //Agrego el estilo y el script genericos
115 $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
116 $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
118 $this->setTitle($this->_configuracion['titulo_sistema']);
124 * Funcion que se encarga de la obtencion y generacion del array de configuracion.Recibe como parametro el directorio en donde se encuentra el sistema.
126 * @param string $archivo Archivo de configuracion del sistema
131 function _obtenerConfiguracion($archivo) // ~X2C
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);
138 if (!@$this->_configuracion['directorios']['imagenes']){
139 $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
141 if (!@$this->_configuracion['directorios']['estilos']){
142 $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
144 if (!@$this->_configuracion['directorios']['js']){
145 $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
147 if (!@$this->_configuracion['directorios']['www']){
148 $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
150 if (!@$this->_configuracion['directorios_fs']['cache']){
151 $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
159 * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
160 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
162 * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
167 function addBody($body) // ~X2C
169 if ((is_object($body)) && (method_exists($body, 'getcss'))) {
170 $this->addStyleSheet($body->getCSS());
172 $this->addBodyContent($body);
176 // +X2C Operation 124
178 * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
180 * @param string $titulo Titulo de la pagina.
185 function addTitle($titulo) // ~X2C
187 $this->setTitle($this->_configuracion['titulo_sistema'].' - '.$titulo);
191 // +X2C Operation 207
193 * Setea los espacios entre el menu principal el body y el pie de las paginas
195 * @param bool $espacios Si es verdadero agrega los espacios, sino los elimina
200 function setEspacios($espacios = true) // ~X2C
202 $this->_espacios = $espacios;
206 // +X2C Operation 214
208 * Agrega un menu vertical a la izquierda en la pantalla. Por ahora solo funciona con MenuOculto
210 * @param mixed $menuVertical Objeto u Html que representa el menu a mostrar.
215 function addMenuVertical($menuVertical) // ~X2C
217 $this->_menuVertical = $menuVertical;
221 // +X2C Operation 218
223 * Permite deshabilitar la totalidad de los links desde una pagina
225 * @param bool $param True habilita los links, False no.
230 function habilitarLinks($param = true) // ~X2C
232 $this->_links = $param;
236 // +X2C Operation 220
238 * Devuelve el html de la pagina
243 function toHTML() // ~X2C
245 //Agrego la opcion seleccionada de links a la configuracion
246 $this->_configuracion['links'] = $this->_links;
247 //Agrego la opcion seleccionada de espacios a la configuracion
248 $this->_configuracion['espacios'] = $this->_espacios;
249 //Creo el menu principal
250 $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
251 //Agrego el contenido de la pagina
252 $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
254 //Agrego el contenido al menu
255 $menu->addBody($body);
256 //Agrego el Marco completo a Page
257 $this->setBody($menu->toHtml());
258 return parent::toHTML();
262 } // -X2C Class :MECON_Marco