-<?php
-// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2003 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.02 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Created: Mon Apr 14 16:23:22 2003
-// | Author: Martin Marrese <mmarre@mecon.gov.ar>
-// +----------------------------------------------------------------------+
-//
-// $Id$
-// $Author$
-// $URL$
-// $Date$
-// $Rev$
-//
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+ Ministerio de EconomÃa
+ meconlib
+-------------------------------------------------------------------------------
+This file is part of meconlib.
+
+meconlib is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+meconlib is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA 02111-1307 USA
+-------------------------------------------------------------------------------
+Creado: Mon Apr 14 16:23:22 2003
+Autor: Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
require_once 'PEAR.php';
-require_once 'Marco/Copete.php';
-require_once 'Marco/Titulo.php';
-require_once 'Marco/Pie.php';
-require_once 'Marco/Menu.php';
-require_once 'Marco/MenuPrincipal.php';
+require_once 'MECON/Marco/Copete.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 'HTML/Table.php';
-define ('SCRIPT_DIR_BASE' , '/www/js/');
-define ('ESTILO_DIR_BASE' , '/www/css/');
-define ('SCRIPT_GENERICO' , 'script.js');
-define ('ESTILO_GENERICO' , 'estilos.css');
-
+//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', '/MECON/js/' );
+define ('ESTILO_DIR_BASE', '/MECON/css/' );
+define ('SCRIPT_GENERICO', 'general_script.js' );
+define ('ESTILO_GENERICO', 'general_estilos.css');
+//
-// +X2C Class 3 :Marco
+// +X2C Class 3 :MECON_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.
*
+ * @package MECON
* @access public
*/
-class Marco extends HTML_Page {
- /**
- * Array con los diferentes directorios necesarios para el funcionamiento. Solo el root es obligatorio.
- *
- * @var array $directorio
- * @access private
- */
- var $_directorio;
-
+class MECON_Marco extends HTML_Page {
/**
* Array con los datos de configuracion del sistema.
*
var $_configuracion;
/**
- * Referencia al objeto Titulo.
- *
- * @var Titulo $titulo
- * @access private
- */
- var $_titulo;
-
- /**
- * Titulo que quiere agregar el usuario al titulo del sistema
+ * Mantiene el estado de los espacios
*
- * @var string $titulo2
+ * @var bool $espacios
* @access private
*/
- var $_titulo2;
+ var $_espacios = true;
/**
- * Referencia al objeto Copete.
+ * Menu vertical para agregar en la pantalla.
*
- * @var Copete $copete
+ * @var mixed $menuVertical
* @access private
*/
- var $_copete;
+ var $_menuVertical = null;
/**
- * Referencia al objeto Menu.
+ * Mantiene el estado de los links en la pagina. (True habilitados, False no)
*
- * @var Menu $menu
+ * @var bool $links
* @access private
*/
- var $_menu;
-
- /**
- * Referencia al objeto Pie.
- *
- * @var Pie $pie
- * @access private
- */
- var $_pie;
-
- /**
- * Html u objetos que se quieren incluir a la pagina
- *
- * @var array $contenido
- * @access private
- */
- var $_contenido;
+ var $_links = true;
// ~X2C
/**
* Constructor. Recibe como parametro el path del archivo de configuracion
*
- * @param string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
+ * @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
*/
- function Marco($arch_configuracion) // ~X2C
+ function MECON_Marco($arch_configuracion, $obj_permiso = null) // ~X2C
{
- parent::HTML_Page(array ('doctype'=>'HTML 4.01 Transitional',
- 'charset' => 'iso-8859-1',
- 'lineend' => 'unix',
- 'language' => 'es',
- 'cache' => 'false',
- 'simple' => 'true'));
- $this->_directorio = $directorio;
- $this->_obtenerConfiguracion();
- $this->_titulo = new Titulo ($this->_configuracion);
- $this->_copete = new Copete ($this->_directorio);
- $this->_menu = new MenuPrincipal ($this->_directorio);
- $this->_pie = new Pie ($this->_configuracion);
- $this->_contenido = array ();
-
- $this->_titulo2 = '';
+ //Creo el objeto pagina
+ parent::HTML_Page(array ('doctype' => 'HTML 4.01 Transitional',
+ 'charset' => 'iso-8859-1' ,
+ 'lineend' => 'unix' ,
+ 'language' => 'es' ,
+ 'cache' => 'false' ,
+ 'simple' => 'true' ));
+ //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']);
}
// -X2C
-
-
- // +X2C Operation 30
+ // +X2C Operation 32
/**
- * Funcion que permite agregar archivos de script al sistema, ademas del generico.
+ * 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 Nombre del archivo a incluir.
+ * @param string $archivo Archivo de configuracion del sistema
*
- * @return void
- * @access public
+ * @return array
+ * @access private
*/
- function agregarScript($archivo) // ~X2C
+ function _obtenerConfiguracion($archivo) // ~X2C
{
- $tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo;
- $this->addScript($tmp);
+ $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;
+ }
}
// -X2C
- // +X2C Operation 31
+
+ // +X2C Operation 97
/**
- * Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
+ * 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 string $archivo Nombre del archivo a incluir.
+ * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
*
* @return void
* @access public
*/
- function agregarEstilo($archivo) // ~X2C
+ function addBody($body) // ~X2C
{
- $tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo;
- $this->addStyleSheet($tmp);
+ if ((is_object($body)) && (method_exists($body, 'getcss'))) {
+ $this->addStyleSheet($body->getCSS());
+ }
+ $this->addBodyContent($body);
}
// -X2C
- // +X2C Operation 32
+ // +X2C Operation 124
/**
- * Funcion que se encarga de la obtencion y generacion del array de configuracion.
+ * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
*
- * @return array
- * @access private
+ * @param string $titulo String que se quiere agregar al titulo del sistema
+ *
+ * @return void
+ * @access public
*/
- function _obtenerConfiguracion() // ~X2C
+ function addTitle($titulo) // ~X2C
{
- $this->_configuracion = include $this->_directorio.SISTEMA_CONF_BASE;
+ $this->setTitle($this->_configuracion['titulo_sistema'].' - '.$titulo);
}
// -X2C
- // +X2C Operation 91
+ // +X2C Operation 207
/**
- * 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.
+ * Setea la variable que define si hay que separar el body del menu
*
- * @return string
+ * @param bool $espacios Si es verdadero agrega los espacios, sino los elimina
+ *
+ * @return void
* @access public
*/
- function display() // ~X2C
+ function setEspacios($espacios = true) // ~X2C
{
- //Agrego el header
- $this->_header_display();
- //Agrego el body
- $this->_body_display();
-
- $_SESSION['deshabilitar_links'] = null;
-
- // MUESTRO EN PANTALLA LA PAGINA
- parent::display();
+ $this->_espacios = $espacios;
}
// -X2C
- // +X2C Operation 97
+ // +X2C Operation 214
/**
- * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
+ * Agrega un menu vertical a la izquierda en la pantalla.
*
- * @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
+ * @param mixed $menuVertical Objeto u Html que representa el menu a mostrar.
*
* @return void
* @access public
*/
- function addBody($body) // ~X2C
+ function addMenuVertical($menuVertical) // ~X2C
{
- $this->_contenido[] = $body;
+ if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
+ $this->addStyleSheet($menuVertical->getCSS());
+ }
+ $this->_menuVertical = $menuVertical;
}
// -X2C
- // +X2C Operation 112
+ // +X2C Operation 218
/**
- * Funcion que se encarga de agregar a la pagina el contenido del header
+ * Permite habilitar o deshabilitar los links de una pagina (todos)
+ *
+ * @param bool $param True habilita los links, False no.
*
* @return void
- * @access private
+ * @access public
*/
- function _header_display() // ~X2C
+ function habilitarLinks($param = true) // ~X2C
{
- $tmp = $this->_titulo->darTitulo().$this->_titulo2;
- $this->setTitle($tmp);
- $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
- $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
+ $this->_links = $param;
}
// -X2C
- // +X2C Operation 113
+ // +X2C Operation 220
/**
- * Funcion que se encarga de agregar a la pagina el contenido del body
+ * Devuelve el html de la pagina
*
- * @return void
- * @access private
+ * @return string
+ * @access public
*/
- function _body_display() // ~X2C
+ function toHTML() // ~X2C
{
- $body = array ( 'copete' => $this->_copete->toHtml(),
- 'body' => $this->_contenido,
- 'pie' => $this->_pie->toHtml(),
- );
- $this->_menu->addBody($body);
- $this->addBodyContent($this->_menu->toHtml());
+ //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 124
+ // +X2C Operation 223
/**
- * Funcion que permite adosar al titulo del sistema el titulo de 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.
*
- * @param string $titulo Titulo de la pagina.
+ * @param mixed $content Contenido a agregar en la pagina
*
* @return void
* @access public
*/
- function addTitle($titulo) // ~X2C
+ function addBodyContent($content) // ~X2C
{
- $this->_titulo2 = ' - '.$titulo;
+ if ((is_object($content)) && (method_exists($content, 'getcss'))) {
+ $this->addStyleSheet($content->getCSS());
+ }
+ parent::addBodyContent($content);
}
// -X2C
-} // -X2C Class :Marco
+} // -X2C Class :MECON_Marco
?>
\ No newline at end of file