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';
32 * Libreria para le manejo de las tablas de los sistemas de intranet.
38 class Tabla extends HTML_Table {
41 * Valores de Configuracion particular
48 * Atributos de las tablas.
57 * Puede recibir como parametro un string con los atributos que se
58 * quieren dar a la tabla en cuestion. Estos atributos estan
59 * seteados por default segun el archivo de configuracion.
61 * @param $atributos Atributos diferentes a los estandares para la
66 function Tabla($attrs = null)
68 $this->_conf = include 'MECON/HTML/Tabla/conf_Tabla.php'; // Obtengo los valores particulares de configuracion
69 // Seteo los atributos para la tabla
70 $this->_attrs = $this->_conf['atributos']['tabla_comun'];
71 //Genero el objeto HTML_Table
72 if (is_string($attrs)) {
73 $attrs = $this->_parseAttributes($attrs);
75 if (is_array($attrs)) {
76 if (isset($attrs['width'])) {
77 $this->_attrs['width'] = $attrs['width'];
79 if (isset($attrs['bgcolor'])) {
80 $this->_attrs['bgcolor'] = $attrs['bgcolor'];
82 if (isset($attrs['cellspacing'])) {
83 $this->_attrs['cellspacing'] = $attrs['cellspacing'];
85 if (isset($attrs['cellpadding'])) {
86 $this->_attrs['cellpadding'] = $attrs['cellpadding'];
89 $this->HTML_Table($this->_attrs);
93 * Agrega una fila del tipo Cabecera
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 $contenido Contenido de la fila
104 * @return int Identificador de Linea
109 function agregarFilaCabecera($contenido = '', $atributos = '')
111 return $this->addRow($contenido, 'cabecera');
115 * Agrega una fila del tipo Comun
117 * Agrega una fila del tipo comun, tomando colores y demas del
118 * archivo de configuracion. Recibe como parametro un array con
119 * los datos a incluir en la linea. Agrega tantas columnas como
120 * elementos tenga el array. Si no recibe parametro alguno,
121 * inserta una fila en blanco. Devuelve el identificador de la
122 * fila en donde inserto los datos.
124 * @param $contenido Contenido de la fila
126 * @return int Identificador de Linea
131 function agregarFila($contenido = '')
133 return $this->addRow($contenido, 'comun');
137 * Modifica el atributo rowSpan a la celda pasada por parametro
140 * @param int $columna
146 function rowSpan($fila, $columna, $valor)
148 return $this->updateCellAttributes($fila, $columna, 'rowspan="'.$valor.'"');
152 * Modifica el atributo colSpan a la celda pasada por parametro
155 * @param int $columna
161 function colSpan($fila, $columna, $valor)
163 return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
167 * Modifica el atributo aling de la celda pasada por parametro
170 * @param int $columna
171 * @param string $valor (left, center, right...)
176 function align($fila, $columna, $valor)
178 return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"');
182 * Setea una columna como del tipo cabecera
184 * @param int $columna
189 function setColCabecera($columna)
191 return $this->updateColAttributes($columna, 'cabecera');
195 * Setea una columna como del tipo titulo
197 * @param int $columna
202 function setColTitulo($columna)
204 return $this->updateColAttributes($columna, 'titulo');
208 * Alinea una columna entera
210 * @param int $columna
211 * @param string $valor
216 function setColAlign($columna, $valor)
218 return $this->updateColAttributes($columna,'align="'.$valor.'"');
222 * Cambia el tamanio de una columna entera
224 * @param int $columna
225 * @param string $valor
230 function setColWidth($columna, $valor)
232 return $this->updateColAttributes($columna,'width="'.$valor.'"');
236 * Cambia el color de fondo de una celda
239 * @param int $columna
240 * @param string $valor
245 function setCellBgcolor($fila, $columna, $valor)
247 return $this->updateCellAttributes($fila, $columna,'bgcolor="'.$valor.'"');
251 * Devuelve el html de la tabla
253 * Devuelve el html de la tabla para que sea mostrado.
254 * Como parametro recibe el indicador de tabla simple.
255 * Si $simple es falso, devuelve el html comun y corriente (con 2
256 * tablas), si es false devuelve una tabla sola.
258 * @param bool $simple
260 * @return string Html
264 function toHtml($simple = 0)
266 // Agregar la tabla de fondo.
268 $result = parent::toHtml();
270 $contenedora = $this->_conf['atributos']['tabla_contenedora'];
271 $contenedora['width'] = $this->getAttribute('width');
272 $this->updateAttributes(array('width' => '100%'));
273 $tabla_externa = new HTML_Table($contenedora);
274 $tabla_externa->addRow(array(parent::toHtml()),
275 $this->_conf['atributos']['celda_contenedora']);
276 $result = $tabla_externa->toHtml();
283 * Cambia las propiedades de una celda
285 * Cambia las propiedades de una celda. Si $attrs es un array
286 * asociativo, se setean los atributos representados por las claves
291 * @param mixed $attrs
295 function updateCellAttributes($row, $col, $attrs)
297 return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs));
301 * Establece las propiedades de una celda
303 * Establece las propiedades de una celda. Si $attrs es un array
304 * asociativo, se setean los atributos representados por las claves
309 * @param mixed $attrs
313 function setCellAttributes($row, $col, $attrs)
315 return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs));
321 * Agrega una fila. El contenido es el que viene representado por
322 * el array $content. Recibe los atributos en la variable $attrs
324 * @param mixed $content
325 * @param mixed $attrs
331 function addRow($content, $attrs = 'comun')
333 return parent::addRow($content, $attrs);
337 * Convierte un atributo a string
339 * Convierte un atributo HTML al string para pasar a los metodos de HTML_Table
340 * Recibe en $attrs los atributos a modificar.
342 * @param string $attrs
347 function _translateAttributes($attrs)
352 if (is_string($attrs)) {
353 $attrs = $this->_parseAttributes($attrs);
356 $rta = $this->_conf['atributos']['celda_comun'];
358 foreach ($attrs as $attr => $val) {
359 $attr = strtolower($attr);
365 #$sin_estilo = false;
366 $rta = array_merge($rta, $this->_conf['atributos']["celda_$attr"]);
384 $rta["cell$attr"] = $val;
390 trigger_error("No se permite setear el atributo $attr", E_USER_ERROR);
393 // Si no tiene estilo, agrego estilo comun.
395 #$rta = $this->_conf['atributos']['celda_comun'];