]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/Tabla.php
Se agregan nuevos metodos a Tabla para agregar cabeceras y pies.
[mecon/meconlib.git] / lib / MECON / HTML / Tabla.php
index cd1489624d59012fd6839bd040f92a13ca5f002b..eb536ab9586536394966e23cd0d707e099679b9e 100644 (file)
@@ -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.');
+        }
+    }
+
 }
 
 ?>