]> git.llucax.com Git - mecon/meconlib.git/blobdiff - HTML/php/Tabla.php
(no commit message)
[mecon/meconlib.git] / HTML / php / Tabla.php
index a635c429096664c3be451c30e658aecaaff187e4..df56c442506edca397045490cf618ec9354ce32d 100644 (file)
@@ -57,34 +57,32 @@ class Tabla extends HTML_Table {
      * 
      * @access public
      */
-    function Tabla($attrs = ''
+    function Tabla($attrs = null
     {
         $this->_conf = include 'Tabla/conf_Tabla.php'; // Obtengo los valores particulares de configuracion
         // Seteo los atributos para la tabla
-        $this->_attrs = $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->_attrs['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->_attrs['bgcolor'] = $tmp['bgcolor'];
+            if (isset($attrs['bgcolor'])) {
+                $this->_attrs['bgcolor'] = $attrs['bgcolor'];
             }
-            if (isset($tmp['cellspacing'])) {
-                $this->_attrs['cellspacing']  = $tmp['cellspacing'];
+            if (isset($attrs['cellspacing'])) {
+                $this->_attrs['cellspacing']  = $attrs['cellspacing'];
             }            
-            if (isset($tmp['cellpadding'])) {
-                $this->_attrs['cellpadding']  = $tmp['cellpadding'];
+            if (isset($attrs['cellpadding'])) {
+                $this->_attrs['cellpadding']  = $attrs['cellpadding'];
             }            
         }        
         $this->HTML_Table($this->_attrs);
-        //Modifico los atributos de todas las tablas
-        //Hay que encontrar o hacer una funcion que setee los atributos para las futuras
-        //inserciones.
     }    
 
-
     /**                 
      * Agrega una fila del tipo Cabecera
      *
@@ -104,9 +102,7 @@ class Tabla extends HTML_Table {
      */
     function agregarFilaCabecera($contenido = '', $atributos = '')
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // addRow($content, HTML_TABLA_HEADER)
-        return $this->addRow($contenido, $this->_conf['atributos']['celda_cabecera'],'TH');
+        return $this->addRow($contenido, 'cabecera');
     }
 
     /**                 
@@ -128,12 +124,9 @@ class Tabla extends HTML_Table {
      */
     function agregarFila($contenido = '')
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // addRow($content)
-        return $this->addRow($contenido,$this->_conf['atributos']['celda_comun']);
+        return $this->addRow($contenido, 'comun');
     }
 
-
     /**                 
      * Modifica el atributo rowSpan a la celda pasada por parametro
      *
@@ -146,7 +139,7 @@ class Tabla extends HTML_Table {
      */
     function rowSpan($fila, $columna, $valor)
     {
-        return $this->updateCellAttributes($fila, $columna, 'rowspan='.$valor);
+        return $this->updateCellAttributes($fila, $columna, 'rowspan="'.$valor.'"');
     }
 
     /**                 
@@ -161,7 +154,7 @@ class Tabla extends HTML_Table {
      */
     function colSpan($fila, $columna, $valor)
     {
-        return $this->updateCellAttributes($fila, $columna, 'colspan='.$valor);
+        return $this->updateCellAttributes($fila, $columna, 'colspan="'.$valor.'"');
     }
 
     /**                 
@@ -176,12 +169,10 @@ class Tabla extends HTML_Table {
      */
     function align($fila, $columna, $valor)
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // setCell($row, $col, HTML_TABLA_ALIGN_LEFT) [o .._CENTER o .._RIGHT]
         return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"');
     }
 
-    /**                 
+    /**
      * Setea una columna como del tipo cabecera    
      *
      * @param int $columna
@@ -191,9 +182,7 @@ class Tabla extends HTML_Table {
      */
     function setColCabecera($columna)
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // setCol($col, HTML_TABLA_HEADER)
-        return $this->updateColAttributes($columna,$this->_conf['atributos']['celda_cabecera']);
+        return $this->updateColAttributes($columna, 'cabecera');
     }
 
     /**                 
@@ -206,9 +195,7 @@ class Tabla extends HTML_Table {
      */
     function setColTitulo($columna)
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // setCol($col, HTML_TABLA_TITLE)
-        return $this->updateColAttributes($columna,$this->_conf['atributos']['celda_titulo']);
+        return $this->updateColAttributes($columna, 'titulo');
     }
 
     /**                 
@@ -222,8 +209,6 @@ class Tabla extends HTML_Table {
      */
     function setColAlign($columna, $valor)
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // setCol($col, HTML_TABLA_ALIGN_*)
         return $this->updateColAttributes($columna,'align="'.$valor.'"');
     }
 
