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