2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +----------------------------------------------------------------------+
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.02 of the PHP license, |
9 // | that is bundled with this package in the file LICENSE, and is |
10 // | available at through the world-wide-web at |
11 // | http://www.php.net/license/2_02.txt. |
12 // | If you did not receive a copy of the PHP license and are unable to |
13 // | obtain it through the world-wide-web, please send a note to |
14 // | license@php.net so we can mail you a copy immediately. |
15 // +----------------------------------------------------------------------+
16 // | Created: Mon Apr 14 16:23:22 2003
17 // | Author: Martin Marrese <mmarre@mecon.gov.ar>
18 // +----------------------------------------------------------------------+
27 require_once 'PEAR.php';
28 require_once 'MECON/Marco/Copete.php';
29 require_once 'MECON/Marco/Titulo.php';
30 require_once 'MECON/Marco/Pie.php';
31 require_once 'MECON/Marco/Menu.php';
32 require_once 'MECON/Marco/MenuPrincipal.php';
34 //Agregado para el uso de HTML_Page (Uso la version Original de Pear)
35 require_once 'HTML/Page.php';
36 require_once 'HTML/Table.php';
38 //Defino los directorios por default
39 define ('DIR_IMAGENES' , 'images');
40 define ('DIR_ESTILOS' , 'css');
41 define ('DIR_JS' , 'js');
42 define ('DIR_WWW' , 'www');
43 define ('DIR_CACHE' , '/tmp');
45 //Defino las constantes
46 define ('SCRIPT_DIR_BASE' , '/MECON/js/');
47 define ('ESTILO_DIR_BASE' , '/MECON/css/');
48 define ('SCRIPT_GENERICO' , 'general_script.js');
49 define ('ESTILO_GENERICO' , 'general_estilos.css');
52 // +X2C Class 3 :Marco
54 * Clase que se encarga del manejo del marco en general en los sistemas de intranet.
55 Trabaja de forma general, llamando a los demas objetos para la realizacion del marco.
60 class Marco extends HTML_Page {
62 * Array con los datos de configuracion del sistema.
64 * @var array $configuracion
70 * Referencia al objeto Titulo.
78 * Titulo que quiere agregar el usuario al titulo del sistema
80 * @var string $titulo2
86 * Referencia al objeto Copete.
94 * Referencia al objeto Menu.
102 * Referencia al objeto Pie.
110 * Html u objetos que se quieren incluir a la pagina
112 * @var array $contenido
118 * 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
120 * @var bool $espacios
126 * Menu vertical para agregar en la pantalla.
128 * @var mixed $menuVertical
137 * Constructor. Recibe como parametro el path del archivo de configuracion
139 * @param string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
144 function Marco($arch_configuracion) // ~X2C
146 parent::HTML_Page(array ('doctype'=>'HTML 4.01 Transitional',
147 'charset' => 'iso-8859-1',
151 'simple' => 'true'));
153 $this->_obtenerConfiguracion($arch_configuracion);
155 $this->_titulo = new Titulo ($this->_configuracion['titulo_sistema']);
156 $this->_copete = new Copete ($this->_configuracion['directorios']['imagenes']);
157 $this->_menu = new MenuPrincipal ($this->_configuracion);
158 $this->_pie = new Pie ($this->_configuracion);
159 $this->_contenido = array ();
160 $this->_espacios = true;
161 $this->_titulo2 = '';
162 $this->_menuVertical = null;
170 * Funcion que permite agregar archivos de script al sistema, ademas del generico.
172 * @param string $archivo Nombre del archivo a incluir.
177 function agregarScript($archivo) // ~X2C
179 $tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo;
180 $this->addScript($tmp);
186 * Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
188 * @param string $archivo Nombre del archivo a incluir.
193 function agregarEstilo($archivo) // ~X2C
195 $tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo;
196 $this->addStyleSheet($tmp);
202 * Funcion que se encarga de la obtencion y generacion del array de configuracion.Recibe como parametro el directorio en donde se encuentra el sistema.
204 * @param string $archivo Archivo de configuracion del sistema
209 function _obtenerConfiguracion($archivo) // ~X2C
211 $this->_configuracion = include $archivo;
212 //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
213 if (!@$this->_configuracion['directorios']['root']) {
214 trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR);
216 if (!@$this->_configuracion['directorios']['imagenes']){
217 $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
219 if (!@$this->_configuracion['directorios']['estilos']){
220 $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
222 if (!@$this->_configuracion['directorios']['js']){
223 $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
225 if (!@$this->_configuracion['directorios']['www']){
226 $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
228 if (!@$this->_configuracion['directorios_fs']['cache']){
229 $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
236 * Funcion que se encarga mostrar en pantalla el contenido completo de la pagina. Este metodo utiliza la clase HTML_Page, lo que nos permite utilizar solamente clases y nada de hooks.
241 function display() // ~X2C
244 $this->_header_display();
246 $this->_body_display();
248 $_SESSION['deshabilitar_links'] = null;
250 // MUESTRO EN PANTALLA LA PAGINA
257 * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
259 * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
264 function addBody($body) // ~X2C
266 $this->_contenido[] = $body;
270 // +X2C Operation 112
272 * Funcion que se encarga de agregar a la pagina el contenido del header
277 function _header_display() // ~X2C
279 $tmp = $this->_titulo->darTitulo().$this->_titulo2;
280 $this->setTitle($tmp);
281 $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
282 $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
286 // +X2C Operation 113
288 * Funcion que se encarga de agregar a la pagina el contenido del body
293 function _body_display() // ~X2C
295 $body = array ( 'copete' => $this->_copete->toHtml(),
296 'espacios' => $this->_espacios,
297 'body' => $this->_contenido,
298 'menuVertical' => $this->_menuVertical,
299 'pie' => $this->_pie->toHtml(),
301 $this->_menu->addBody($body);
302 $this->addBodyContent($this->_menu->toHtml());
306 // +X2C Operation 124
308 * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
310 * @param string $titulo Titulo de la pagina.
315 function addTitle($titulo) // ~X2C
317 $this->_titulo2.= ' - '.$titulo;
321 // +X2C Operation 207
323 * Setea los espacios entre el menu principal el body y el pie de las paginas
325 * @param bool $espacios Si es verdadero agrega los espacios, sino los elimina
330 function setEspacios($espacios = true) // ~X2C
332 $this->_espacios = $espacios;
336 // +X2C Operation 214
338 * Agrega un menu vertical a la izquierda en la pantalla. Por ahora solo funciona con MenuOculto
340 * @param mixed $menuVertical Objeto u Html que representa el menu a mostrar.
345 function addMenuVertical($menuVertical) // ~X2C
347 $this->_menuVertical = $menuVertical;
351 } // -X2C Class :Marco