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 = null)
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);
69 if (is_array($attrs)) {
70 if (isset($attrs['width'])) {
71 $this->_attrs['width'] = $attrs['width'];
73 if (isset($attrs['bgcolor'])) {
74 $this->_attrs['bgcolor'] = $attrs['bgcolor'];
76 if (isset($attrs['cellspacing'])) {
77 $this->_attrs['cellspacing'] = $attrs['cellspacing'];
79 if (isset($attrs['cellpadding'])) {
80 $this->_attrs['cellpadding'] = $attrs['cellpadding'];
83 $this->HTML_Table($this->_attrs);
87 * Agrega una fila del tipo Cabecera
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.
96 * @param $contenido Contenido de la fila
98 * @return int Identificador de Linea
103 function agregarFilaCabecera($contenido = '', $atributos = '')
105 return $this->addRow($contenido, 'cabecera');
109 * Agrega una fila del tipo Comun
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.
118 * @param $contenido Contenido de la fila
120 * @return int Identificador de Linea
125 function agregarFila($contenido = '')
127 return $this->addRow($contenido, 'comun');
131 * Modifica el atributo rowSpan a la celda pasada por parametro
134 * @param int $columna
140 function rowSpan($fila, $columna, $valor)
142 return $this->updateCellAttributes($fila, $columna, 'rowspan="'.$valor.'"');
146 * Modifica el atributo colSpan a la celda pasada por parametro
149 * @param int $columna
155 function colSpan($fila, $columna, $valor)
157 return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
161 * Modifica el atributo aling de la celda pasada por parametro
164 * @param int $columna
165 * @param string $valor (left, center, right...)
170 function align($fila, $columna, $valor)
172 return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"');
176 * Setea una columna como del tipo cabecera
178 * @param int $columna
183 function setColCabecera($columna)
185 return $this->updateColAttributes($columna, 'cabecera');
189 * Setea una columna como del tipo titulo
191 * @param int $columna
196 function setColTitulo($columna)
198 return $this->updateColAttributes($columna, 'titulo');
202 * Alinea una columna entera
204 * @param int $columna
205 * @param string $valor
210 function setColAlign($columna, $valor)
212 return $this->updateColAttributes($columna,'align="'.$valor.'"');
216 * Cambia el tamanio de una columna entera
218 * @param int $columna
219 * @param string $valor
224 function setColWidth($columna, $valor)
226 return $this->updateColAttributes($columna,'width="'.$valor.'"');
230 * Cambia el color de fondo de una celda
233 * @param int $columna
234 * @param string $valor
239 function setCellBgcolor($fila, $columna, $valor)
241 return $this->updateCellAttributes($fila, $columna,'bgcolor="'.$valor.'"');
245 * Devuelve el html de la tabla
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.
252 * @param bool $simple
254 * @return string Html
258 function toHtml($simple = 0)
260 // Agregar la tabla de fondo.
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();
269 $result = parent::toHtml();
276 * Cambia las propiedades de una celda
278 * Cambia las propiedades de una celda. Si $attrs es un array
279 * asociativo, se setean los atributos representados por las claves
284 * @param mixed $attrs
288 function updateCellAttributes($row, $col, $attrs)
290 return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs));
294 * Establece las propiedades de una celda
296 * Establece las propiedades de una celda. Si $attrs es un array
297 * asociativo, se setean los atributos representados por las claves
302 * @param mixed $attrs
306 function setCellAttributes($row, $col, $attrs)
308 return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs));
314 * Agrega una fila. El contenido es el que viene representado por
315 * el array $content. Recibe los atributos en la variable $attrs
317 * @param mixed $content
318 * @param mixed $attrs
324 function addRow($content, $attrs = 'comun')
326 return parent::addRow($content, $attrs);
330 * Convierte un atributo a string
332 * Convierte un atributo HTML al string para pasar a los metodos de HTML_Table
333 * Recibe en $attrs los atributos a modificar.
335 * @param string $attrs
340 function _translateAttributes($attrs)
345 if (is_string($attrs)) {
346 $attrs = $this->_parseAttributes($attrs);
349 $rta = $this->_conf['atributos']['celda_comun'];
351 foreach ($attrs as $attr => $val) {
352 $attr = strtolower($attr);
358 #$sin_estilo = false;
359 $rta = array_merge($rta, $this->_conf['atributos']["celda_$attr"]);
376 $rta["cell$attr"] = $val;
383 trigger_error("No se permite setear el atributo $attr", E_USER_ERROR);
386 // Si no tiene estilo, agrego estilo comun.
388 #$rta = $this->_conf['atributos']['celda_comun'];