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