X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/5fc4d2c060a308c91604bfec802ef67cbcd862e3..d45895c22b503bf01e0fa82e54dfe35c6157a231:/lib/MECON/HTML/Tabla.php diff --git a/lib/MECON/HTML/Tabla.php b/lib/MECON/HTML/Tabla.php index b4a7551..f5cdad0 100644 --- a/lib/MECON/HTML/Tabla.php +++ b/lib/MECON/HTML/Tabla.php @@ -26,6 +26,7 @@ $Id$ require_once 'HTML/Table.php'; require_once 'MECON/HTML/Image.php'; +require_once 'MECON/HTML/Link.php'; /** * Libreria para le manejo de las tablas de los sistemas de intranet. @@ -140,15 +141,7 @@ class MECON_HTML_Tabla extends HTML_Table { $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')); - } + $this->_addSpecialRow($this->_cabecera, $tabla_externa); // Si tiene cabecera o pie, agrega la tabla original. if ($this->_cabecera or $this->_pie) { //$id = $tabla_externa->addRow($result); @@ -160,16 +153,35 @@ class MECON_HTML_Tabla extends HTML_Table { )); } // Si tiene pie, lo agrega. - if ($this->_pie) { - $id = $tabla_externa->addRow($this->_pie, array( + $this->_addSpecialRow($this->_pie, $tabla_externa); + return ($this->_cabecera or $this->_pie) ? $tabla_externa->toHtml() : $result; + } + + function _addSpecialRow($array, &$tabla) { + if ($array) { + $row = array(); + foreach ($array as $key => $val) { + $row[$key] = $val ? $val : ' '; + } + $id = $tabla->addRow($row, array( 'valign' => 'middle', - 'width' => '33%', + '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')); + // Si no hay celda central, hace colspan. + if ($array[0] and !$array[1]) { + $tabla->updateCellAttributes($id, 0, array( + 'colspan' => 2, + 'width' => '67%')); + /* } XXX se complica hacer el colspan para atras: + elseif ($array[2] and !$array[1]) { + $tabla->updateCellAttributes($id, 1, array( + 'colspan' => 2, + 'width' => '67%')); */ + } + $tabla->updateCellAttributes($id, 0, array('align' => 'left')); + $tabla->updateCellAttributes($id, 1, array('align' => 'center')); + $tabla->updateCellAttributes($id, 2, array('align' => 'right')); } - return ($this->_cabecera or $this->_pie) ? $tabla_externa->toHtml() : $result; } /** @@ -254,7 +266,9 @@ class MECON_HTML_Tabla extends HTML_Table { case 'comun': case 'cabecera': case 'titulo': - $rta = array_merge($rta, $this->_conf['atributos']["celda_$attr"]); + $rta = array_merge($rta, + $this->_conf['atributos']["celda_$attr"]); + $rta[$attr] = $attr; break; case 'align': case 'valign': @@ -277,6 +291,27 @@ class MECON_HTML_Tabla extends HTML_Table { case 'th': $rta[$attr] = ''; break; + case 'clara': + $tmp = $this->_conf['atributos']['celda_comun']; + $tmp['bgcolor'] = $this->_conf['atributos']['celda_titulo']['bgcolor']; + $tmp['class'] = $this->_conf['atributos']['celda_titulo']['class']; + $rta = array_merge($rta, $tmp); + $rta[$attr] = $attr; + break; + case 'oscura': + $tmp = $this->_conf['atributos']['celda_comun']; + $tmp['bgcolor'] = $this->_conf['atributos']['celda_cabecera']['bgcolor']; + $tmp['class'] = $this->_conf['atributos']['celda_cabecera']['class']; + $rta = array_merge($rta, $tmp); + $rta[$attr] = $attr; + break; + case 'comun_clara': + $tmp = $this->_conf['atributos']['celda_comun']; + $tmp['class'].= '_clara'; + $rta = array_merge($rta, + $this->_conf['atributos']["celda_comun"]); + $rta[$attr] = $attr; + break; default: trigger_error("No se permite setear el atributo $attr", E_USER_ERROR); } @@ -297,14 +332,14 @@ class MECON_HTML_Tabla extends HTML_Table { * Setea la cabecera. * Ejemplo: * @code - * $tabla->setCabecera(array('Hola', ' ', 'mundo!')); + * $tabla->setCabecera(array('Hola', '', 'mundo!')); * @endcode * * @param array $cabecera Array de 3 elementos, que son la celda izquierda, * central y derecha de la cabecera (en ese órden). */ function setCabecera($cabecera) { - if (count($pie) != 3) { + if (count($cabecera) != 3) { $this->raiseError('Parámetro incorrecto: debe ser un array de 3 elementos.'); } $this->_cabecera = $cabecera; @@ -325,7 +360,7 @@ class MECON_HTML_Tabla extends HTML_Table { */ function updateCabecera($cabecera, $lugar) { if (!$this->_cabecera) { - $this->_cabecera = array(' ', ' ', ' '); + $this->_cabecera = array('', '', ''); } if ($lugar == 'izquierda') { $this->_cabecera[0] = $cabecera; @@ -365,7 +400,7 @@ class MECON_HTML_Tabla extends HTML_Table { */ function updatePie($pie, $lugar) { if (!$this->_pie) { - $this->_pie = array(' ', ' ', ' '); + $this->_pie = array('', '', ''); } if ($lugar == 'izquierda') { $this->_pie[0] = $pie; @@ -412,7 +447,7 @@ class MECON_HTML_Tabla extends HTML_Table { } switch ($id) { case 'nuevo': - $img = new MECON_HTML_Image('/MECON/images/general_nuevo', '-<'); + $img = new MECON_HTML_Image('/MECON/images/general_nuevo', ' >>'); // Si no tiene titulo, le pone titulo por defecto. if (!$link->getContents()) { $link->setContents('Nuevo'); @@ -421,7 +456,7 @@ class MECON_HTML_Tabla extends HTML_Table { $this->updateCabecera($link, 'derecha'); break; case 'nuevos': - $img = new MECON_HTML_Image('/MECON/images/general_muchos_nuevo', '-<'); + $img = new MECON_HTML_Image('/MECON/images/general_muchos_nuevo', ' >>'); // Si no tiene titulo, le pone titulo por defecto. if (!$link->getContents()) { $link->setContents('Nuevos'); @@ -430,7 +465,7 @@ class MECON_HTML_Tabla extends HTML_Table { $this->updateCabecera($link, 'derecha'); break; case 'buscar': - $img = new MECON_HTML_Image('/MECON/images/general_lupa', 'Q'); + $img = new MECON_HTML_Image('/MECON/images/general_lupa', ' ?>'); // Si no tiene titulo, le pone titulo por defecto. if (!$link->getContents()) { $link->setContents('Buscar'); @@ -439,7 +474,7 @@ class MECON_HTML_Tabla extends HTML_Table { $this->updateCabecera($link, 'derecha'); break; case 'siguiente': - $img = new MECON_HTML_Image('/MECON/images/general_posterior', '-<'); + $img = new MECON_HTML_Image('/MECON/images/general_posterior', ' >>'); // Si no tiene titulo, le pone titulo por defecto. if (!$link->getContents()) { $link->setContents('Siguiente'); @@ -448,7 +483,7 @@ class MECON_HTML_Tabla extends HTML_Table { $this->updatePie($link, 'derecha'); break; case 'volver': - $img = new MECON_HTML_Image('/MECON/images/general_anterior', '>-'); + $img = new MECON_HTML_Image('/MECON/images/general_anterior', '<< '); // Si no tiene titulo, le pone titulo por defecto. $cont = $link->getContents() ? $link->getContents() : 'Volver'; $link->setContents($img); @@ -456,7 +491,7 @@ class MECON_HTML_Tabla extends HTML_Table { $this->updateCabecera($link, 'izquierda'); break; case 'anterior': - $img = new MECON_HTML_Image('/MECON/images/general_anterior', '>-'); + $img = new MECON_HTML_Image('/MECON/images/general_anterior', '<< '); // Si no tiene titulo, le pone titulo por defecto. $cont = $link->getContents() ? $link->getContents() : 'Anterior'; $link->setContents($img);