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