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 $_atribTabla;
-
+ 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 = null)
{
$this->_conf = include 'Tabla/conf_Tabla.php'; // Obtengo los valores particulares de configuracion
// Seteo los atributos para la tabla
- $this->_atribTabla = $this->_parseAttributes($this->_conf['atributos']['tabla_comun']);
+ $this->_attrs = $this->_conf['atributos']['tabla_comun'];
//Genero el objeto HTML_Table
- if ($atributos != '') {
- $tmp = $this->_parseAttributes($atributos);
- if (isset($tmp['width'])) {
- $this->_atribTabla['width'] = $tmp['width'];
+ if (is_string($attrs)) {
+ $attrs = $this->_parseAttributes($attrs);
+ }
+ if (is_array($attrs)) {
+ if (isset($attrs['width'])) {
+ $this->_attrs['width'] = $attrs['width'];
}
- if (isset($tmp['bgcolor'])) {
- $this->_atribTabla['bgcolor'] = $tmp['bgcolor'];
+ if (isset($attrs['bgcolor'])) {
+ $this->_attrs['bgcolor'] = $attrs['bgcolor'];
}
- if (isset($tmp['cellspacing'])) {
- $this->_atribTabla['cellspacing'] = $tmp['cellspacing'];
+ if (isset($attrs['cellspacing'])) {
+ $this->_attrs['cellspacing'] = $attrs['cellspacing'];
}
- if (isset($tmp['cellpadding'])) {
- $this->_atribTabla['cellpadding'] = $tmp['cellpadding'];
+ if (isset($attrs['cellpadding'])) {
+ $this->_attrs['cellpadding'] = $attrs['cellpadding'];
}
}
- $this->HTML_Table($this->_atribTabla);
- //Modifico los atributos de todas las tablas
- //Hay que encontrar o hacer una funcion que setee los atributos para las futuras
- //inserciones.
+ $this->HTML_Table($this->_attrs);
}
-
+
/**
- * 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 = '', $atributos = '')
+ * 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, $this->_conf['atributos']['celda_cabecera'],'TH');
+ 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
- */
- function agregarFila ($contenido = '')
+ * 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,$this->_conf['atributos']['celda_comun']);
+ 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
- */
- function rowSpan ($fila, $columna, $valor)
+ * 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);
+ 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
- */
- function colSpan ($fila, $columna, $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);
+ return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
}
/**
- * Modifica el atributo aling de la celda pasada por parametro
- *
- * @param int $fila
- * @param int $columna
- * @param string $valor (left, center, right...)
- *
- * @access public
- */
- function align ($fila, $columna, $valor)
+ * 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
- */
- function setColCabecera ($columna)
+ /**
+ * Setea una columna como del tipo cabecera
+ *
+ * @param int $columna
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColCabecera($columna)
{
- return $this->updateColAttributes($columna,$this->_conf['atributos']['celda_cabecera']);
+ return $this->updateColAttributes($columna, 'cabecera');
}
/**
- * Setea una columna como del tipo titulo
- *
- * @param int $columna
- *
- * @access public
- */
- function setColTitulo ($columna)
+ * Setea una columna como del tipo titulo
+ *
+ * @param int $columna
+ *
+ * @access public
+ * @deprecated
+ */
+ function setColTitulo($columna)
{
- return $this->updateColAttributes($columna,$this->_conf['atributos']['celda_titulo']);
+ return $this->updateColAttributes($columna, 'titulo');
}
-
- /**
- * Alinea una columna entera
- *
- * @param int $columna
- * @param string $valor
- *
- * @access public
- */
- function setColAlign ($columna, $valor)
+
+ /**
+ * 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
- */
- function setColWidth ($columna, $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
- */
- function setCellBgcolor ($fila, $columna, $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 doble es 0, devuelve el html comun y corriente, si es
- * distinto de 0 devuelve una tabla sola
- *
- * @param int $doble
- *
- * @return string Html
- *
- * @access public
- */
- function toHtml ($doble = 0)
+ * 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.
- if ($doble == 0 ) {
+ if ($simple == 0) {
$tmp = $this->_parseAttributes($this->_conf['atributos']['tabla_contenedora']);
- $tmp['width'] = $this->_atribTabla['width'];
+ $tmp['width'] = $this->_attrs['width'];
$tabla_externa = new HTML_Table($tmp);
- $tabla_externa->setCellContents(0,0,parent::toHtml(),$this->_conf['atributos']['celda_comun']);
+ $tabla_externa->setCellContents(0, 0, parent::toHtml());
+ $tabla_externa->setCellAttributes(0, 0, $this->_conf['atributos']['celda_comun']);
$result = $tabla_externa->toHtml();
}
else {
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 = array();
+ $rta = $this->_conf['atributos']['celda_comun'];
+ #$sin_estilo = true;
+ foreach ($attrs as $attr => $val) {
+ $attr = strtolower($attr);
+ switch ($attr) {
+ // Estilos de celda
+ case 'comun':
+ case 'cabecera':
+ case 'titulo':
+ #$sin_estilo = false;
+ $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':
+ $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);
+ }
+ }
+ // Si no tiene estilo, agrego estilo comun.
+ #if ($sin_estilo) {
+ #$rta = $this->_conf['atributos']['celda_comun'];
+ #}
+ return $rta;
+ }
+
+}
+
?>