]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/Marco.php
- Correccion de bugs
[mecon/meconlib.git] / lib / MECON / Marco.php
index 41b7d68bed60611d31b627050ec3f64cbb8ee157..6adc1810661635608a8b70087d704dcef89352f9 100644 (file)
@@ -1,63 +1,57 @@
-<?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 '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.
  *
- * @package MECON
  * @access public
  */
-class Marco extends HTML_Page {
+class MECON_Marco extends MECON_HTML_Page {
     /**
      * Array con los datos de configuracion del sistema.
      *
@@ -67,60 +61,12 @@ class Marco extends HTML_Page {
     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;
-
-    /**
-     * Indica si hay que agregar espacios o no entre los componentes del menu de secciones y el contenido de la pagina, asi como entre la pagina y el pie de pagina
+     * Mantiene el estado de los espacios
      *
      * @var    bool $espacios
      * @access private
      */
-    var $_espacios;
+    var $_espacios = true;
 
     /**
      * Menu vertical para agregar en la pantalla.
@@ -128,85 +74,53 @@ class Marco extends HTML_Page {
      * @var    mixed $menuVertical
      * @access private
      */
-    var $_menuVertical;
-
-    // ~X2C
+    var $_menuVertical = null;
 
-    // +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.
+     * Mantiene el estado de los links en la pagina. (True habilitados, False no)
      *
-     * @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->_espacios      = true;
-        $this->_titulo2 = ''; 
-        $this->_menuVertical = null;
-    }
-    // -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
+     * @var    bool $links
+     * @access private
      */
-    function agregarScript($archivo) // ~X2C
-    {
-        $tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo;
-        $this->addScript($tmp);
-    }
-    // -X2C
+    var $_links = true;
 
-    // +X2C Operation 31
     /**
-     * Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
+     * Constructor. Recibe como parametro el path del archivo de configuracion
      *
-     * @param  string $archivo Nombre del archivo a incluir.
+     * @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 agregarEstilo($archivo) // ~X2C
+    function MECON_Marco($arch_configuracion, $obj_permiso = null) 
     {
-        $tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo;
-        $this->addStyleSheet($tmp);
+        //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'] = '';
     }
-    // -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.
+     * 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) // ~X2C
+    function _obtenerConfiguracion($archivo) 
     {
         $this->_configuracion = include $archivo;    
         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
@@ -229,125 +143,184 @@ class Marco extends HTML_Page {
             $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.
+     * 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
      *
-     * @return string
+     * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
+     *
+     * @return void
      * @access public
      */
-    function display() // ~X2C
+    function addBody($body) 
     {
-        //Agrego el header
-        $this->_header_display();
-        //Agrego el body
-        $this->_body_display();
-
-        $_SESSION['deshabilitar_links'] = null;
+        $this->addBodyContent($body);
+    }
 
-        // MUESTRO EN PANTALLA LA PAGINA        
-        parent::display();
+    /**
+     * 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;
     }
-    // -X2C
 
-    // +X2C Operation 97
     /**
-     * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
+     * Setea la variable que define si hay que separar el body del menu
      *
-     * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
+     * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
      *
      * @return void
      * @access public
      */
-    function addBody($body) // ~X2C
+    function setEspacios($espacios = true) 
     {
-        $this->_contenido[] = $body;
+        $this->_espacios = $espacios;
     }
-    // -X2C
 
-    // +X2C Operation 112
     /**
-     * Funcion que se encarga de agregar a la pagina el contenido del header
+     * 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 private
+     * @access public
      */
-    function _header_display() // ~X2C
+    function addMenuVertical($menuVertical) 
     {
-        $tmp = $this->_titulo->darTitulo().$this->_titulo2;
-        $this->setTitle($tmp);
-        $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
-        $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
+        if ((is_object($menuVertical)) && (method_exists($menuVertical, 'getcss'))) {
+            $this->addStyleSheet($menuVertical->getCSS());
+        }
+        $this->_menuVertical = $menuVertical;
     }
-    // -X2C
 
-    // +X2C Operation 113
     /**
-     * Funcion que se encarga de agregar a la pagina el contenido del body
+     * 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 habilitarLinks($param = true) 
+    {
+        $this->_links = $param;
+    }
+
+    /**
+     * Devuelve el html de la pagina
+     *
+     * @return string
+     * @access public
      */
-    function _body_display() // ~X2C
+    function toHTML() 
     {
-        $body = array ( 'copete'       => $this->_copete->toHtml(),
-                        'espacios'     => $this->_espacios,
-                        'body'         => $this->_contenido,
-                        'menuVertical' => $this->_menuVertical,
-                        'pie'          => $this->_pie->toHtml(),
-                      );
-        $this->_menu->addBody($body);        
-        $this->addBodyContent($this->_menu->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 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('<div style="width: 760px" align="left">');
+        foreach ($menu->resultado AS $res) {
+            $this->addBodyContent($res);
+        }
+        $this->addBodyContent('</div>');
+        return parent::toHTML();
     }
-    // -X2C
 
-    // +X2C Operation 124
     /**
-     * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
+     * Funcion que permite concatenar lo pasado como parametro al titulo del sistema
      *
-     * @param  string $titulo Titulo de la pagina.
+     * @param  string $subtitulo Subtitulo a agregar
      *
      * @return void
      * @access public
      */
-    function addTitle($titulo) // ~X2C
+    function addSubTitle($subtitulo) 
     {
-        $this->_titulo2.= ' - '.$titulo;
+        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 207
     /**
-     * Setea los espacios entre el menu principal el body y el pie de las paginas
+     * Concatena lo pasado por parametro al titulo del sistema
      *
-     * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
+     * @param  string $titulo Titulo a agregar. Si se pasa vacio se borra lo que pudiera estar
      *
      * @return void
      * @access public
      */
-    function setEspacios($espacios = true) // ~X2C
+    function setTitle($titulo = '') 
     {
-        $this->_espacios = $espacios;
+        $this->_configuracion['titulo_sistema2'] = ($titulo) ? ' - '.$titulo :
+            '';
     }
-    // -X2C
 
-    // +X2C Operation 214
     /**
-     * Agrega un menu vertical a la izquierda en la pantalla. Por ahora solo funciona con MenuOculto
+     * Concatena lo pasado por parametro al titulo de seccion
      *
-     * @param  mixed $menuVertical Objeto u Html que representa el menu a mostrar.
+     * @param  string $subtitulo Setea el subtitulo. Si se pasa vacio borra lo que pudiera estar.
      *
      * @return void
      * @access public
      */
-    function addMenuVertical($menuVertical) // ~X2C
+    function setSubtitle($subtitulo = '') 
     {
-        $this->_menuVertical = $menuVertical;
+        $this->_configuracion['subtitulo'] = ($subtitulo) ? ' - '.$subtitulo :
+            '';
     }
-    // -X2C
 
-} // -X2C Class :Marco
+    /**
+     * 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 MECON_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;
+        }
+    }
+}
 ?>
\ No newline at end of file