]> git.llucax.com Git - mecon/meconlib.git/blobdiff - marco/php/marco/Marco.php
- PRIMERA VERSION LISTA......faltan arreglos visuales y de coqueteria, pero la funcio...
[mecon/meconlib.git] / marco / php / marco / Marco.php
index 3f1c114efcc09b3774ae3f7a1df9e00937ebddfb..2687c7bb5109ad81e54a9dba07f5f1886a4af748 100644 (file)
 <?php
 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
-// +--------------------------------------------------------------------+
-// |                            MARCO                                   |
-// +--------------------------------------------------------------------+
-// |   Liberia generica para el manejo del marco de los sistemas        |
-// |                      Ministerio de Economía                        |
-// +--------------------------------------------------------------------+
-// | Creado: thu apr 03 ART 2003                                        |
-// | Autor:  Martin Marrese <mmarre@mecon.gov.ar>                       |
-// +--------------------------------------------------------------------+
-// 
+// +----------------------------------------------------------------------+
+// | 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$
-// $Rev$
 // $Date$
-// $Author$
+// $Rev$
+//
 
 require_once 'PEAR.php';
-require_once 'include/lib/HTML/Tabla.php';
-require_once 'include/lib/Marco/Marco.php';
-require_once 'include/lib/Marco/Marco.php';
+require_once 'include/lib/marco/Copete.php';
+require_once 'include/lib/marco/Titulo.php';
+require_once 'include/lib/marco/Pie.php';
+require_once 'include/lib/marco/Menu.php';
+
+//Agregado para el uso de HTML_Page (Uso la version Original de Pear)
+require_once 'include/lib/HTML/Page.php';
+require_once 'include/lib/HTML/Table.php';
 
+define ('SISTEMA_DIR_BASE', '/www/sistemas');
+define ('SCRIPT_DIR_BASE' , '/www/js/');
+define ('ESTILO_DIR_BASE' , '/www/css/');
+define ('SCRIPT_GENERICO' , 'script.js');
+define ('ESTILO_GENERICO' , 'estilos.css');
+
+
+// +X2C Class 3 :Marco
 /**
- * Manejo del Copete
- *
- * Libreria para le manejo de los copetes para los sistemas de intranet.
+ * 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.
  *
- * @version $Rev$
- * @author  $Author$
+ * @access public
  */
