+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+ Ministerio de Economía
+ meconlib
+-------------------------------------------------------------------------------
+This file is part of meconlib.
+
+meconlib is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+meconlib is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA 02111-1307 USA
+-------------------------------------------------------------------------------
+Creado: fri mar 21 ART 2003
+Autor: Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id: Tabla.php 325 2003-09-02 18:50:30Z llucar $
+-----------------------------------------------------------------------------*/
+
+require_once 'HTML/Table.php';
+
+/**
+ * Libreria para le manejo de las tablas de los sistemas de intranet.
+ *
+ */
+
+class MECON_HTML_Tabla extends HTML_Table {
+
+ /**
+ * Valores de Configuracion particular
+ *
+ * @var array() $conf
+ * @access protected
+ */
+ var $_conf;
+
+ /**
+ * Atributos de las tablas.
+ *
+ * @var array() attrs
+ * @access protected
+ */
+ var $_attrs;
+
+ /**
+ * Constructor.
+ * Puede recibir como parametro un string con los atributos que se
+ * quieren dar a la tabla en cuestion. Estos atributos estan
+ * seteados por default segun el archivo de configuracion.
+ * Ademas puede recibir la indicacion de algun estilo en particular.
+ *
+ * @param mixed $atributos Atributos diferentes a los estandares para la tabla
+ * @param string $estilo Tipo de tabla
+ *
+ * @access public
+ */
+ function MECON_HTML_Tabla($attrs = null, $estilo = 'comun')
+ {
+ $this->_conf = include 'MECON/HTML/Tabla/estilo_'.$estilo.'.php'; // Obtengo los valores particulares de configuracion
+ // Seteo los atributos para la tabla
+ $this->_attrs = $this->_conf['atributos']['tabla_comun'];
+ //Genero el objeto HTML_Table
+ if (is_string($attrs)) {
+ $attrs = $this->_parseAttributes($attrs);
+ }
+ if (is_array($attrs)) {
+ if (isset($attrs['width'])) {
+ $this->_attrs['width'] = $attrs['width'];
+ }
+ if (isset($attrs['bgcolor'])) {
+ $this->_attrs['bgcolor'] = $attrs['bgcolor'];
+ }
+ if (isset($attrs['cellspacing'])) {
+ $this->_attrs['cellspacing'] = $attrs['cellspacing'];
+ }
+ if (isset($attrs['cellpadding'])) {
+ $this->_attrs['cellpadding'] = $attrs['cellpadding'];
+ }
+ }
+ $this->HTML_Table($this->_attrs);
+ }
+
+ /**
+ * Agrega una fila del tipo cabecera tomando colores y demas del
+ * archivo de configuracion. Recibe como parametro un array con
+ * los datos a incluir en la linea. Agrega tantas columnas como
+ * elementos tenga el array. Si no recibe parametro alguno,
+ * inserta una fila en blanco. Devuelve el identificador de la
+ * fila en donde inserto los datos.
+ *
+ * @param array() $contenido Contenido de la fila
+ *
+ * @return int Identificador de Linea
+ * @access public
+ * @deprecated
+ */
+ function agregarFilaCabecera($contenido = '', $atributos = '')
+ {
+ return $this->addRow($contenido, 'cabecera');
+ }
+
+ /**
+ * Agrega una fila del tipo comun, tomando colores y demas del
+ * archivo de configuracion. Recibe como parametro un array con
+ * los datos a incluir en la linea. Agrega tantas columnas como
+ * elementos tenga el array. Si no recibe parametro alguno,
+ * inserta una fila en blanco. Devuelve el identificador de la
+ * fila en donde inserto los datos.
+ *
+ * @param array() $contenido Contenido de la fila
+ *
+ * @return int Identificador de Linea
+ *
+ * @access public
+ * @deprecated
+ */
+ function agregarFila($contenido = '')
+ {
+ return $this->addRow($contenido, 'comun');
+ }
+
+ /**
+ * Modifica el atributo rowSpan a la celda pasada por parametro
+ *
+ * @param int $fila Identificador de la fila que se quiere modificar
+ * @param int $columna Identificador de la columna que se quiere modificar
+ * @param int $valor Atributo a modificar
+ *
+ * @access public
+ * @deprecated
+ */
+ function rowSpan($fila, $columna, $valor)
+ {
+ return $this->updateCellAttributes($fila, $columna, 'rowspan="'.$valor.'"');
+ }
+
+ /**
+ * Modifica el atributo colSpan a la celda pasada por parametro
+ *
+ * @param int $fila Identificador de la fila que se quiere modificar
+ * @param int $columna Identificador de la columna que se quiere modificar
+ * @param int $valor Atributo a modificar
+ *
+ * @access public
+ * @deprecated
+ */
+ function colSpan($fila, $columna, $valor)
+ {
+ return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
+ }
+
+ /**
+ * Modifica el atributo aling de la celda pasada por parametro
+ *
+ * @param int $fila Identificador de la fila que se quiere modificar
+ * @param int $columna Identificador de la columna que se quiere modificar
+ * @param string $valor Atributo a modificar
+ *
+ * @access public
+ * @deprecated
+ */
+ function align($fila, $columna, $valor)
+ {
+ return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"');
+ }
+
+ /**
+ * Setea una columna como del tipo cabecera
+ *
+ * @param int $columna Identificador de la columna que se quiere modificar
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColCabecera($columna)
+ {
+ return $this->updateColAttributes($columna, 'cabecera');
+ }
+
+ /**
+ * Setea una columna como del tipo titulo
+ *
+ * @param int $columna Identificador de la columna que se quiere modificar
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColTitulo($columna)
+ {
+ return $this->updateColAttributes($columna, 'titulo');
+ }
+
+ /**
+ * Alinea una columna entera
+ *
+ * @param int $columna Identificador de la columna que se quiere modificar
+ * @param string $valor Valor
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColAlign($columna, $valor)
+ {
+ return $this->updateColAttributes($columna,'align="'.$valor.'"');
+ }
+
+ /**
+ * Cambia el tamanio de una columna entera
+ *
+ * @param int $columna Identificadore de la columna que se quiere modificar
+ * @param string $valor Valor
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColWidth($columna, $valor)
+ {
+ return $this->updateColAttributes($columna,'width="'.$valor.'"');
+ }
+
+ /**
+ * Cambia el color de fondo de una celda
+ *
+ * @param int $fila Identificador de la fila que se quiere modificar
+ * @param int $columna Identificador de la columna que se quiere modificar
+ * @param string $valor Atributo a modificar
+ *
+ * @access public
+ * @deprecated
+ */
+ function setCellBgcolor($fila, $columna, $valor)
+ {
+ return $this->updateCellAttributes($fila, $columna,'bgcolor="'.$valor.'"');
+ }
+
+ /**
+ * Devuelve el html de la tabla
+ *
+ * Devuelve el html de la tabla para que sea mostrado.
+ * Como parametro recibe el indicador de tabla simple.
+ * Si $simple es falso, devuelve el html comun y corriente (con 2
+ * tablas), si es false devuelve una tabla sola.
+ *
+ * @param bool $simple Tipo de tabla que se quiere recibir.
+ *
+ * @return string Html
+ *
+ * @access public
+ */
+ function toHtml($simple = 0)
+ {
+ // Agregar la tabla de fondo.
+ if ($simple) {
+ $result = parent::toHtml();
+ } else {
+ $contenedora = $this->_conf['atributos']['tabla_contenedora'];
+ $contenedora['width'] = $this->getAttribute('width');
+ $this->updateAttributes(array('width' => '100%'));
+ $tabla_externa = new HTML_Table($contenedora);
+ $tabla_externa->addRow(array(parent::toHtml()),
+ $this->_conf['atributos']['celda_contenedora']);
+ $result = $tabla_externa->toHtml();
+ }
+
+ return $result;
+ }
+
+ /**
+ * Cambia las propiedades de una celda
+ *
+ * Cambia las propiedades de una celda. Si $attrs es un array
+ * asociativo, se setean los atributos representados por las claves
+ * con los valores.
+ *
+ * @param int $row Identificador de la fila que se quiere modificar
+ * @param int $col Identificador de la columna que se quiere modificar
+ * @param mixed $attrs Atributo a modificar
+ *
+ * @access public
+ */
+ function updateCellAttributes($row, $col, $attrs)
+ {
+ return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs, false));
+ }
+
+ /**
+ * Establece las propiedades de una celda
+ *
+ * Establece las propiedades de una celda. Si $attrs es un array
+ * asociativo, se setean los atributos representados por las claves
+ * con los valores.
+ *
+ * @param int $row Identificador de la fila que se quiere modificar
+ * @param int $col Identificador de la columna que se quiere modificar
+ * @param mixed $attrs Atributo a modificar
+ *
+ * @access public
+ */
+ function setCellAttributes($row, $col, $attrs)
+ {
+ return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs, true));
+ }
+
+ /**
+ * Agrega una fila
+ *
+ * Agrega una fila. El contenido es el que viene representado por
+ * el array $content. Recibe los atributos en la variable $attrs
+ *
+ * @param mixed $content Contenido
+ * @param mixed $attrs Atributos
+ *
+ * @return int $rowId Identificador de la fila
+ *
+ * @access public
+ */
+ function addRow($content, $attrs = 'comun')
+ {
+ return parent::addRow($content, $attrs);
+ }
+
+ /**
+ * Convierte un atributo a string
+ *
+ * Convierte un atributo HTML al string para pasar a los metodos de HTML_Table
+ * Recibe en $attrs los atributos a modificar.
+ *
+ * @param mixed $attrs Atributos.
+ * @param bool $isSet Indica si hay que setear.
+ *
+ * @return array
+ * @access private
+ */
+ function _translateAttributes($attrs, $isSet)
+ {
+ if (!$attrs) {
+ return array();
+ }
+ if (is_string($attrs)) {
+ $attrs = $this->_parseAttributes($attrs);
+ }
+ if ($isSet) {
+ $rta = $this->_conf['atributos']['celda_comun'];
+ } else {
+ $rta = array();
+ }
+ foreach ($attrs as $attr => $val) {
+ $attr = strtolower($attr);
+ switch ($attr) {
+ // Estilos de celda
+ case 'comun':
+ case 'cabecera':
+ case 'titulo':
+ $rta = array_merge($rta, $this->_conf['atributos']["celda_$attr"]);
+ break;
+ case 'align':
+ case 'valign':
+ case 'width':
+ case 'height':
+ case 'rowspan':
+ case 'colspan':
+ case 'bgcolor':
+ case 'class':
+ case 'border':
+ case 'cellspacing':
+ case 'cellpadding':
+ case 'nowrap':
+ $rta[$attr] = $val;
+ break;
+ case 'spacing':
+ case 'padding':
+ $rta["cell$attr"] = $val;
+ break;
+ case 'th':
+ $rta[$attr] = '';
+ break;
+ default:
+ trigger_error("No se permite setear el atributo $attr", E_USER_ERROR);
+ }
+ }
+ return $rta;
+ }
+
+}
+
+?>