]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
471f6cb68c8db7a4d72679832901b039fba6ac6f
[mecon/meconlib.git] / lib / MECON / Marco.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: Mon Apr 14 16:23:22 2003
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'PEAR.php';
28 require_once 'MECON/Marco/Copete.php';
29 require_once 'MECON/Marco/Titulo.php';
30 require_once 'MECON/Marco/Menu.php';
31 require_once 'MECON/Marco/MenuPrincipal.php';
32
33 //Agregado para el uso de HTML_Page (Uso la version Original de Pear)
34 require_once 'HTML/Page.php';
35 require_once 'HTML/Table.php';
36
37 //Defino los directorios por default
38 define ('DIR_IMAGENES' , 'images');
39 define ('DIR_ESTILOS'  , 'css');
40 define ('DIR_JS'       , 'js');
41 define ('DIR_WWW'      , 'www');
42 define ('DIR_CACHE'    , '/tmp');
43 //
44 //Defino las constantes
45 define ('SCRIPT_DIR_BASE'  , '/MECON/js/');
46 define ('ESTILO_DIR_BASE'  , '/MECON/css/');
47 define ('SCRIPT_GENERICO'  , 'general_script.js');
48 define ('ESTILO_GENERICO'  , 'general_estilos.css');
49 //
50
51 // +X2C Class 3 :MECON_Marco
52 /**
53  * Clase que se encarga del manejo del marco en general en los sistemas de intranet.
54 Trabaja de forma general, llamando a los demas objetos para la realizacion del marco.
55  *
56  * @package MECON
57  * @access public
58  */
59 class MECON_Marco extends HTML_Page {
60     /**
61      * Array con los datos de configuracion del sistema.
62      *
63      * @var    array $configuracion
64      * @access private
65      */
66     var $_configuracion;
67
68     /**
69      * 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
70      *
71      * @var    bool $espacios
72      * @access private
73      */
74     var $_espacios = true;
75
76     /**
77      * Menu vertical para agregar en la pantalla.
78      *
79      * @var    mixed $menuVertical
80      * @access private
81      */
82     var $_menuVertical = null;
83
84     /**
85      * Mantiene el estado de los links en la pagina
86      *
87      * @var    bool $links
88      * @access private
89      */
90     var $_links = true;
91
92     // ~X2C
93
94     // +X2C Operation 26
95     /**
96      * Constructor. Recibe como parametro el path del archivo de configuracion
97      *
98      * @param  string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
99      *
100      * @return void
101      * @access public
102      */
103     function MECON_Marco($arch_configuracion) // ~X2C
104     {
105         //Creo el objeto pagina
106         parent::HTML_Page(array ('doctype'  => 'HTML 4.01 Transitional',
107                                  'charset'  => 'iso-8859-1'            ,
108                                  'lineend'  => 'unix'                  ,
109                                  'language' => 'es'                    ,
110                                  'cache'    => 'false'                 ,
111                                  'simple'   => 'true'                  ));
112         //Obtengo y arreglo la configuracion
113         $this->_obtenerConfiguracion($arch_configuracion);
114         //Agrego el estilo y el script genericos
115         $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
116         $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
117         //Seteo el titulo
118         $this->setTitle($this->_configuracion['titulo_sistema']);
119     }
120     // -X2C
121
122     // +X2C Operation 32
123     /**
124      * Funcion que se encarga de la obtencion y generacion del array de configuracion.Recibe como parametro el directorio en donde se encuentra el sistema.
125      *
126      * @param  string $archivo Archivo de configuracion del sistema
127      *
128      * @return array
129      * @access private
130      */
131     function _obtenerConfiguracion($archivo) // ~X2C
132     {
133         $this->_configuracion = include $archivo;    
134         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
135         if (!@$this->_configuracion['directorios']['root']) {
136             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
137         }
138         if (!@$this->_configuracion['directorios']['imagenes']){
139             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
140         }
141         if (!@$this->_configuracion['directorios']['estilos']){
142             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
143         }
144         if (!@$this->_configuracion['directorios']['js']){
145             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
146         }        
147         if (!@$this->_configuracion['directorios']['www']){
148             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
149         }        
150         if (!@$this->_configuracion['directorios_fs']['cache']){
151             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
152         }         
153     }
154     // -X2C
155
156
157     // +X2C Operation 97
158     /**
159      * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
160 Si es un objeto debe tener un metodo toHtml y opcionalmente puede tener un getCSS.
161      *
162      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
163      *
164      * @return void
165      * @access public
166      */
167     function addBody($body) // ~X2C
168     {
169         if ((is_object($body)) && (method_exists($body, 'getcss'))) {
170             $this->addStyleSheet($body->getCSS());
171         }
172         $this->addBodyContent($body);
173     }
174     // -X2C
175
176     // +X2C Operation 124
177     /**
178      * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
179      *
180      * @param  string $titulo Titulo de la pagina.
181      *
182      * @return void
183      * @access public
184      */
185     function addTitle($titulo) // ~X2C
186     {
187         $this->setTitle($this->_configuracion['titulo_sistema'].' - '.$titulo);
188     }
189     // -X2C
190
191     // +X2C Operation 207
192     /**
193      * Setea los espacios entre el menu principal el body y el pie de las paginas
194      *
195      * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
196      *
197      * @return void
198      * @access public
199      */
200     function setEspacios($espacios = true) // ~X2C
201     {
202         $this->_espacios = $espacios;
203     }
204     // -X2C
205
206     // +X2C Operation 214
207     /**
208      * Agrega un menu vertical a la izquierda en la pantalla. Por ahora solo funciona con MenuOculto
209      *
210      * @param  mixed $menuVertical Objeto u Html que representa el menu a mostrar.
211      *
212      * @return void
213      * @access public
214      */
215     function addMenuVertical($menuVertical) // ~X2C
216     {
217         $this->_menuVertical = $menuVertical;
218     }
219     // -X2C
220
221     // +X2C Operation 218
222     /**
223      * Permite deshabilitar la totalidad de los links desde una pagina
224      *
225      * @param  bool $param True habilita los links, False no.
226      *
227      * @return void
228      * @access public
229      */
230     function habilitarLinks($param = true) // ~X2C
231     {
232         $this->_links = $param;
233     }
234     // -X2C
235
236     // +X2C Operation 220
237     /**
238      * Devuelve el html de la pagina
239      *
240      * @return string
241      * @access public
242      */
243     function toHTML() // ~X2C
244     {
245         //Agrego la opcion seleccionada de links a la configuracion 
246         $this->_configuracion['links'] = $this->_links;
247         //Creo el menu principal
248         $menu = new MECON_Marco_MenuPrincipal ($this->_configuracion);
249         //Agrego el contenido de la pagina
250         $body = array ( 'body'         => $this->_body        , //Page
251                         'espacios'     => $this->_espacios    ,
252                         'menuVertical' => $this->_menuVertical,
253                       );
254         //Agrego el contenido al menu
255         $menu->addBody($body);       
256         //Agrego el Marco completo a Page
257         $this->setBody($menu->toHtml());
258         return parent::toHTML();
259     }
260     // -X2C
261
262 } // -X2C Class :MECON_Marco
263
264 ?>