]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/Tabla.php
Se agrega un estilo a la tabla (impresion) pedido por Myrna
[mecon/meconlib.git] / lib / MECON / HTML / Tabla.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: fri mar 21 ART 2003
22 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'HTML/Table.php';
28
29 /**
30  * Manejo de tablas.
31  *
32  * Libreria para le manejo de las tablas de los sistemas de intranet.
33  *
34  * @version $Rev$
35  * @author  $Author$
36  */
37
38 class MECON_HTML_Tabla extends HTML_Table {
39
40     /**
41      * Valores de Configuracion particular
42      *
43      * @var array
44      */
45     var $_conf;
46
47     /**
48      * Atributos de las tablas.
49      *
50      * @var array
51      */
52     var $_attrs;
53
54     /**
55      * Constructor. 
56      *
57      * Puede recibir como parametro un string con los atributos que se 
58      * quieren dar a la tabla en cuestion. Estos atributos estan
59      * seteados por default segun el archivo de configuracion.
60      *
61      * @param mixed $atributos Atributos diferentes a los estandares para la
62      * tabla
63      * @param string $estilo Tipo de tabla. (comun, servicio)
64      * 
65      * @access public
66      */
67     function MECON_HTML_Tabla($attrs = null, $estilo = 'comun') 
68     {
69         $this->_conf = include 'MECON/HTML/Tabla/estilo_'.$estilo.'.php'; // Obtengo los valores particulares de configuracion
70         // Seteo los atributos para la tabla
71         $this->_attrs = $this->_conf['atributos']['tabla_comun'];
72         //Genero el objeto HTML_Table
73         if (is_string($attrs)) {
74             $attrs = $this->_parseAttributes($attrs);
75         }
76         if (is_array($attrs)) {
77             if (isset($attrs['width'])) {
78                 $this->_attrs['width'] = $attrs['width'];
79             }
80             if (isset($attrs['bgcolor'])) {
81                 $this->_attrs['bgcolor'] = $attrs['bgcolor'];
82             }
83             if (isset($attrs['cellspacing'])) {
84                 $this->_attrs['cellspacing']  = $attrs['cellspacing'];
85             }            
86             if (isset($attrs['cellpadding'])) {
87                 $this->_attrs['cellpadding']  = $attrs['cellpadding'];
88             }            
89         }        
90         $this->HTML_Table($this->_attrs);
91     }    
92
93     /**                 
94      * Agrega una fila del tipo Cabecera
95      *
96      * Agrega una fila del tipo cabecera, tomando colores y demas del  
97      * archivo de configuracion. Recibe como parametro un array con 
98      * los datos a incluir en la linea. Agrega tantas columnas como
99      * elementos tenga el array. Si no recibe parametro alguno, 
100      * inserta una fila en blanco. Devuelve el identificador de la
101      * fila en donde inserto los datos.
102      *
103      * @param $contenido Contenido de la fila
104      *
105      * @return int Identificador de Linea
106      * 
107      * @access public
108      * @deprecated
109      */
110     function agregarFilaCabecera($contenido = '', $atributos = '')
111     {
112         return $this->addRow($contenido, 'cabecera');
113     }
114
115     /**                 
116      * Agrega una fila del tipo Comun
117      *
118      * Agrega una fila del tipo comun, tomando colores y demas del  
119      * archivo de configuracion. Recibe como parametro un array con 
120      * los datos a incluir en la linea. Agrega tantas columnas como
121      * elementos tenga el array. Si no recibe parametro alguno, 
122      * inserta una fila en blanco. Devuelve el identificador de la
123      * fila en donde inserto los datos.
124      *
125      * @param $contenido Contenido de la fila
126      *
127      * @return int Identificador de Linea
128      * 
129      * @access public
130      * @deprecated
131      */
132     function agregarFila($contenido = '')
133     {
134         return $this->addRow($contenido, 'comun');
135     }
136
137     /**                 
138      * Modifica el atributo rowSpan a la celda pasada por parametro
139      *
140      * @param int $fila
141      * @param int $columna
142      * @param int $valor
143      * 
144      * @access public
145      * @deprecated
146      */
147     function rowSpan($fila, $columna, $valor)
148     {
149         return $this->updateCellAttributes($fila, $columna, 'rowspan="'.$valor.'"');
150     }
151
152     /**                 
153      * Modifica el atributo colSpan a la celda pasada por parametro
154      *
155      * @param int $fila
156      * @param int $columna
157      * @param int $valor
158      * 
159      * @access public
160      * @deprecated
161      */
162     function colSpan($fila, $columna, $valor)
163     {
164         return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
165     }
166
167     /**                 
168      * Modifica el atributo aling de la celda pasada por parametro
169      *
170      * @param int $fila
171      * @param int $columna
172      * @param string $valor (left, center, right...)
173      * 
174      * @access public
175      * @deprecated
176      */
177     function align($fila, $columna, $valor)
178     {
179         return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"');
180     }
181
182     /**
183      * Setea una columna como del tipo cabecera    
184      *
185      * @param int $columna
186      * 
187      * @access public
188      * @deprecated
189      */
190     function setColCabecera($columna)
191     {
192         return $this->updateColAttributes($columna, 'cabecera');
193     }
194
195     /**                 
196      * Setea una columna como del tipo titulo
197      *
198      * @param int $columna
199      * 
200      * @access public
201      * @deprecated
202      */
203     function setColTitulo($columna)
204     {
205         return $this->updateColAttributes($columna, 'titulo');
206     }
207
208     /**                 
209      * Alinea una columna entera  
210      *
211      * @param int $columna
212      * @param string $valor
213      * 
214      * @access public
215      * @deprecated
216      */
217     function setColAlign($columna, $valor)
218     {
219         return $this->updateColAttributes($columna,'align="'.$valor.'"');
220     }
221
222     /**                 
223      * Cambia el tamanio de una columna entera  
224      *
225      * @param int $columna
226      * @param string $valor
227      * 
228      * @access public
229      * @deprecated
230      */
231     function setColWidth($columna, $valor)
232     {
233         return $this->updateColAttributes($columna,'width="'.$valor.'"');
234     }
235
236     /**                 
237      * Cambia el color de fondo de una celda  
238      *
239      * @param int $fila
240      * @param int $columna
241      * @param string $valor
242      *
243      * @access public
244      * @deprecated
245      */
246     function setCellBgcolor($fila, $columna, $valor)
247     {
248         return $this->updateCellAttributes($fila, $columna,'bgcolor="'.$valor.'"');
249     }
250
251     /**                 
252      * Devuelve el html de la tabla
253      *
254      * Devuelve el html de la tabla para que sea mostrado.
255      * Como parametro recibe el indicador de tabla simple.
256      * Si $simple es falso, devuelve el html comun y corriente (con 2
257      * tablas), si es false devuelve una tabla sola.
258      *
259      * @param bool $simple
260      *
261      * @return string Html
262      * 
263      * @access public
264      */
265     function toHtml($simple = 0)
266     {
267         // Agregar la tabla de fondo.
268         if ($simple) {
269             $result = parent::toHtml();
270         } else {
271             $contenedora = $this->_conf['atributos']['tabla_contenedora'];
272             $contenedora['width'] = $this->getAttribute('width');
273             $this->updateAttributes(array('width' => '100%'));
274             $tabla_externa =  new HTML_Table($contenedora);
275             $tabla_externa->addRow(array(parent::toHtml()),
276                 $this->_conf['atributos']['celda_contenedora']);
277             $result = $tabla_externa->toHtml();    
278         }
279
280         return $result;
281     }
282
283     /**
284      * Cambia las propiedades de una celda
285      *
286      * Cambia las propiedades de una celda. Si $attrs es un array
287      * asociativo, se setean los atributos representados por las claves
288      * con los valores.
289      *
290      * @param int $row
291      * @param int $col
292      * @param mixed $attrs
293      *
294      * @access public
295      */
296     function updateCellAttributes($row, $col, $attrs)
297     {
298         return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs));
299     }
300
301     /**
302      * Establece las propiedades de una celda
303      *
304      * Establece las propiedades de una celda. Si $attrs es un array
305      * asociativo, se setean los atributos representados por las claves
306      * con los valores.
307      *
308      * @param int $row
309      * @param int $col
310      * @param mixed $attrs
311      *
312      * @access public
313      */
314     function setCellAttributes($row, $col, $attrs)
315     {
316         return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs));
317     }
318
319     /**
320      * Agrega una fila
321      *
322      * Agrega una fila. El contenido es el que viene representado por 
323      * el array $content. Recibe los atributos en la variable $attrs
324      *
325      * @param mixed $content
326      * @param mixed $attrs
327      *
328      * @return int $rowId
329      *
330      * @access public
331      */
332     function addRow($content, $attrs = 'comun')
333     {
334         return parent::addRow($content, $attrs);
335     }
336     
337     /**
338      * Convierte un atributo a string
339      * 
340      * Convierte un atributo HTML al string para pasar a los metodos de HTML_Table
341      * Recibe en $attrs los atributos a modificar.
342      *
343      * @param string $attrs
344      *
345      * @return string
346      * @access private
347      */
348     function _translateAttributes($attrs) 
349     {
350         if (!$attrs) {
351             return array();
352         }
353         if (is_string($attrs)) {
354             $attrs = $this->_parseAttributes($attrs);
355         }
356         #$rta = array();
357         $rta = $this->_conf['atributos']['celda_comun'];
358         #$sin_estilo = true;
359         foreach ($attrs as $attr => $val) {
360             $attr = strtolower($attr);
361             switch ($attr) {
362                 // Estilos de celda
363                 case 'comun':
364                 case 'cabecera':
365                 case 'titulo':
366                     #$sin_estilo = false;
367                     $rta = array_merge($rta, $this->_conf['atributos']["celda_$attr"]);
368                     break;
369                 case 'align':
370                 case 'valign':
371                 case 'width':
372                 case 'height':
373                 case 'rowspan':
374                 case 'colspan':
375                 case 'bgcolor':
376                 case 'class':
377                 case 'border':
378                 case 'cellspacing':
379                 case 'cellpadding':
380                 case 'nowrap':
381                     $rta[$attr] = $val;
382                     break;
383                 case 'spacing':
384                 case 'padding':
385                     $rta["cell$attr"] = $val;
386                     break;
387                 case 'th':
388                     $rta[$attr] = '';
389                     break;
390                 default:
391                     trigger_error("No se permite setear el atributo $attr", E_USER_ERROR);
392             }
393         }
394         // Si no tiene estilo, agrego estilo comun.
395         #if ($sin_estilo) {
396             #$rta = $this->_conf['atributos']['celda_comun'];
397         #}
398         return $rta;
399     }
400
401 }
402
403 ?>