@@ -238,8 +223,6 @@ class Tabla extends HTML_Table {
      */
     function setColWidth($columna, $valor)
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // setCol($col, HTML_TABLA_WIDTH, $val)
         return $this->updateColAttributes($columna,'width="'.$valor.'"');
     }
 
@@ -255,8 +238,6 @@ class Tabla extends HTML_Table {
      */
     function setCellBgcolor($fila, $columna, $valor)
     {
-        // FIXME - aca hay que llamar a la nueva funcion "no deprecated":
-        // setCell($row, $col, HTML_TABLA_BGCOLOR, $val)
         return $this->updateCellAttributes($fila, $columna,'bgcolor="'.$valor.'"');
     }
 
@@ -281,7 +262,8 @@ class Tabla extends HTML_Table {
             $tmp = $this->_parseAttributes($this->_conf['atributos']['tabla_contenedora']);
             $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 {
@@ -292,97 +274,123 @@ class Tabla extends HTML_Table {
     }
 
     /**
-     * Cambia las propiedades de una columna.
-     * 
-     * Cambia las propiedades de una columna. Si $attrs es un array
+     * 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. En este caso se ignora el tercer parametro ($val).
-     * Si $attrs es un string, se setea el atributo descripto por $attrs
-     * al valor $val.
+     * con los valores.
      *
+     * @param int $row
      * @param int $col
      * @param mixed $attrs
-     * @param mixed $val
-     * 
-     * @access public
-     */
-    function setCol($col, $attrs, $val = true)
-    {
-        if (!is_array($attrs)) {}
-            $attrs = array($attrs => $val);
-        }
-        foreach ($attrs as $attr => $val) {
-            // El switch se puede reciclar y hacer un metodo generico...
-            switch (strtoupper($attr)) {
-                case 'HEADER':
-                    return $this->updateColAttributes($col, $this->_conf['atributos']['celda_cabecera']);
-                case 'ALIGN':
-                    return $this->updateColAttributes($col,"align=\"$val\"");
-                case 'WIDTH':
-                    return $this->updateColAttributes($col,"width=\"$val\"");
-                default:
-                    trigger_error("No se puede setear el atributo $attr a la columna $col", E_USER_ERROR);
-            }
-        }
-    }
-    
-    /**
-     * Funcion que establece los atributos de una fila
      *
-     * @param int $row
-     * @param string $attrs
-     * 
      * @access public
      */
-    function setRow($row, $attrs, $val = true)
+    function updateCellAttributes($row, $col, $attrs)
     {
-    
+        return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs));
     }
-    
+
     /**
-     * Funcion que establece los atributos de una celda
+     * 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 string $attr
+     * @param mixed $attrs
      *
      * @access public
      */
-    function setCell($row, $col, $attrs, $val = true) 
+    function setCellAttributes($row, $col, $attrs)
     {
-    
+        return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs));
     }
 
     /**
-     * Funcion que agrega una fila
+     * 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 array $content
-     * @param string $attr
+     * @param mixed $content
+     * @param mixed $attrs
      *
      * @return int $rowId
      *
      * @access public
      */
-    function addRow($content, $attrs = '', $val = true)
+    function addRow($content, $attrs = 'comun')
     {
-        $this->addRow
-        return $rowId
+        return parent::addRow($content, $attrs);
     }
     
     /**
-     * Funcion que agrega contenido a una celda
+     * 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 int $row
-     * @param int $col
-     * @param array $content
-     * @param string $attr
+     * @param string $attrs
      *
-     * @access public
+     * @return string
+     * @access private
      */
-    function setCellContents($row, $col, $content, $attrs = '', $val = true)
+    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;
     }
 
-}  
+}
+
 ?>