1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
4 -------------------------------------------------------------------------------
5 This file is part of mlib.
7 mlib is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your option)
12 mlib is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License; if not,
17 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 Boston, MA 02111-1307 USA
19 -------------------------------------------------------------------------------
20 Creado: Mon Apr 14 16:23:22 2003
21 Autor: Martin Marrese <mmarre@mecon.gov.ar>
22 -------------------------------------------------------------------------------
24 -----------------------------------------------------------------------------*/
26 require_once 'PEAR.php';
27 require_once 'MLIB/Marco/Copete.php';
28 require_once 'MLIB/Marco/Menu.php';
29 require_once 'MLIB/Marco/MenuPrincipal.php';
31 //Agregado para el uso de HTML_Page (Uso la version Original de Pear)
32 require_once 'MLIB/HTML/Page.php';
33 require_once 'HTML/Table.php';
35 //Defino los directorios por default
36 define ('DIR_IMAGENES', 'images');
37 define ('DIR_ESTILOS' , 'css' );
38 define ('DIR_JS' , 'js' );
39 define ('DIR_WWW' , 'www' );
40 define ('DIR_CACHE' , '/tmp' );
42 //Defino las constantes
43 define ('SCRIPT_DIR_BASE', '/MLIB/js/' );
44 define ('ESTILO_DIR_BASE', '/MLIB/css/');
45 define ('SCRIPT_GENERICO', 'marco.js' );
46 define ('ESTILO_GENERICO', 'marco.css' );
49 * Clase encargada del manejo del Marco de los sistemas.
53 class MLIB_Marco extends MLIB_HTML_Page {
55 * Array con los datos de configuracion del sistema.
57 * @var array $configuracion
63 * Mantiene el estado de los espacios
68 var $_espacios = true;
71 * Menu vertical para agregar en la pantalla.
73 * @var mixed $menuVertical
76 var $_menuVertical = null;
79 * Mantiene el estado de los links en la pagina. (True habilitados, False no)
87 * Constructor. Recibe como parametro el path del archivo de configuracion
89 * @param string $arch_configuracion indicacion de la ubicacion y nombre del archivo de configuracion
90 * @param MLIB_Perm $obj_permiso Objeto Permisos
95 function MLIB_Marco($arch_configuracion, $obj_permiso = null)
97 //Creo el objeto pagina
98 parent::MLIB_HTML_Page();
99 //Obtengo y arreglo la configuracion
100 $this->_obtenerConfiguracion($arch_configuracion);
101 //Agrego el objeto permiso a la configuracion
103 $this->_configuracion['obj_permiso'] = $obj_permiso;
105 //Agrego el estilo y el script genericos
106 $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
107 $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
109 $this->setTitle($this->_configuracion['titulo_sistema']);
110 $this->_configuracion['subtitulo'] = '';
111 $this->_configuracion['titulo_sistema2'] = '';
115 * Funcion que se encarga de la obtencion y generacion del array de configuracion. Recibe como parametro el path del archivo de configuracion
117 * @param string $archivo Archivo de configuracion del sistema
122 function _obtenerConfiguracion($archivo)
124 $this->_configuracion = include $archivo;
125 //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
126 if (!@$this->_configuracion['directorios']['root']) {
127 trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR);
129 if (!@$this->_configuracion['directorios']['imagenes']){
130 $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
132 if (!@$this->_configuracion['directorios']['estilos']){
133 $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
135 if (!@$this->_configuracion['directorios']['js']){
136 $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
138 if (!@$this->_configuracion['directorios']['www']){
139 $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
141 if (!@$this->_configuracion['directorios_fs']['cache']){
142 $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
147 * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina
148 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
151 * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
156 function addBody($body)
158 $this->addBodyContent($body);
162 * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
164 * @param string $titulo String que se quiere agregar al titulo del sistema
169 function addTitle($titulo)
171 $this->_configuracion['titulo_sistema2'].= ' - '.$titulo;
175 * Setea la variable que define si hay que separar el body del menu
177 * @param bool $espacios Si es verdadero agrega los espacios, sino los elimina
182 function setEspacios($espacios = true)
184 $this->_espacios = $espacios;
188 * Agrega un menu vertical a la izquierda en la pantalla.
190 * @param mixed $menuVertical Objeto u Html que representa el menu a mostrar.
195 function addMenuVertical($menuVertical)
197 if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
198 $this->addStyleSheet($menuVertical->getCSS());
200 $this->_menuVertical = $menuVertical;
204 * Permite habilitar o deshabilitar los links de una pagina (todos)
206 * @param bool $param True habilita los links, False no.
211 function habilitarLinks($param = true)
213 $this->_links = $param;
217 * Devuelve el html de la pagina
224 //Seteo el titulo de la pagina
225 parent::setTitle($this->_configuracion['titulo_sistema'].$this->_configuracion['titulo_sistema2']);
226 //Agrego la opcion seleccionada de links a la configuracion
227 $this->_configuracion['links'] = $this->_links;
228 //Agrego la opcion seleccionada de espacios a la configuracion
229 $this->_configuracion['espacios'] = $this->_espacios;
230 //Creo el menu principal
231 $menu = new MLIB_Marco_MenuPrincipal ($this->_configuracion);
232 //Agrego el contenido de la pagina
233 $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical);
235 //Agrego el contenido al menu
236 $menu->addBody($body);
237 //Agrego el Marco completo a Page
238 $this->setBody('<div style="width: 760px" align="left">');
239 foreach ($menu->resultado AS $res) {
240 $this->addBodyContent($res);
242 $this->addBodyContent('</div>');
243 return parent::toHTML();
247 * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
249 * @param string $subtitulo Subtitulo a agregar
254 function addSubTitle($subtitulo)
256 if (is_a($subtitulo, 'MLIB_html_link')) {
257 $subtitulo->updateAttributes(
258 array('class' => 'MLIB_marco_subtitle'));
260 if (method_exists($subtitulo, 'tohtml')) {
261 $subtitulo = $subtitulo->toHtml();
263 $this->_configuracion['subtitulo'] .= ' - ' . $subtitulo;
267 * Concatena lo pasado por parametro al titulo del sistema
269 * @param string $titulo Titulo a agregar. Si se pasa vacio se borra lo que pudiera estar
274 function setTitle($titulo = '')
276 $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo :
281 * Concatena lo pasado por parametro al titulo de seccion
283 * @param string $subtitulo Setea el subtitulo. Si se pasa vacio borra lo que pudiera estar.
288 function setSubtitle($subtitulo = '')
290 $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo :
295 * Permite hacer que en el copete aparezca un icono de ayuda, en un lugar predefinido. Sobreescribe lo seteado anteriormente por cualquier metodo.
297 * @param mixed $ayuda Objeto MLIB_HTML_Link o string para utilizar en el map.
302 function setAyuda($ayuda)
304 $this->_configuracion['ayuda'] = $ayuda;
308 * 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.
310 * @param string $clave Clave del array de configuracion a obtener.
315 function getConf($clave = null)
318 return @$this->_configuracion[$clave];
321 return $this->_configuracion;