X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/ee6749f483029245119eb85399a58c6ac68db322..d99c50b3117c0fd51cb5ce7e6fc33c60c5006bac:/lib/MECON/Marco.php?ds=sidebyside diff --git a/lib/MECON/Marco.php b/lib/MECON/Marco.php index 6bae9f7..d2fd0a2 100644 --- a/lib/MECON/Marco.php +++ b/lib/MECON/Marco.php @@ -1,62 +1,57 @@ - -// +----------------------------------------------------------------------+ -// -// $Id$ -// $Author$ -// $URL$ -// $Date$ -// $Rev$ -// + +------------------------------------------------------------------------------- +$Id$ +-----------------------------------------------------------------------------*/ require_once 'PEAR.php'; require_once 'MECON/Marco/Copete.php'; -require_once 'MECON/Marco/Titulo.php'; -require_once 'MECON/Marco/Pie.php'; require_once 'MECON/Marco/Menu.php'; require_once 'MECON/Marco/MenuPrincipal.php'; //Agregado para el uso de HTML_Page (Uso la version Original de Pear) -require_once 'HTML/Page.php'; +require_once 'MECON/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'); -// +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' , '/MECON/js/'); -define ('ESTILO_DIR_BASE' , '/MECON/css/'); -define ('SCRIPT_GENERICO' , 'general_script.js'); -define ('ESTILO_GENERICO' , 'general_estilos.css'); -// +define ('SCRIPT_DIR_BASE', '/MECON/js/' ); +define ('ESTILO_DIR_BASE', '/MECON/css/'); +define ('SCRIPT_GENERICO', 'marco.js' ); +define ('ESTILO_GENERICO', 'marco.css' ); -// +X2C Class 3 :Marco /** - * Clase que se encarga del manejo del marco en general en los sistemas de intranet. -Trabaja de forma general, llamando a los demas objetos para la realizacion del marco. + * Clase encargada del manejo del Marco de los sistemas. * * @access public */ -class Marco extends HTML_Page { +class MECON_Marco extends MECON_HTML_Page { /** * Array con los datos de configuracion del sistema. * @@ -66,238 +61,262 @@ class Marco extends HTML_Page { var $_configuracion; /** - * Referencia al objeto Titulo. + * Mantiene el estado de los espacios * - * @var Titulo $titulo + * @var bool $espacios * @access private */ - var $_titulo; + var $_espacios = true; /** - * Titulo que quiere agregar el usuario al titulo del sistema + * Menu vertical para agregar en la pantalla. * - * @var string $titulo2 + * @var mixed $menuVertical * @access private */ - var $_titulo2; + var $_menuVertical = null; /** - * Referencia al objeto Copete. + * Mantiene el estado de los links en la pagina. (True habilitados, False no) * - * @var Copete $copete + * @var bool $links * @access private */ - var $_copete; + var $_links = true; /** - * Referencia al objeto Menu. + * Constructor. Recibe como parametro el path del archivo de configuracion * - * @var Menu $menu - * @access private + * @param string $arch_configuracion indicacion de la ubicacion y nombre del archivo de configuracion + * @param MECON_Perm $obj_permiso Objeto Permisos + * + * @return void + * @access public */ - var $_menu; + function MECON_Marco($arch_configuracion, $obj_permiso = null) + { + //Creo el objeto pagina + parent::MECON_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'] = ''; + } /** - * Referencia al objeto Pie. + * 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 * - * @var Pie $pie + * @return array * @access private */ - var $_pie; + 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; + } + } /** - * Html u objetos que se quieren incluir a la pagina + * 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 * - * @var array $contenido - * @access private + * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina + * + * @return void + * @access public */ - var $_contenido; - - // ~X2C + function addBody($body) + { + $this->addBodyContent($body); + } - // +X2C Operation 26 /** - * Constructor. Recibe como parametro el path del archivo de configuracion + * Funcion que permite concatenar lo pasado como parametro al titulo del sistema * - * @param string $arch_configuracion Nombre del directorio en donde se encuentra el sistema. + * @param string $titulo String que se quiere agregar al titulo del sistema * * @return void * @access public */ - function Marco($arch_configuracion) // ~X2C + function addTitle($titulo) { - parent::HTML_Page(array ('doctype'=>'HTML 4.01 Transitional', - 'charset' => 'iso-8859-1', - 'lineend' => 'unix', - 'language' => 'es', - 'cache' => 'false', - 'simple' => 'true')); - - $this->_obtenerConfiguracion($arch_configuracion); - - $this->_titulo = new Titulo ($this->_configuracion['titulo_sistema']); - $this->_copete = new Copete ($this->_configuracion['directorios']['imagenes']); - $this->_menu = new MenuPrincipal ($this->_configuracion); - $this->_pie = new Pie ($this->_configuracion); - $this->_contenido = array (); - - $this->_titulo2 = ''; + $this->_configuracion['titulo_sistema2'].= ' - '.$titulo; } - // -X2C - - - // +X2C Operation 30 /** - * Funcion que permite agregar archivos de script al sistema, ademas del generico. + * Setea la variable que define si hay que separar el body del menu * - * @param string $archivo Nombre del archivo a incluir. + * @param bool $espacios Si es verdadero agrega los espacios, sino los elimina * * @return void * @access public */ - function agregarScript($archivo) // ~X2C + function setEspacios($espacios = true) { - $tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo; - $this->addScript($tmp); + $this->_espacios = $espacios; } - // -X2C - // +X2C Operation 31 /** - * Funcion que permite agregar archivos de estilo al sistema, ademas del generico. + * Agrega un menu vertical a la izquierda en la pantalla. * - * @param string $archivo Nombre del archivo a incluir. + * @param mixed $menuVertical Objeto u Html que representa el menu a mostrar. * * @return void * @access public */ - function agregarEstilo($archivo) // ~X2C + function addMenuVertical($menuVertical) { - $tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo; - $this->addStyleSheet($tmp); + if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) { + $this->addStyleSheet($menuVertical->getCSS()); + } + $this->_menuVertical = $menuVertical; } - // -X2C - // +X2C Operation 32 /** - * Funcion que se encarga de la obtencion y generacion del array de configuracion.Recibe como parametro el directorio en donde se encuentra el sistema. + * Permite habilitar o deshabilitar los links de una pagina (todos) * - * @param string $archivo Archivo de configuracion del sistema + * @param bool $param True habilita los links, False no. * - * @return array - * @access private + * @return void + * @access public */ - function _obtenerConfiguracion($archivo) // ~X2C + function habilitarLinks($param = true) { - $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; - } + $this->_links = $param; } - // -X2C - // +X2C Operation 91 /** - * 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. + * Devuelve el html de la pagina * * @return string * @access public */ - function display() // ~X2C + function toHTML() { - //Agrego el header - $this->_header_display(); - //Agrego el body - $this->_body_display(); - - $_SESSION['deshabilitar_links'] = null; - - // MUESTRO EN PANTALLA LA PAGINA - parent::display(); + //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 MECON_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($menu->toHtml()); + return parent::toHTML(); } - // -X2C - // +X2C Operation 97 /** - * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina + * Funcion que permite concatenar lo pasado como parametro al titulo del sistema * - * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina + * @param string $subtitulo Subtitulo a agregar * * @return void * @access public */ - function addBody($body) // ~X2C + function addSubTitle($subtitulo) { - $this->_contenido[] = $body; + if (is_a($subtitulo, 'mecon_html_link')) { + $subtitulo->updateAttributes( + array('class' => 'mecon_marco_subtitle')); + } + if (method_exists($subtitulo, 'tohtml')) { + $subtitulo = $subtitulo->toHtml(); + } + $this->_configuracion['subtitulo'] .= ' - ' . $subtitulo; } - // -X2C - // +X2C Operation 112 /** - * Funcion que se encarga de agregar a la pagina el contenido del header + * 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 private + * @access public */ - function _header_display() // ~X2C + function setTitle($titulo = '') { - $tmp = $this->_titulo->darTitulo().$this->_titulo2; - $this->setTitle($tmp); - $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO); - $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO); + $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo : + ''; } - // -X2C - // +X2C Operation 113 /** - * Funcion que se encarga de agregar a la pagina el contenido del body + * 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 private + * @access public */ - function _body_display() // ~X2C + function setSubtitle($subtitulo = '') { - $body = array ( 'copete' => $this->_copete->toHtml(), - 'body' => $this->_contenido, - 'pie' => $this->_pie->toHtml(), - ); - $this->_menu->addBody($body); - $this->addBodyContent($this->_menu->toHtml()); + $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo : + ''; } - // -X2C - // +X2C Operation 124 /** - * Funcion que permite adosar al titulo del sistema el titulo de la pagina. + * Permite hacer que en el copete aparezca un icono de ayuda, en un lugar predefinido. Sobreescribe lo seteado anteriormente por cualquier metodo. * - * @param string $titulo Titulo de la pagina. + * @param mixed $ayuda Objeto MECON_HTML_Link o string para utilizar en el map. * * @return void * @access public */ - function addTitle($titulo) // ~X2C + function setAyuda($ayuda) { - $this->_titulo2.= ' - '.$titulo; + $this->_configuracion['ayuda'] = $ayuda; } - // -X2C - -} // -X2C Class :Marco -?> + /** + * 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; + } + } +} +?> \ No newline at end of file