-
-class Marco extends PEAR {
-
+class Marco extends HTML_Page {
     /**
-     * Directorio del sistema partiendo desde var/www/intranet/www/sistemas/
+     * Nombre del directorio en donde se encuentra el sistema.
      *
-     * @var integer
+     * @var    string $directorio
+     *
+     * @access private
      */
     var $_directorio;
 
     /**
-     * Objeto Titulo del sistema
+     * Array con los datos de configuracion del sistema.
+     *
+     * @var    array $configuracion
+     *
+     * @access private
+     */
+    var $_configuracion;
+
+    /**
+     * Referencia al objeto Titulo.
+     *
+     * @var    Titulo $titulo
      *
-     * @var Object
+     * @access private
      */
     var $_titulo;
 
     /**
-     * Objeto Copete del sistema
+     * Titulo que quiere agregar el usuario al titulo del sistema
+     *
+     * @var    string $titulo2
+     *
+     * @access private
+     */
+    var $_titulo2;
+
+    /**
+     * Referencia al objeto Copete.
+     *
+     * @var    Copete $copete
      *
-     * @var Object
+     * @access private
      */
     var $_copete;
-    
+
     /**
-     * Objeto Script del sistema
+     * Referencia al objeto Menu.
      *
-     * @var Object
+     * @var    Menu $menu
+     *
+     * @access private
      */
-    var $_script;
+    var $_menu;
 
     /**
-     * Objeto Estilo del sistema
+     * Referencia al objeto Pie.
+     *
+     * @var    Pie $pie
      *
-     * @var Object
+     * @access private
      */
-    var $_estilo;
+    var $_pie;
 
     /**
-     * Objeto Secciones del sistema
+     * Html de lo que se quiere incluir
      *
-     * @var Object
+     * @var    string $contenido
+     *
+     * @access private
      */
-    var $_secciones;
+    var $_contenido;
+
+    // ~X2C
 
+    // +X2C Operation 26
     /**
-     * Objeto Pie del sistema
+     * Constructor. Recibe como parametro el nombre del directorio en donde se encuentra el sistema.
      *
-     * @var Object
+     * @param  string $directorio Nombre del directorio en donde se encuentra el sistema.
+     *
+     * @return void
+     *
+     * @access public
      */
-    var $_pie;
+    function Marco($directorio) // ~X2C
+    {
+     //   var_dump(get_included_files());
+    
+        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 Menu      ($this->_directorio,null);
+        $this->_pie           = new Pie       ($this->_configuracion);
+        $this->_contenido     = array ();
+    }
+    // -X2C
+
+    // +X2C Operation 27
+    /**
+     * Funcion que devuelve un string en html para ser agregado en el prepend.php del sistema.
+     *
+     * @return string
+     *
+     * @access public
+     */
+    function toHtmlPrepend() // ~X2C
+    {
+/*      $row = array ('colspan' => $this->_configuracion['menu'] + 1);       
+        Hook::hash('marco-html01');
+        print $this->_titulo->toHtml(); //Agrego el titulo del sistema segun su archivo de configuracion
+        Hook::hash('marco-html02');
+        Hook::hash('marco-html03',$row); 
+        print $this->_copete->toHtml(); //Agrego el copete del sistema
+        Hook::hash('marco-html04');
+        Hook::hash('marco-html03',$row);            
+        print $this->_menu->toHtmlSecciones();   //Agrego las secciones del sistema
+                                        //Agrego el titulo de la seccion de ser necesario
+        Hook::hash('marco-html04');
+        Hook::hash('marco-html03',$row);
+        //ACA TENGO QUE VER COMO METO LOS MENUES VERTICALES
+        //ACA QUEDA LISTO PARA QUE SE AGREGUEN EN EL MEDIO LAS PAGINAS DEL SISTEMA       
+*/
+    }
+    // -X2C
 
+    // +X2C Operation 29
     /**
-     * Constructor
+     * Funcion que devuelve un string html para ser agregado al append.php del sistema.
      *
-     * Recibe como parametro el directorio del sistema. Es case sensitive.
+     * @return string
      *
-     * @param string $directorio
-     * 
      * @access public
      */
-    function Marco ($directorio)
+    function toHtmlAppend() // ~X2C
     {
-        $this->_directorio = $directorio;        
-        $this->_titulo     = new Titulo    ($this->directorio);
-        $this->_copete     = new Copete    ($this->directorio);
-        $this->_script     = new Script    ($this->directorio);
-        $this->_estilo     = new Estilo    ($this->directorio);
-        $this->_secciones  = new Secciones ($this->directorio);
-        $this->_pie        = new Pie       ($this->directorio);
+/*      $row = array ('colspan' => $this->_configuracion['menu'] + 1);
+        Hook::hash('marco-html04');
+        Hook::hash('marco-html03',$row);
+        print $this->_pie->toHtml(); //Agrego el pie de pagina al sistema
+        print "\n";
+        Hook::hash('marco-html04');
+        Hook::hash('marco-html05');
+*/      
+    }
+    // -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 = SISTEMA_DIR_BASE.'/'.$this->_directorio.SCRIPT_DIR_BASE.$archivo;
+        $this->addScript($tmp);
     }
+    // -X2C
 
+    // +X2C Operation 31
     /**
-     * Funcion para agregar a prepend.php
+     * Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
      *
-     * Devuelve el html para que se imprima lo que corresponde
-     * a la cabecera de la pagina
+     * @param  string $archivo Nombre del archivo a incluir.
+     *
+     * @return void
      *
      * @access public
      */
-    function toHtmlPrepend()
+    function agregarEstilo($archivo) // ~X2C
+    {
+        $tmp = SISTEMA_DIR_BASE.'/'.$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.
+     *
+     * @return array
+     *
+     * @access private
+     */
+    function _obtenerConfiguracion() // ~X2C
     {
-        $HTML = ''; //Variable que contiene el html a imprimir
-       
-        $HTML.= include 'include/lib/Marco/Marco/marco_html_01.php';
-        $HTML.="\n".$this->_titulo->toHtml(); //Agrego el titulo del sistema segun su archivo de configuracion
-        $HTML.="\n".$this->_script->toHtml(); //Agrego el archivo de script generico como aquellos que se agregaron despues
-        $HTML.="\n".$this->_estilo->toHtml(); //Agrego el archivo de estilo generico como aquellos que se agregaron despues
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_02.php';
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_04.php';
-        $HTML.="\n".$this->_copete->toHtml(); //Agrego el copete del sistema
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_03.php';
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_04.php';
-        $HTML.="\n".$this->_secciones->toHtml(); //Agrego las secciones al sistema
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_03.php';
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_04.php';
-
-        //ACA QUEDA LISTO PARA QUE SE AGREGUEN EN EL MEDIO LAS PAGINAS DEL SISTEMA
-       
-        return $HTML;
+        $this->_configuracion = include 'www/sistemas/'.$this->_directorio.'/conf/configuracion.php';
     }
+    // -X2C
 
+    // +X2C Operation 91
     /**
-     * Funcion para agregar a append.php
+     * 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 para que se imprima lo que corresponde
-     * a el pie de la pagina
+     * @return string
      *
      * @access public
      */
-    function toHtmlAppend()
+    function display() // ~X2C
     {
-        $HTML = ''; //Variable que contiene el html a imprimir
-       
-        $HTML.= include 'include/lib/Marco/Marco/marco_html_03.php';
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_04.php';
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_03.php';
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_04.php';
-        $HTML.="\n".$this->_pie->toHtml(); //Agrego el pie de pagina al sistema
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_03.php';
-        $HTML.="\n". include 'include/lib/Marco/Marco/marco_html_05.php';
-       
-        return $HTML;
+        //Agrego el header
+        $this->_header_display();
+        //Agrego el body
+        $this->_body_display();
+        // MUESTRO EN PANTALLA LA PAGINA
+        parent::display();
+        // SI ESTOY FUNCIONA SOY FELIZ....->MARTIN MARRESE
     }
+    // -X2C
 
+    // +X2C Operation 97
     /**
-     * Funcion para agregar scripts
      *
-     * Funcion que sirve para linkear mas archivos de script
-     * ademas de los genericos. Lo va a buscar al directorio
-     * js dentro del directorio del sistema.
+     * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
      *
-     * @param string nombre_archivo
+     * @return void
      *
      * @access public
      */
-    function agregarScript ($archivo)
+    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->addMetaData("author", 'Martin Marrese <mmarre@mecon.gov.ar>');   
+        $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->_script->agregarArchivo($archivo);
+        $TABLA_GRANDE = new HTML_Table('width=760 align="center" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" border="0"');
+        
+        //Agrego el body
+        $row = array ($this->_copete->darCopete());
+        $TABLA_GRANDE->addRow($row,"align=\"center\" bgcolor=\"#FFFFFF\"");
+        //Agrego las secciones
+        $row = array ($this->_menu->toHtmlSecciones());
+        $TABLA_GRANDE->addRow($row,"align=\"center\" bgcolor=\"#CCCCCC\"");
+        
+        /// {{{ Lo tabulo yo para entenderlo -> GRACIAS VUELVA PRONTO -> mmarre
+            $TABLA_INTERNA = new HTML_Table('width=760 align="center" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" border="0"');
+            //Armo el body completo (con menu o titulo)
+            $contenido = '';
+            foreach ($this->_contenido as $cont) {
+                if (is_object($cont)) {
+                    if (method_exists($cont,'toHtml')) {
+                        $contenido.= $cont->toHtml();
+                    }
+                    else {
+                        trigger_error('Error, method not found!', E_USER_WARNING);       
+                    }
+                }
+                else {
+                    $contenido.= $cont;
+                }
+            }
+
+            //Obtengo el menu de la seccion seleccionada
+            if (isset($_SESSION['tipoMenu'])){
+                $row = array ($_SESSION['menuHtml']);
+                if (($_SESSION['tipoMenu'] == 'vertical')) {
+                    $ri = $TABLA_INTERNA->addRow($row,"align=\"left\" bgcolor=\"#FFFFFF\" valign=\"top\"");
+                    $row = array ($contenido);
+                    $TABLA_INTERNA->setCellContents($ri,1,$row);                
+                    $TABLA_INTERNA->setCellAttributes($ri,1,"align=\"center\" bgcolor=\"#FFFFFF\"");
+                }
+                else {
+                    $TABLA_INTERNA->addRow($row,"align=\"center\" bgcolor=\"#FFFFFF\"");
+                    $row = array ($contenido);
+                    $TABLA_INTERNA->addRow($row,"align=\"center\" bgcolor=\"#FFFFFF\"");
+                }
+            }
+            else {
+                $row = array ($contenido);
+                $TABLA_INTERNA->addRow($row,"align=\"center\" bgcolor=\"#FFFFFF\"");
+            }
+        /// }}}
+        
+        //Agrego el body completo (con menu o titulo) a la tabla externa.
+        $row = array ($TABLA_INTERNA);
+        $TABLA_GRANDE->addRow($row,"align=\"center\" bgcolor=\"#FFFFFF\"");
+        //Agrego el pie de pagina
+        $row = array ($this->_pie->darPie());
+        $TABLA_GRANDE->addRow($row,"align=\"center\" bgcolor=\"#CCCCCC\"");
+        
+        $this->addBodyContent($TABLA_GRANDE->toHtml());
+
+        //TODO: tengo que ver como salvarme de usar $_SESSION['menuHtml']
+        unset($_SESSION['tipoMenu']);
+        unset($_SESSION['menuHtml']);
     }
+    // -X2C
+
+    // +X2C Operation 124
     /**
-     * Funcion para agregar estilos
+     * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
      *
-     * Funcion que sirve para linkear mas archivos de estilos
-     * ademas de los genericos. Lo va a buscar al directorio
-     * css dentro del directorio del sistema.
+     * @param  string $titulo Titulo de la pagina.
      *
-     * @param string nombre_archivo
+     * @return void
      *
      * @access public
      */
-    function agregarEstilo ($archivo)
+    function addTitle($titulo) // ~X2C
     {
-        $this->_estilo->agregarArchivo($archivo);
+        $this->_titulo2 = ' - '.$titulo;
     }
-  
-}
+    // -X2C
+
+} // -X2C Class :Marco
+
 ?>