2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
5 // +--------------------------------------------------------------------+
6 // | Libreria para la estandarizacion de los elementos html de los |
8 // | Ministerio de EconomÃa |
9 // +--------------------------------------------------------------------+
10 // | Creado: fri mar 21 ART 2003 |
11 // | Autor: Martin Marrese <mmarre@mecon.gov.ar> |
12 // +--------------------------------------------------------------------+
21 require_once 'HTML/Table.php';
26 * Libreria para le manejo de las tablas de los sistemas de intranet.
32 class Tabla extends HTML_Table {
35 * Valores de Configuracion particular
42 * Atributos de las tablas.
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.
55 * @param $atributos Atributos diferentes a los estandares para la
60 function Tabla($attrs = '')
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
67 $tmp = $this->_parseAttributes($attrs);
68 if (isset($tmp['width'])) {
69 $this->_attrs['width'] = $tmp['width'];
71 if (isset($tmp['bgcolor'])) {
72 $this->_attrs['bgcolor'] = $tmp['bgcolor'];
74 if (isset($tmp['cellspacing'])) {
75 $this->_attrs['cellspacing'] = $tmp['cellspacing'];
77 if (isset($tmp['cellpadding'])) {
78 $this->_attrs['cellpadding'] = $tmp['cellpadding'];
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
89 * Agrega una fila del tipo Cabecera
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.
98 * @param $contenido Contenido de la fila
100 * @return int Identificador de Linea
105 function agregarFilaCabecera($contenido = '', $atributos = '')
107 return $this->addRow($contenido, 'cabecera');
111 * Agrega una fila del tipo Comun
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.
120 * @param $contenido Contenido de la fila
122 * @return int Identificador de Linea
127 function agregarFila($contenido = '')
129 return $this->addRow($contenido, 'comun');
134 * Modifica el atributo rowSpan a la celda pasada por parametro
137 * @param int $columna
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
152 * @param int $columna
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
167 * @param int $columna
168 * @param string $valor (left, center, right...)
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
186 function setColCabecera($columna)
188 return $this->updateColAttributes($columna, 'cabecera');
192 * Setea una columna como del tipo titulo
194 * @param int $columna
199 function setColTitulo($columna)
201 return $this->updateColAttributes($columna, 'titulo');
205 * Alinea una columna entera
207 * @param int $columna
208 * @param string $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
222 * @param string $valor
227 function setColWidth($columna, $valor)
229 return $this->updateColAttributes($columna,'width="'.$valor.'"');
233 * Cambia el color de fondo de una celda
236 * @param int $columna
237 * @param string $valor
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
257 * @return string Html
261 function toHtml($simple = 0)
263 // Agregar la tabla de fondo.
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();
272 $result = parent::toHtml();
280 * Cambia las propiedades de una celda
282 * Cambia las propiedades de una celda. Si $attrs es un array
283 * asociativo, se setean los atributos representados por las claves
288 * @param mixed $attrs
292 function updateCellAttributes($row, $col, $attrs)
294 return parent::updateCellAttributes($row, $col, $this->_attrToString($attrs));
298 * Establece las propiedades de una celda
300 * Establece las propiedades de una celda. Si $attrs es un array
301 * asociativo, se setean los atributos representados por las claves
306 * @param mixed $attrs
310 function setCellAttributes($row, $col, $attrs)
312 return parent::setCellAttributes($row, $col, $this->_attrToString($attrs));
318 * Agrega una fila. El contenido es el que viene representado por
319 * el array $content. Recibe los atributos en la variable $attrs
321 * @param mixed $content
322 * @param mixed $attrs
328 function addRow($content, $attrs = 'comun')
330 return parent::addRow($content,$attrs);
334 * Convierte un atributo a string
336 * Convierte un atributo HTML al string para pasar a los metodos de HTML_Table
337 * Recibe en $attrs los atributos a modificar.
339 * @param string $attrs
344 function _attrToString($attrs)
350 if (is_string($attrs)) {
351 $attrs = $this->_parseAttributes($attrs);
353 foreach ($attrs as $attr => $val) {
354 $attr = strtolower($attr);
357 $rta.=$this->_conf['atributos']['celda_comun'];
360 $rta.=$this->_conf['atributos']['celda_cabecera'];
363 $rta.=$this->_conf['atributos']['celda_titulo'];
376 $rta.="$attr=\"$val\"";
380 $rta.="cell$attr=\"$val\"";
387 trigger_error("No se puede setear el atributo $attr", E_USER_ERROR);