// +----------------------------------------------------------------------+
//
// $Id$
// $Author$
// $URL$
// $Date$
// $Rev$
//
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 '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' , '/MECON/js/');
define ('ESTILO_DIR_BASE' , '/MECON/css/');
define ('SCRIPT_GENERICO' , 'general_script.js');
define ('ESTILO_GENERICO' , 'general_estilos.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.
*
* @access public
*/
class Marco extends HTML_Page {
/**
* Array con los datos de configuracion del sistema.
*
* @var array $configuracion
* @access private
*/
var $_configuracion;
/**
* Referencia al objeto Titulo.
*
* @var Titulo $titulo
* @access private
*/
var $_titulo;
/**
* Titulo que quiere agregar el usuario al titulo del sistema
*
* @var string $titulo2
* @access private
*/
var $_titulo2;
/**
* Referencia al objeto Copete.
*
* @var Copete $copete
* @access private
*/
var $_copete;
/**
* Referencia al objeto Menu.
*
* @var Menu $menu
* @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;
// ~X2C
// +X2C Operation 26
/**
* Constructor. Recibe como parametro el path del archivo de configuracion
*
* @param string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
*
* @return void
* @access public
*/
function Marco($arch_configuracion) // ~X2C
{
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->_contenido[] = '
';
$this->_titulo2 = '';
}
// -X2C
// +X2C Operation 30
/**
* Funcion que permite agregar archivos de script al sistema, ademas del generico.
*
* @param string $archivo Nombre del archivo a incluir.
*
* @return void
* @access public
*/
function agregarScript($archivo) // ~X2C
{
$tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo;
$this->addScript($tmp);
}
// -X2C
// +X2C Operation 31
/**
* Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
*
* @param string $archivo Nombre del archivo a incluir.
*
* @return void
* @access public
*/
function agregarEstilo($archivo) // ~X2C
{
$tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo;
$this->addStyleSheet($tmp);
}
// -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.
*
* @param string $archivo Archivo de configuracion del sistema
*
* @return array
* @access private
*/
function _obtenerConfiguracion($archivo) // ~X2C
{
$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 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.
*
* @return string
* @access public
*/
function display() // ~X2C
{
//Agrego el header
$this->_header_display();
//Agrego el body
$this->_body_display();
$_SESSION['deshabilitar_links'] = null;
// MUESTRO EN PANTALLA LA PAGINA
parent::display();
}
// -X2C
// +X2C Operation 97
/**
* Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
*
* @param Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
*
* @return void
* @access public
*/
function addBody($body) // ~X2C
{
$this->_contenido[] = $body;
}
// -X2C
// +X2C Operation 112
/**
* Funcion que se encarga de agregar a la pagina el contenido del header
*
* @return void
* @access private
*/
function _header_display() // ~X2C
{
$tmp = $this->_titulo->darTitulo().$this->_titulo2;
$this->setTitle($tmp);
$this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
$this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
}
// -X2C
// +X2C Operation 113
/**
* Funcion que se encarga de agregar a la pagina el contenido del body
*
* @return void
* @access private
*/
function _body_display() // ~X2C
{
$this->_contenido[] = '
';
$body = array ( 'copete' => $this->_copete->toHtml(),
'body' => $this->_contenido,
'pie' => $this->_pie->toHtml(),
);
$this->_menu->addBody($body);
$this->addBodyContent($this->_menu->toHtml());
}
// -X2C
// +X2C Operation 124
/**
* Funcion que permite adosar al titulo del sistema el titulo de la pagina.
*
* @param string $titulo Titulo de la pagina.
*
* @return void
* @access public
*/
function addTitle($titulo) // ~X2C
{
$this->_titulo2 = ' - '.$titulo;
}
// -X2C
} // -X2C Class :Marco
?>