require_once 'HTML/Table.php';
/**
-* Manejo de tablas.
-*
-* Libreria para le manejo de las tablas de los sistemas de intranet.
-*
-* @version $Rev$
-* @author $Author$
-*/
+ * Manejo de tablas.
+ *
+ * Libreria para le manejo de las tablas de los sistemas de intranet.
+ *
+ * @version $Rev$
+ * @author $Author$
+ */
class Tabla extends HTML_Table {
-
+
/**
- * Valores de Configuracion particular
- *
- * @var array
- */
+ * Valores de Configuracion particular
+ *
+ * @var array
+ */
var $_conf;
-
+
/**
- * Objeto tabla que voy a utilizar
- *
- * @var Object HTML_Table
- */
- var $_tabla;
-
+ * Atributos de las tablas.
+ *
+ * @var array
+ */
+ 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.
- *
- * @param $atributos Atributos diferentes a los estandares para la
- * tabla
- *
- * @access public
- */
- function Tabla ($atributos = '')
+ * 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.
+ *
+ * @param $atributos Atributos diferentes a los estandares para la
+ * tabla
+ *
+ * @access public
+ */
+ function Tabla($attrs = '')
{
$this->_conf = include 'Tabla/conf_Tabla.php'; // Obtengo los valores particulares de configuracion
// Seteo los atributos para la tabla
- if (!strcmp($atributos,'')) {
- $atributos = $this->_conf['atributos']['tabla_comun'];
- }
+ $this->_attrs = $this->_parseAttributes($this->_conf['atributos']['tabla_comun']);
//Genero el objeto HTML_Table
- $this->HTML_Table($atributos);
+ if ($attrs != '') {
+ $tmp = $this->_parseAttributes($attrs);
+ if (isset($tmp['width'])) {
+ $this->_attrs['width'] = $tmp['width'];
+ }
+ if (isset($tmp['bgcolor'])) {
+ $this->_attrs['bgcolor'] = $tmp['bgcolor'];
+ }
+ if (isset($tmp['cellspacing'])) {
+ $this->_attrs['cellspacing'] = $tmp['cellspacing'];
+ }
+ if (isset($tmp['cellpadding'])) {
+ $this->_attrs['cellpadding'] = $tmp['cellpadding'];
+ }
+ }
+ $this->HTML_Table($this->_attrs);
//Modifico los atributos de todas las tablas
//Hay que encontrar o hacer una funcion que setee los atributos para las futuras
//inserciones.
- // $this->setAllAttributes($this->_conf['atributos']['celda_comun']);
}
-
+
+ /**
+ * Agrega una fila del tipo Cabecera
+ *
+ * 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 $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
+ *
+ * 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 $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
+ * @param int $columna
+ * @param int $valor
+ *
+ * @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
+ * @param int $columna
+ * @param int $valor
+ *
+ * @access public
+ * @deprecated
+ */
+ function colSpan($fila, $columna, $valor)
+ {
+ return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
+ }
+
/**
- * Agrega una fila del tipo Cabecera
- *
- * 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 $contenido Contenido de la fila
- *
- * @return int Identificador de Linea
- *
- * @access public
- */
- function agregarFilaCabecera ($contenido = '')
- {
- return $this->addRow($contenido, $this->_conf['atributos']['celda_cabecera'],'TH');
+ * Modifica el atributo aling de la celda pasada por parametro
+ *
+ * @param int $fila
+ * @param int $columna
+ * @param string $valor (left, center, right...)
+ *
+ * @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
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColCabecera($columna)
+ {
+ return $this->updateColAttributes($columna, 'cabecera');
}
/**
- * Agrega una fila del tipo Comun
- *
- * 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 $contenido Contenido de la fila
- *
- * @return int Identificador de Linea
- *
- * @access public
- */
- function agregarFila ($contenido = '')
- {
- return $this->addRow($contenido,$this->_conf['atributos']['celda_comun']);
+ * Setea una columna como del tipo titulo
+ *
+ * @param int $columna
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColTitulo($columna)
+ {
+ return $this->updateColAttributes($columna, 'titulo');
}
/**
- * Devuelve el html de la tabla
- *
- * Devuelve el html de la tabla para que sea mostrado.
- *
- * @return string Html
- *
- * @access public
- */
- function toHtml ()
+ * Alinea una columna entera
+ *
+ * @param int $columna
+ * @param string $valor
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColAlign($columna, $valor)
+ {
+ return $this->updateColAttributes($columna,'align="'.$valor.'"');
+ }
+
+ /**
+ * Cambia el tamanio de una columna entera
+ *
+ * @param int $columna
+ * @param string $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
+ * @param int $columna
+ * @param string $valor
+ *
+ * @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
+ *
+ * @return string Html
+ *
+ * @access public
+ */
+ function toHtml($simple = 0)
{
// Agregar la tabla de fondo.
- $tabla_externa = new HTML_Table($this->_conf['atributos']['tabla_contenedora']);
- $tabla_externa->setCellContents(0,0,parent::toHtml(),$this->_conf['atributos']['celda_comun']);
- return $tabla_externa->toHtml();
+ if ($simple == 0) {
+ $tmp = $this->_parseAttributes($this->_conf['atributos']['tabla_contenedora']);
+ $tmp['width'] = $this->_attrs['width'];
+ $tabla_externa = new HTML_Table($tmp);
+ $tabla_externa->setCellContents(0,0,parent::toHtml(),$this->_conf['atributos']['celda_comun']);
+ $result = $tabla_externa->toHtml();
+ }
+ else {
+ $result = parent::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
+ * @param int $col
+ * @param mixed $attrs
+ *
+ * @access public
+ */
+ function updateCellAttributes($row, $col, $attrs)
+ {
+ return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs));
+ }
+
+ /**
+ * 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
+ * @param int $col
+ * @param mixed $attrs
+ *
+ * @access public
+ */
+ function setCellAttributes($row, $col, $attrs)
+ {
+ return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs));
+ }
+
+ /**
+ * 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
+ * @param mixed $attrs
+ *
+ * @return int $rowId
+ *
+ * @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 string $attrs
+ *
+ * @return string
+ * @access private
+ */
+ function _translateAttributes($attrs)
+ {
+ if (!$attrs) {
+ return array();
+ }
+ if (is_string($attrs)) {
+ $attrs = $this->_parseAttributes($attrs);
+ }
+ $rta = '';
+ foreach ($attrs as $attr => $val) {
+ $attr = strtolower($attr);
+ switch ($attr) {
+ case 'comun':
+ $rta .= $this->_conf['atributos']['celda_comun'];
+ break;
+ case 'cabecera':
+ $rta .= $this->_conf['atributos']['celda_cabecera'];
+ break;
+ case 'titulo':
+ $rta .= $this->_conf['atributos']['celda_titulo'];
+ break;
+ case 'align':
+ case 'valign':
+ case 'width':
+ case 'height':
+ case 'rowspan':
+ case 'colspan':
+ case 'bgcolor':
+ case 'class':
+ case 'border':
+ case 'cellspacing':
+ case 'cellpadding':
+ $rta .= "$attr=\"$val\"";
+ break;
+ case 'spacing':
+ case 'padding':
+ $rta .= "cell$attr=\"$val\"";
+ break;
+ case 'nowrap':
+ case 'th':
+ $rta .= $attr;
+ break;
+ default:
+ trigger_error("No se permite setear el atributo $attr", E_USER_ERROR);
+ }
+ }
+ return $rta;
+ }
+
+}
+
?>