]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Marco.php
0b0ead5f2c2ea1fec409d8472ea87e4eb35bf7db
[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' , '/www/images');
40 define ('DIR_ESTILOS'  , '/www/css');
41 define ('DIR_JS'       , '/www/js');
42 define ('DIR_WWW'      , 'www');
43 define ('DIR_CACHE'    , '/tmp');
44 //
45 //Defino las constantes
46 define ('SCRIPT_DIR_BASE'  , '/www/js/');
47 define ('ESTILO_DIR_BASE'  , '/www/css/');
48 define ('SCRIPT_GENERICO'  , 'script.js');
49 define ('ESTILO_GENERICO'  , '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     // ~X2C
117
118     // +X2C Operation 26
119     /**
120      * Constructor. Recibe como parametro el path del archivo de configuracion
121      *
122      * @param  string $arch_configuracion Nombre del directorio en donde se encuentra el sistema.
123      *
124      * @return void
125      * @access public
126      */
127     function Marco($arch_configuracion) // ~X2C
128     {
129         parent::HTML_Page(array ('doctype'=>'HTML 4.01 Transitional',
130                                  'charset'  => 'iso-8859-1',
131                                  'lineend'  => 'unix',
132                                  'language' => 'es',
133                                  'cache'    => 'false',
134                                  'simple'   => 'true'));
135         
136         $this->_obtenerConfiguracion($arch_configuracion);
137         
138         $this->_titulo        = new Titulo          ($this->_configuracion['titulo_sistema']);
139         $this->_copete        = new Copete          ($this->_configuracion['directorios']['imagenes']);
140         $this->_menu          = new MenuPrincipal   ($this->_configuracion);
141         $this->_pie           = new Pie             ($this->_configuracion);
142         $this->_contenido     = array ();
143         $this->_contenido[] = '<br>';
144
145         $this->_titulo2 = ''; 
146     }
147     // -X2C
148
149
150
151     // +X2C Operation 30
152     /**
153      * Funcion que permite agregar archivos de script al sistema, ademas del generico.
154      *
155      * @param  string $archivo Nombre del archivo a incluir.
156      *
157      * @return void
158      * @access public
159      */
160     function agregarScript($archivo) // ~X2C
161     {
162         $tmp = $this->_directorio.SCRIPT_DIR_BASE.$archivo;
163         $this->addScript($tmp);
164     }
165     // -X2C
166
167     // +X2C Operation 31
168     /**
169      * Funcion que permite agregar archivos de estilo al sistema, ademas del generico.
170      *
171      * @param  string $archivo Nombre del archivo a incluir.
172      *
173      * @return void
174      * @access public
175      */
176     function agregarEstilo($archivo) // ~X2C
177     {
178         $tmp = $this->_directorio.ESTILO_DIR_BASE.$archivo;
179         $this->addStyleSheet($tmp);
180     }
181     // -X2C
182
183     // +X2C Operation 32
184     /**
185      * Funcion que se encarga de la obtencion y generacion del array de configuracion.Recibe como parametro el directorio en donde se encuentra el sistema.
186      *
187      * @param  string $archivo Archivo de configuracion del sistema
188      *
189      * @return array
190      * @access private
191      */
192     function _obtenerConfiguracion($archivo) // ~X2C
193     {
194         $this->_configuracion = include $archivo;    
195         //Verifico que existan los directorios, si no es asi los reemplazo por los defaults
196         if (!@$this->_configuracion['directorios']['root']) {
197             trigger_error('Es obligatorio ingresar el directorio root!', E_USER_ERROR); 
198         }
199         if (!@$this->_configuracion['directorios']['imagenes']){
200             $this->_configuracion['directorios']['imagenes'] = $this->_configuracion['directorios']['root'].'/'.DIR_IMAGENES;
201         }
202         if (!@$this->_configuracion['directorios']['estilos']){
203             $this->_configuracion['directorios']['estilos'] = $this->_configuracion['directorios']['root'].'/'.DIR_ESTILOS;
204         }
205         if (!@$this->_configuracion['directorios']['js']){
206             $this->_configuracion['directorios']['js'] = $this->_configuracion['directorios']['root'].'/'.DIR_JS;
207         }        
208         if (!@$this->_configuracion['directorios']['www']){
209             $this->_configuracion['directorios']['www'] = $this->_configuracion['directorios']['root'].'/'.DIR_WWW;
210         }        
211         if (!@$this->_configuracion['directorios_fs']['cache']){
212             $this->_configuracion['directorios_fs']['cache'] = DIR_CACHE;
213         }         
214     }
215     // -X2C
216
217     // +X2C Operation 91
218     /**
219      * 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.
220      *
221      * @return string
222      * @access public
223      */
224     function display() // ~X2C
225     {
226         //Agrego el header
227         $this->_header_display();
228         //Agrego el body
229         $this->_body_display();
230
231         $_SESSION['deshabilitar_links'] = null;
232
233         // MUESTRO EN PANTALLA LA PAGINA        
234         parent::display();
235     }
236     // -X2C
237
238     // +X2C Operation 97
239     /**
240      * Redefinicion de la funcion que permite agregar o adosar elementos o string al body de la pagina
241      *
242      * @param  Mixed $body Mixed. Recibe el contenido a agregar como body de la pagina
243      *
244      * @return void
245      * @access public
246      */
247     function addBody($body) // ~X2C
248     {
249         $this->_contenido[] = $body;
250     }
251     // -X2C
252
253     // +X2C Operation 112
254     /**
255      * Funcion que se encarga de agregar a la pagina el contenido del header
256      *
257      * @return void
258      * @access private
259      */
260     function _header_display() // ~X2C
261     {
262         $tmp = $this->_titulo->darTitulo().$this->_titulo2;
263         $this->setTitle($tmp);
264         $this->addScript(SCRIPT_DIR_BASE.SCRIPT_GENERICO);
265         $this->addStyleSheet(ESTILO_DIR_BASE.ESTILO_GENERICO);
266     }
267     // -X2C
268
269     // +X2C Operation 113
270     /**
271      * Funcion que se encarga de agregar a la pagina el contenido del body
272      *
273      * @return void
274      * @access private
275      */
276     function _body_display() // ~X2C
277     {
278         $this->_contenido[] = '<br>&nbsp;';
279         $body = array ( 'copete' => $this->_copete->toHtml(),
280                         'body'   => $this->_contenido,
281                         'pie'    => $this->_pie->toHtml(),
282                       );
283         $this->_menu->addBody($body);        
284         $this->addBodyContent($this->_menu->toHtml());
285     }
286     // -X2C
287
288     // +X2C Operation 124
289     /**
290      * Funcion que permite adosar al titulo del sistema el titulo de la pagina.
291      *
292      * @param  string $titulo Titulo de la pagina.
293      *
294      * @return void
295      * @access public
296      */
297     function addTitle($titulo) // ~X2C
298     {
299         $this->_titulo2 = ' - '.$titulo;
300     }
301     // -X2C
302
303 } // -X2C Class :Marco
304
305 ?>