1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3 Ministerio de EconomÃa
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
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)
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.
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 -------------------------------------------------------------------------------
25 -----------------------------------------------------------------------------*/
27 require_once 'HTML/Table.php';
30 * Libreria para le manejo de las tablas de los sistemas de intranet.
33 class MECON_HTML_Tabla extends HTML_Table {
36 * Valores de Configuracion particular
44 * Atributos de las tablas.
53 * Puede recibir como parametro un string con los atributos que se
54 * quieren dar a la tabla en cuestion. Estos atributos estan
55 * seteados por default segun el archivo de configuracion.
56 * Ademas puede recibir la indicacion de algun estilo en particular.
58 * @param mixed $atributos Atributos diferentes a los estandares para la tabla
59 * @param string $estilo Tipo de tabla
63 function MECON_HTML_Tabla($attrs = null, $estilo = 'comun')
65 // Obtengo los valores particulares de configuracion.
66 $this->_conf = include(dirname(__FILE__) . '/Tabla/estilo_' . $estilo . '.php');
67 // Seteo los atributos para la tabla
68 $this->_attrs = $this->_conf['atributos']['tabla_comun'];
69 //Genero el objeto HTML_Table
70 if (is_string($attrs)) {
71 $attrs = $this->_parseAttributes($attrs);
73 if (is_array($attrs)) {
74 if (isset($attrs['width'])) {
75 $this->_attrs['width'] = $attrs['width'];
77 if (isset($attrs['bgcolor'])) {
78 $this->_attrs['bgcolor'] = $attrs['bgcolor'];
80 if (isset($attrs['cellspacing'])) {
81 $this->_attrs['cellspacing'] = $attrs['cellspacing'];
83 if (isset($attrs['cellpadding'])) {
84 $this->_attrs['cellpadding'] = $attrs['cellpadding'];
87 $this->HTML_Table($this->_attrs);
88 if (isset($attrs['align'])) {
89 $this->_attrs['align'] = $attrs['align'];
95 * Agrega una fila del tipo cabecera tomando colores y demas del
96 * archivo de configuracion. Recibe como parametro un array con
97 * los datos a incluir en la linea. Agrega tantas columnas como
98 * elementos tenga el array. Si no recibe parametro alguno,
99 * inserta una fila en blanco. Devuelve el identificador de la
100 * fila en donde inserto los datos.
102 * @param array() $contenido Contenido de la fila
104 * @return int Identificador de Linea
108 function agregarFilaCabecera($contenido = '', $atributos = '')
110 return $this->addRow($contenido, 'cabecera');
114 * Agrega una fila del tipo comun, tomando colores y demas del
115 * archivo de configuracion. Recibe como parametro un array con
116 * los datos a incluir en la linea. Agrega tantas columnas como
117 * elementos tenga el array. Si no recibe parametro alguno,
118 * inserta una fila en blanco. Devuelve el identificador de la
119 * fila en donde inserto los datos.
121 * @param array() $contenido Contenido de la fila
123 * @return int Identificador de Linea
128 function agregarFila($contenido = '')
130 return $this->addRow($contenido, 'comun');
134 * Modifica el atributo rowSpan a la celda pasada por parametro
136 * @param int $fila Identificador de la fila que se quiere modificar
137 * @param int $columna Identificador de la columna que se quiere modificar
138 * @param int $valor Atributo a modificar
143 function rowSpan($fila, $columna, $valor)
145 return $this->updateCellAttributes($fila, $columna, 'rowspan="'.$valor.'"');
149 * Modifica el atributo colSpan a la celda pasada por parametro
151 * @param int $fila Identificador de la fila que se quiere modificar
152 * @param int $columna Identificador de la columna que se quiere modificar
153 * @param int $valor Atributo a modificar
158 function colSpan($fila, $columna, $valor)
160 return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
164 * Modifica el atributo aling de la celda pasada por parametro
166 * @param int $fila Identificador de la fila que se quiere modificar
167 * @param int $columna Identificador de la columna que se quiere modificar
168 * @param string $valor Atributo a modificar
173 function align($fila, $columna, $valor)
175 return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"');
179 * Setea una columna como del tipo cabecera
181 * @param int $columna Identificador de la columna que se quiere modificar
186 function setColCabecera($columna)
188 return $this->updateColAttributes($columna, 'cabecera');
192 * Setea una columna como del tipo titulo
194 * @param int $columna Identificador de la columna que se quiere modificar
199 function setColTitulo($columna)
201 return $this->updateColAttributes($columna, 'titulo');
205 * Alinea una columna entera
207 * @param int $columna Identificador de la columna que se quiere modificar
208 * @param string $valor Valor
213 function setColAlign($columna, $valor)
215 return $this->updateColAttributes($columna,'align="'.$valor.'"');
219 * Cambia el tamanio de una columna entera
221 * @param int $columna Identificadore de la columna que se quiere modificar
222 * @param string $valor Valor
227 function setColWidth($columna, $valor)
229 return $this->updateColAttributes($columna,'width="'.$valor.'"');
233 * Cambia el color de fondo de una celda
235 * @param int $fila Identificador de la fila que se quiere modificar
236 * @param int $columna Identificador de la columna que se quiere modificar
237 * @param string $valor Atributo a modificar
242 function setCellBgcolor($fila, $columna, $valor)
244 return $this->updateCellAttributes($fila, $columna,'bgcolor="'.$valor.'"');
248 * Devuelve el html de la tabla
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.
255 * @param bool $simple Tipo de tabla que se quiere recibir.
257 * @return string Html
261 function toHtml($simple = 0)
264 // Agregar la tabla de fondo.
266 $result = parent::toHtml();
268 $contenedora = $this->_conf['atributos']['tabla_contenedora'];
269 $contenedora['width'] = $this->getAttribute('width');
270 $contenedora['align'] = $this->_attrs['align'];
271 $this->updateAttributes(array('width' => '100%'));
272 $tabla_externa = new HTML_Table($contenedora);
273 $tabla_externa->addRow(array(parent::toHtml()),
274 $this->_conf['atributos']['celda_contenedora']);
275 $result = $tabla_externa->toHtml();
282 * Cambia las propiedades de una celda
284 * Cambia las propiedades de una celda. Si $attrs es un array
285 * asociativo, se setean los atributos representados por las claves
288 * @param int $row Identificador de la fila que se quiere modificar
289 * @param int $col Identificador de la columna que se quiere modificar
290 * @param mixed $attrs Atributo a modificar
294 function updateCellAttributes($row, $col, $attrs)
296 return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs, false));
300 * Establece las propiedades de una celda
302 * Establece las propiedades de una celda. Si $attrs es un array
303 * asociativo, se setean los atributos representados por las claves
306 * @param int $row Identificador de la fila que se quiere modificar
307 * @param int $col Identificador de la columna que se quiere modificar
308 * @param mixed $attrs Atributo a modificar
312 function setCellAttributes($row, $col, $attrs)
314 return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs, true));
320 * Agrega una fila. El contenido es el que viene representado por
321 * el array $content. Recibe los atributos en la variable $attrs
323 * @param mixed $content Contenido
324 * @param mixed $attrs Atributos
326 * @return int $rowId Identificador de la fila
330 function addRow($content, $attrs = 'comun')
332 return parent::addRow($content, $attrs);
336 * Convierte un atributo a string
338 * Convierte un atributo HTML al string para pasar a los metodos de HTML_Table
339 * Recibe en $attrs los atributos a modificar.
341 * @param mixed $attrs Atributos.
342 * @param bool $isSet Indica si hay que setear.
347 function _translateAttributes($attrs, $isSet)
352 if (is_string($attrs)) {
353 $attrs = $this->_parseAttributes($attrs);
356 $rta = $this->_conf['atributos']['celda_comun'];
360 foreach ($attrs as $attr => $val) {
361 $attr = strtolower($attr);
367 $rta = array_merge($rta, $this->_conf['atributos']["celda_$attr"]);
385 $rta["cell$attr"] = $val;
391 trigger_error("No se permite setear el atributo $attr", E_USER_ERROR);
398 * Obtiene la Cascade Style Sheet para esta tabla.
400 * @return string Path 'web' a la css.
403 return $this->_conf['css'];