]> git.llucax.com Git - mecon/meconlib.git/blobdiff - HTML/php/Tabla.php
Se mejora un poco la implementación del constructor para que los atributos
[mecon/meconlib.git] / HTML / php / Tabla.php
index ae441c8ae1d2210847c6518985ba7851b5ea3898..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 ($attrs != '') {
-            $tmp = $this->_parseAttributes($attrs);
-            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
      *
@@ -129,7 +127,6 @@ class Tabla extends HTML_Table {
         return $this->addRow($contenido, 'comun');
     }
 
-
     /**                 
      * Modifica el atributo rowSpan a la celda pasada por parametro
      *
@@ -175,7 +172,7 @@ class Tabla extends HTML_Table {
         return $this->updateCellAttributes($fila, $columna, 'align="'.$valor.'"');
     }
 
-    /**                 
+    /**
      * Setea una columna como del tipo cabecera    
      *
      * @param int $columna
@@ -265,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 {
@@ -275,7 +273,6 @@ class Tabla extends HTML_Table {
         return $result;
     }
 
-    
     /**
      * Cambia las propiedades de una celda
      *
@@ -291,7 +288,7 @@ class Tabla extends HTML_Table {
      */
     function updateCellAttributes($row, $col, $attrs)
     {
-        return parent::updateCellAttributes($row, $col, $this->_attrToString($attrs));
+        return parent::updateCellAttributes($row, $col, $this->_translateAttributes($attrs));
     }
 
     /**
@@ -309,7 +306,7 @@ class Tabla extends HTML_Table {
      */
     function setCellAttributes($row, $col, $attrs)
     {
-        return parent::setCellAttributes($row, $col, $this->_attrToString($attrs));
+        return parent::setCellAttributes($row, $col, $this->_translateAttributes($attrs));
     }
 
     /**
@@ -327,7 +324,7 @@ class Tabla extends HTML_Table {
      */
     function addRow($content, $attrs = 'comun')
     {
-        return parent::addRow($content,$attrs);
+        return parent::addRow($content, $attrs);
     }
     
     /**
@@ -341,26 +338,26 @@ class Tabla extends HTML_Table {
      * @return string
      * @access private
      */
-    function _attrToString($attrs) 
+    function _translateAttributes($attrs) 
     {
-        $rta = '';
         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':
-                    $rta.=$this->_conf['atributos']['celda_comun'];
-                    break;
                 case 'cabecera':
-                    $rta.=$this->_conf['atributos']['celda_cabecera'];
-                    break;
                 case 'titulo':
-                    $rta.=$this->_conf['atributos']['celda_titulo'];
+                    #$sin_estilo = false;
+                    $rta = array_merge($rta, $this->_conf['atributos']["celda_$attr"]);
                     break;
                 case 'align':
                 case 'valign':
@@ -369,25 +366,31 @@ class Tabla extends HTML_Table {
                 case 'rowspan':
                 case 'colspan':
                 case 'bgcolor':
-                case 'cellspacing':
-                case 'cellpadding':
                 case 'class':
                 case 'border':
-                   $rta.="$attr=\"$val\"";
+                case 'cellspacing':
+                case 'cellpadding':
+                    $rta[$attr] = $val;
                     break;
                 case 'spacing':
                 case 'padding':
-                   $rta.="cell$attr=\"$val\"";
+                    $rta["cell$attr"] = $val;
                     break;
                 case 'nowrap':
                 case 'th':
-                   $rta.="$attr";
+                    $rta[$attr] = '';
                     break;
                 default:
-                    trigger_error("No se puede setear el atributo $attr", E_USER_ERROR);
+                    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;
     }
-}  
+
+}
+
 ?>