X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/2548f12cd39bc766801a45311cf8815c7b8f0c48..8fe2edcefc329c54852591a34c8a42a6a2b7c933:/lib/MECON/HTML/Tabla.php diff --git a/lib/MECON/HTML/Tabla.php b/lib/MECON/HTML/Tabla.php index cd14896..eb536ab 100644 --- a/lib/MECON/HTML/Tabla.php +++ b/lib/MECON/HTML/Tabla.php @@ -48,6 +48,22 @@ class MECON_HTML_Tabla extends HTML_Table { */ var $_attrs; + /** + * Íconos e información que va arriba de la tabla. + * + * @var array() + * @access private. + */ + var $_cabecera = array(); + + /** + * Íconos e información que va abajo de la tabla. + * + * @var array() + * @access private. + */ + var $_pie = array(); + /** * Constructor. * Puede recibir como parametro un string con los atributos que se @@ -60,8 +76,7 @@ class MECON_HTML_Tabla extends HTML_Table { * * @access public */ - function MECON_HTML_Tabla($attrs = null, $estilo = 'comun') - { + function MECON_HTML_Tabla($attrs = null, $estilo = 'comun') { // Obtengo los valores particulares de configuracion. $this->_conf = include(dirname(__FILE__) . '/Tabla/estilo_' . $estilo . '.php'); // Seteo los atributos para la tabla @@ -105,8 +120,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function agregarFilaCabecera($contenido = '', $atributos = '') - { + function agregarFilaCabecera($contenido = '', $atributos = '') { return $this->addRow($contenido, 'cabecera'); } @@ -125,8 +139,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function agregarFila($contenido = '') - { + function agregarFila($contenido = '') { return $this->addRow($contenido, 'comun'); } @@ -140,8 +153,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function rowSpan($fila, $columna, $valor) - { + function rowSpan($fila, $columna, $valor) { return $this->updateCellAttributes($fila, $columna, 'rowspan="'.$valor.'"'); } @@ -155,8 +167,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function colSpan($fila, $columna, $valor) - { + function colSpan($fila, $columna, $valor) { return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"'); } @@ -170,8 +181,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function align($fila, $columna, $valor) - { + function align($fila, $columna, $valor) { return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"'); } @@ -183,8 +193,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function setColCabecera($columna) - { + function setColCabecera($columna) { return $this->updateColAttributes($columna, 'cabecera'); } @@ -196,8 +205,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function setColTitulo($columna) - { + function setColTitulo($columna) { return $this->updateColAttributes($columna, 'titulo'); } @@ -210,8 +218,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function setColAlign($columna, $valor) - { + function setColAlign($columna, $valor) { return $this->updateColAttributes($columna,'align="'.$valor.'"'); } @@ -224,8 +231,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function setColWidth($columna, $valor) - { + function setColWidth($columna, $valor) { return $this->updateColAttributes($columna,'width="'.$valor.'"'); } @@ -239,8 +245,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @access public * @deprecated */ - function setCellBgcolor($fila, $columna, $valor) - { + function setCellBgcolor($fila, $columna, $valor) { return $this->updateCellAttributes($fila, $columna,'bgcolor="'.$valor.'"'); } @@ -258,12 +263,10 @@ class MECON_HTML_Tabla extends HTML_Table { * * @access public */ - function toHtml($simple = 0) - { - - // Agregar la tabla de fondo. + function toHtml($simple = 0) { if ($simple) { $result = parent::toHtml(); + // Agregar la tabla de fondo. } else { $contenedora = $this->_conf['atributos']['tabla_contenedora']; $contenedora['width'] = $this->getAttribute('width'); @@ -274,8 +277,41 @@ class MECON_HTML_Tabla extends HTML_Table { $this->_conf['atributos']['celda_contenedora']); $result = $tabla_externa->toHtml(); } - - return $result; + // Si tiene pie o cabecera, crea tabla. + if ($this->_cabecera or $this->_pie) { + $tabla_externa = new HTML_Table(array('width'=>'100%','border'=>0)); + } + // Si tiene cabecera, la agrega. + if ($this->_cabecera) { + $tabla_externa->addRow($this->_cabecera, array( + 'valign' => 'middle', + 'width' => '33%', + )); + $tabla_externa->updateCellAttributes(0, 0, array('align' => 'left')); + $tabla_externa->updateCellAttributes(0, 1, array('align' => 'center')); + $tabla_externa->updateCellAttributes(0, 2, array('align' => 'right')); + } + // Si tiene cabecera o pie, agrega la tabla original. + if ($this->_cabecera or $this->_pie) { + //$id = $tabla_externa->addRow($result); + $tabla_externa->addRow(array($result), array( + 'align' => 'center', + 'valign' => 'middle', + 'width' => '100%', + 'colspan' => '3', + )); + } + // Si tiene pie, lo agrega. + if ($this->_pie) { + $id = $tabla_externa->addRow($this->_pie, array( + 'valign' => 'middle', + 'width' => '33%', + )); + $tabla_externa->updateCellAttributes($id, 0, array('align' => 'left')); + $tabla_externa->updateCellAttributes($id, 1, array('align' => 'center')); + $tabla_externa->updateCellAttributes($id, 2, array('align' => 'right')); + } + return ($this->_cabecera or $this->_pie) ? $tabla_externa->toHtml() : $result; } /** @@ -291,8 +327,7 @@ class MECON_HTML_Tabla extends HTML_Table { * * @access public */ - function updateCellAttributes($row, $col, $attrs) - { + function updateCellAttributes($row, $col, $attrs) { return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs, false)); } @@ -309,8 +344,7 @@ class MECON_HTML_Tabla extends HTML_Table { * * @access public */ - function setCellAttributes($row, $col, $attrs) - { + function setCellAttributes($row, $col, $attrs) { return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs, true)); } @@ -327,8 +361,7 @@ class MECON_HTML_Tabla extends HTML_Table { * * @access public */ - function addRow($content, $attrs = 'comun') - { + function addRow($content, $attrs = 'comun') { return parent::addRow($content, $attrs); } @@ -344,8 +377,7 @@ class MECON_HTML_Tabla extends HTML_Table { * @return array * @access private */ - function _translateAttributes($attrs, $isSet) - { + function _translateAttributes($attrs, $isSet) { if (!$attrs) { return array(); } @@ -403,6 +435,70 @@ class MECON_HTML_Tabla extends HTML_Table { return $this->_conf['css']; } + /** + * Setea la cabecera. + * + * @param array $cabecera Celdas a agregar a la cabecera. + */ + function setCabecera($cabecera) { + $this->_cabecera = $cabecera; + } + + /** + * Agrega información a la cabecera de la tabla. + * + * @param mixed $cabecera Celda a agregar a la cabecera. Puede ser un string + * o un objeto con un método toHtml(). + * @param string $lugar Lugar en donde poner la cabecera. Puede ser + * 'izquierda', 'centro' o 'derecha'. + */ + function updateCabecera($cabecera, $lugar) { + if (!$this->_cabecera) { + $this->_cabecera = array(' ', ' ', ' '); + } + if ($lugar == 'izquierda') { + $this->_cabecera[0] = $cabecera; + } elseif ($lugar == 'centro') { + $this->_cabecera[1] = $cabecera; + } elseif ($lugar == 'derecha') { + $this->_cabecera[2] = $cabecera; + } else { + $this->raiseError('Parámetro incorrecto: lugar debe ser izquierda, centro o derecha.'); + } + } + + /** + * Setea el pie. + * + * @param array $pie Celdas a agregar al pie. + */ + function setPie($pie) { + $this->_pie = $pie; + } + + /** + * Agrega información al pie de la tabla. + * + * @param mixed $pie Celda a agregar al pie. Puede ser un string + * o un objeto con un método toHtml(). + * @param string $lugar Lugar en donde poner el pie. Puede ser + * 'izquierda', 'centro' o 'derecha'. + */ + function updatePie($pie, $lugar = 0) { + if (!$this->_pie) { + $this->_pie = array(' ', ' ', ' '); + } + if ($lugar == 'izquierda') { + $this->_pie[0] = $pie; + } elseif ($lugar == 'centro') { + $this->_pie[1] = $pie; + } elseif ($lugar == 'derecha') { + $this->_pie[2] = $pie; + } else { + $this->raiseError('Parámetro incorrecto: lugar debe ser izquierda, centro o derecha.'); + } + } + } ?>