]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
Se corrigen bugs.
[mecon/meconlib.git] / lib / MECON / Marco.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +----------------------------------------------------------------------+
4 // | PHP Version 4                                                        |
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group                                |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.02 of the PHP license,      |
9 // | that is bundled with this package in the file LICENSE, and is        |
10 // | available at through the world-wide-web at                           |
11 // | http://www.php.net/license/2_02.txt.                                 |
12 // | If you did not receive a copy of the PHP license and are unable to   |
13 // | obtain it through the world-wide-web, please send a note to          |
14 // | license@php.net so we can mail you a copy immediately.               |
15 // +----------------------------------------------------------------------+
16 // | Created: Mon Apr 14 16:23:22 2003
17 // | Author:  Martin Marrese <mmarre@mecon.gov.ar>
18 // +----------------------------------------------------------------------+
19 //
20 // $Id$
21 // $Author$
22 // $URL$
23 // $Date$
24 // $Rev$
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/Pie.php';
31 require_once 'MECON/Marco/Menu.php';
32 require_once 'MECON/Marco/MenuPrincipal.php';
33
34 //Agregado para el uso de HTML_Page (Uso la version Original de Pear)
35 require_once 'HTML/Page.php';
36 require_once 'HTML/Table.php';
37
38 //Defino los directorios por default
39 define ('DIR_IMAGENES' , 'images');
40 define ('DIR_ESTILOS'  , 'css');
41 define ('DIR_JS'       , 'js');
42 define ('DIR_WWW'      , 'www');
43 define ('DIR_CACHE'    , '/tmp');
44 //
45 //Defino las constantes
46 define ('SCRIPT_DIR_BASE'  , '/MECON/js/');
47 define ('ESTILO_DIR_BASE'  , '/MECON/css/');
48 define ('SCRIPT_GENERICO'  , 'general_script.js');
49 define ('ESTILO_GENERICO'  , 'general_estilos.css');
50 //
51
52 // +X2C Class 3 :Marco
53 /**
54  * Clase que se encarga del manejo del marco en general en los sistemas de intranet.
55 Trabaja de forma general, llamando a los demas objetos para la realizacion del marco.
56  *
57  * @access public
58  */
59 class 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      * Referencia al objeto Titulo.
70      *
71      * @var    Titulo $titulo
72      * @access private
73      */
74     var $_titulo;
75
76     /**
77      * Titulo que quiere agregar el usuario al titulo del sistema
78      *
79      * @var    string $titulo2
80      * @access private
81      */
82     var $_titulo2;
83
84     /**
85      * Referencia al objeto Copete.
86      *
87      * @var    Copete $copete
88      * @access private
89      */
90     var $_copete;
91
92     /**
93      * Referencia al objeto Menu.
94      *
95      * @var    Menu $menu
96      * @access private
97      */
98     var $_menu;
99
100     /**
101      * Referencia al objeto Pie.
102      *
103      * @var    Pie $pie
104      * @access private
105      */
106     var $_pie;
107
108     /**
109      * Html u objetos que se quieren incluir a la pagina
110      *
111      * @var    array $contenido
112      * @access private
113      */
114     var $_contenido;
115
116     /**
117      * 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
118      *
119      * @var    bool $espacios
120      * @access private
121      */
122     var $_espacios;
123
124     // ~X2C
125
126     // +X2C Operation 26
127     /**
128      * Constructor. Recibe como parametro el path del archivo de configuracion
129      *
130      * @param  string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
131      *
132      * @return void
133      * @access public
134      */
135     function Marco($arch_configuracion)// ~X2C
136     {
137         parent::HTML_Page(array ('doctype'=>'HTML 4.01 Transitional',
138                                  'charset'  => 'iso-8859-1',
139                                  'lineend'  => 'unix',
140                                  'language' => 'es',
141                                  'cache'    => 'false',
142                                  'simple'   => 'true'));
143         
144         $this->_obtenerConfiguracion($arch_configuracion);
145         
146         $this->_titulo        = new Titulo          ($this->_configuracion['titulo_sistema']);
147         $this->_copete        = new Copete          ($this->_configuracion['directorios']['imagenes']);
148         $this->_menu          = new MenuPrincipal   ($this->_configuracion);
149         $this->_pie           = new Pie             ($this->_configuracion);
150         $this->_contenido     = array ();
151         $this->_espacios      = true;
152         $this->_titulo2 = ''; 
153     }
154     // -X2C
155
156
157
158     // +X2C Operation 30
159     /**
160      * Funcion que permite agregar archivos de script al sistema, ademas del generico.
161      *
162      * @param  string $archivo Nombre del archivo a incluir.
163      *
164      * @return void
165      * @access public
166      */
167     function agregarScript($archivo)// ~X2C
168     {
169         $tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo;
170         $this->addScript($tmp);
171     }
172     // -X2C
173
174     // +X2C Operation 31
175     /**
176      * Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
177      *
178      * @param  string $archivo Nombre del archivo a incluir.
179      *
180      * @return void
181      * @access public
182      */
183     function agregarEstilo($archivo)// ~X2C
184     {
185         $tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo;
186         $this->addStyleSheet($tmp);
187     }
188     // -X2C
189
190     // +X2C Operation 32
191     /**
192      * Funcion que se encarga de la obtencion y generacion del array de configuracion.Recibe como parametro el directorio en donde se encuentra el sistema.
193      *
194      * @param  string $archivo Archivo de configuracion del sistema
195      *
196      * @return array
197      * @access private
198      */
199     function _obtenerConfiguracion($archivo)// ~X2C
200     {
201         $this->_configuracion = include $archivo;    
202         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
203         if (!@$this->_configuracion['directorios']['root']) {
204             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
205         }
206         if (!@$this->_configuracion['directorios']['imagenes']){
207             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
208         }
209         if (!@$this->_configuracion['directorios']['estilos']){
210             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
211         }
212         if (!@$this->_configuracion['directorios']['js']){
213             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
214         }        
215         if (!@$this->_configuracion['directorios']['www']){
216             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
217         }        
218         if (!@$this->_configuracion['directorios_fs']['cache']){
219             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
220         }         
221     }
222     // -X2C
223
224     // +X2C Operation 91
225     /**
226      * 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.
227      *
228      * @return string
229      * @access public
230      */
231     function display()// ~X2C
232     {
233         //Agrego el header
234         $this->_header_display();
235         //Agrego el body
236         $this->_body_display();
237
238         $_SESSION['deshabilitar_links'] = null;
239
240         // MUESTRO EN PANTALLA LA PAGINA        
241         parent::display();
242     }
243     // -X2C
244
245     // +X2C Operation 97
246     /**
247      * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
248      *
249      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
250      *
251      * @return void
252      * @access public
253      */
254     function addBody($body)// ~X2C
255     {
256         $this->_contenido[] = $body;
257     }
258     // -X2C
259
260     // +X2C Operation 112
261     /**
262      * Funcion que se encarga de agregar a la pagina el contenido del header
263      *
264      * @return void
265      * @access private
266      */
267     function _header_display()// ~X2C
268     {
269         $tmp = $this->_titulo->darTitulo().$this->_titulo2;
270         $this->setTitle($tmp);
271         $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
272         $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
273     }
274     // -X2C
275
276     // +X2C Operation 113
277     /**
278      * Funcion que se encarga de agregar a la pagina el contenido del body
279      *
280      * @return void
281      * @access private
282      */
283     function _body_display()// ~X2C
284     {
285         $body = array ( 'copete'   => $this->_copete->toHtml(),
286                         'espacios' => $this->_espacios,
287                         'body'     => $this->_contenido,
288                         'pie'      => $this->_pie->toHtml(),
289                       );
290         $this->_menu->addBody($body);        
291         $this->addBodyContent($this->_menu->toHtml());
292     }
293     // -X2C
294
295     // +X2C Operation 124
296     /**
297      * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
298      *
299      * @param  string $titulo Titulo de la pagina.
300      *
301      * @return void
302      * @access public
303      */
304     function addTitle($titulo)// ~X2C
305     {
306         $this->_titulo2.= ' - '.$titulo;
307     }
308     // -X2C
309
310     // +X2C Operation 207
311     /**
312      * Setea los espacios entre el menu principal el body y el pie de las paginas
313      *
314      * @param  bool $espacios Si es verdadero agrega los espacios, sino los elimina
315      *
316      * @return void
317      * @access public
318      */
319     function setEspacios($espacios = true)// ~X2C
320     {
321         $this->_espacios = $espacios;
322     }
323     // -X2C
324
325 } // -X2C Class :Marco
326
327 ?>