------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'PEAR.php'; require_once 'MLIB/Marco/Copete.php'; require_once 'MLIB/Marco/Menu.php'; require_once 'MLIB/Marco/MenuPrincipal.php'; //Agregado para el uso de HTML_Page (Uso la version Original de Pear) require_once 'MLIB/HTML/Page.php'; require_once 'HTML/Table.php'; //Defino los directorios por default define ('DIR_IMAGENES', 'images'); define ('DIR_ESTILOS' , 'css' ); define ('DIR_JS' , 'js' ); define ('DIR_WWW' , 'www' ); define ('DIR_CACHE' , '/tmp' ); //Defino las constantes define ('SCRIPT_DIR_BASE', '/MLIB/js/' ); define ('ESTILO_DIR_BASE', '/MLIB/css/'); define ('SCRIPT_GENERICO', 'marco.js' ); define ('ESTILO_GENERICO', 'marco.css' ); /** * Clase encargada del manejo del Marco de los sistemas. * * @access public */ class MLIB_Marco extends MLIB_HTML_Page { /** * Array con los datos de configuracion del sistema. * * @var array $configuracion * @access private */ var $_configuracion; /** * Mantiene el estado de los espacios * * @var bool $espacios * @access private */ var $_espacios = true; /** * Menu vertical para agregar en la pantalla. * * @var mixed $menuVertical * @access private */ var $_menuVertical = null; /** * Mantiene el estado de los links en la pagina. (True habilitados, False no) * * @var bool $links * @access private */ var $_links = true; /** * Constructor. Recibe como parametro el path del archivo de configuracion * * @param string $arch_configuracion indicacion de la ubicacion y nombre del archivo de configuracion * @param MLIB_Perm $obj_permiso Objeto Permisos * * @return void * @access public */ function MLIB_Marco($arch_configuracion, $obj_permiso = null) { //Creo el objeto pagina parent::MLIB_HTML_Page(); //Obtengo y arreglo la configuracion $this->_obtenerConfiguracion($arch_configuracion); //Agrego el objeto permiso a la configuracion if (@$obj_permiso) { $this->_configuracion['obj_permiso'] = $obj_permiso; } //Agrego el estilo y el script genericos $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO); $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO); //Seteo el titulo $this->setTitle($this->_configuracion['titulo_sistema']); $this->_configuracion['subtitulo'] = ''; $this->_configuracion['titulo_sistema2'] = ''; } /** * Funcion que se encarga de la obtencion y generacion del array de configuracion. Recibe como parametro el path del archivo de configuracion * * @param string $archivo Archivo de configuracion del sistema * * @return array * @access private */ function _obtenerConfiguracion($archivo) { $this->_configuracion = include $archivo; //Verifico que existan los directorios, si no es asi los reemplazo por los defaults if (!@$this->_configuracion['directorios']['root']) { trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); } if (!@$this->_configuracion['directorios']['imagenes']){ $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES; } if (!@$this->_configuracion['directorios']['estilos']){ $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS; } if (!@$this->_configuracion['directorios']['js']){ $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS; } if (!@$this->_configuracion['directorios']['www']){ $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW; } if (!@$this->_configuracion['directorios_fs']['cache']){ $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE; } } /** * Redefinicion de la funcion que permite agregar objetos o html al body de la pagina Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS. @deprecated * * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina * * @return void * @access public */ function addBody($body) { $this->addBodyContent($body); } /** * Funcion que permite concatenar lo pasado como parametro al titulo del sistema * * @param string $titulo String que se quiere agregar al titulo del sistema * * @return void * @access public */ function addTitle($titulo) { $this->_configuracion['titulo_sistema2'].= ' - '.$titulo; } /** * Setea la variable que define si hay que separar el body del menu * * @param bool $espacios Si es verdadero agrega los espacios, sino los elimina * * @return void * @access public */ function setEspacios($espacios = true) { $this->_espacios = $espacios; } /** * Agrega un menu vertical a la izquierda en la pantalla. * * @param mixed $menuVertical Objeto u Html que representa el menu a mostrar. * * @return void * @access public */ function addMenuVertical($menuVertical) { if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) { $this->addStyleSheet($menuVertical->getCSS()); } $this->_menuVertical = $menuVertical; } /** * Permite habilitar o deshabilitar los links de una pagina (todos) * * @param bool $param True habilita los links, False no. * * @return void * @access public */ function habilitarLinks($param = true) { $this->_links = $param; } /** * Devuelve el html de la pagina * * @return string * @access public */ function toHTML() { //Seteo el titulo de la pagina parent::setTitle($this->_configuracion['titulo_sistema'].$this->_configuracion['titulo_sistema2']); //Agrego la opcion seleccionada de links a la configuracion $this->_configuracion['links'] = $this->_links; //Agrego la opcion seleccionada de espacios a la configuracion $this->_configuracion['espacios'] = $this->_espacios; //Creo el menu principal $menu = new MLIB_Marco_MenuPrincipal ($this->_configuracion); //Agrego el contenido de la pagina $body = array ( 'body' => $this->_body, 'menuVertical' => $this->_menuVertical); //Page //Agrego el contenido al menu $menu->addBody($body); //Agrego el Marco completo a Page $this->setBody('
'); foreach ($menu->resultado AS $res) { $this->addBodyContent($res); } $this->addBodyContent('
'); return parent::toHTML(); } /** * Funcion que permite concatenar lo pasado como parametro al titulo del sistema * * @param string $subtitulo Subtitulo a agregar * * @return void * @access public */ function addSubTitle($subtitulo) { if (is_a($subtitulo, 'MLIB_html_link')) { $subtitulo->updateAttributes( array('class' => 'MLIB_marco_subtitle')); } if (method_exists($subtitulo, 'tohtml')) { $subtitulo = $subtitulo->toHtml(); } $this->_configuracion['subtitulo'] .= ' - ' . $subtitulo; } /** * Concatena lo pasado por parametro al titulo del sistema * * @param string $titulo Titulo a agregar. Si se pasa vacio se borra lo que pudiera estar * * @return void * @access public */ function setTitle($titulo = '') { $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo : ''; } /** * Concatena lo pasado por parametro al titulo de seccion * * @param string $subtitulo Setea el subtitulo. Si se pasa vacio borra lo que pudiera estar. * * @return void * @access public */ function setSubtitle($subtitulo = '') { $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo : ''; } /** * Permite hacer que en el copete aparezca un icono de ayuda, en un lugar predefinido. Sobreescribe lo seteado anteriormente por cualquier metodo. * * @param mixed $ayuda Objeto MLIB_HTML_Link o string para utilizar en el map. * * @return void * @access public */ function setAyuda($ayuda) { $this->_configuracion['ayuda'] = $ayuda; } /** * 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. * * @param string $clave Clave del array de configuracion a obtener. * * @return mixed * @access public */ function getConf($clave = null) { if ($clave) { return @$this->_configuracion[$clave]; } else { return $this->_configuracion; } } } ?>