]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/Tabla.php
BugFix.
[mecon/meconlib.git] / lib / MECON / HTML / Tabla.php
index b4a7551e97e765a4f11d056e3b906619540b5d6f..f5cdad0ff98daae9b6d8e12fb5d175a3ba11c349 100644 (file)
@@ -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', '&gt;-');
+                $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);