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