]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/TablaDB.php
Se corrige pequeño bug a Link.
[mecon/meconlib.git] / lib / MECON / HTML / TablaDB.php
index 0b8e90ed0e5712163bee5b22a5ef2207e74a9ee0..6876e947aa8120f8d08af2a5573989e5345f06ed 100644 (file)
@@ -56,6 +56,11 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
      */
     var $_appendRowsData = array();
 
      */
     var $_appendRowsData = array();
 
+    /**
+     * Prefijo a usar para las variables GET que genera la tabla.
+     */
+    var $_getVarPrefix = 'tabladb_';
+
     /**
      * Constructor. 
      * Puede recibir como parametro un string con los atributos que se 
     /**
      * Constructor. 
      * Puede recibir como parametro un string con los atributos que se 
@@ -76,6 +81,20 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
         parent::MECON_HTML_Tabla($attrs, $estilo);
     }    
 
         parent::MECON_HTML_Tabla($attrs, $estilo);
     }    
 
+    /**
+     * Establece el prefijo usado para las variables de GET que genera la tabla.
+     */
+    function setGetVarPrefix($prefix) {
+        $this->_getVarPrefix = $prefix;
+    }
+
+    /**
+     * Obtiene el prefijo usado para las variables de GET que genera la tabla.
+     */
+    function getGetVarPrefix() {
+        return $this->_getVarPrefix;
+    }
+
     /**
      * Agrega un páginador a la tabla, basado en un resultado de una base de datos.
      * Ejemplo:
     /**
      * Agrega un páginador a la tabla, basado en un resultado de una base de datos.
      * Ejemplo:
@@ -109,15 +128,17 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
      *                    GET) o un string.
      * @param int $limit Parámetro usado para crear el MECON_DB_Pager.
      * @param int $maxpages Parámetro usado para crear el MECON_DB_Pager.
      *                    GET) o un string.
      * @param int $limit Parámetro usado para crear el MECON_DB_Pager.
      * @param int $maxpages Parámetro usado para crear el MECON_DB_Pager.
+     * @param string $getvar Nombre de la variable GET a usar para indicar el número
+     *               de página actual (se le pone el \ref setGetPrefix prefijo)
      *
      * @return MECON_DB_Pager Pager que se puede usar para realizar los fetch de
      *         los resultados de la página actual.
      *
      * @see MECON_DB_Pager.
      */
      *
      * @return MECON_DB_Pager Pager que se puede usar para realizar los fetch de
      *         los resultados de la página actual.
      *
      * @see MECON_DB_Pager.
      */
-    function addPager($result, $tipo = null, $link = null, $limit = 10, $maxpages = 21) {
+    function addPager($result, $tipo = null, $link = null, $limit = 10, $maxpages = 21, $getvar = 'from') {
         // Creo el pager con el resultado.
         // Creo el pager con el resultado.
-        $pager = new MECON_DB_Pager($result, @$_GET['pager_from'], $limit, $maxpages);
+        $pager = new MECON_DB_Pager($result, @$_GET[$this->_getVarPrefix.$getvar], $limit, $maxpages);
         // Obtengo un link válido.
         if (!$link) {
             $link = @$_SERVER['PHP_SELF'];
         // Obtengo un link válido.
         if (!$link) {
             $link = @$_SERVER['PHP_SELF'];
@@ -139,22 +160,22 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
         }
         // Me fijo si tiene cada uno de los elementos y los agrego.
         if (in_array('anterior', $tipo) and $pager->numRows() and $pager->currentpage != 1) {
         }
         // Me fijo si tiene cada uno de los elementos y los agrego.
         if (in_array('anterior', $tipo) and $pager->numRows() and $pager->currentpage != 1) {
-            $link->setGetVar('pager_from', $pager->prev);
+            $link->setGetVar($this->_getVarPrefix.$getvar, $pager->prev);
             $this->addLink('anterior', $link);
         }
         if (in_array('siguiente', $tipo) and $pager->numRows() and $pager->currentpage != $pager->numpages) {
             $this->addLink('anterior', $link);
         }
         if (in_array('siguiente', $tipo) and $pager->numRows() and $pager->currentpage != $pager->numpages) {
-            $link->setGetVar('pager_from', $pager->next);
+            $link->setGetVar($this->_getVarPrefix.$getvar, $pager->next);
             $this->addLink('siguiente', $link);
         }
         if (in_array('paginas', $tipo) and $pager->numRows() and $pager->numpages > 1) {
             $this->addLink('siguiente', $link);
         }
         if (in_array('paginas', $tipo) and $pager->numRows() and $pager->numpages > 1) {
-            $from = @$_GET['pager_from'];
+            $from = @$_GET[$this->_getVarPrefix.$getvar];
             $pags = '';
             $lnk = $link->getContents();
             foreach ($pager->pages as $page => $start_row) {
                 if ($start_row == $from) {
                     $pags .= $page;
                 } else {
             $pags = '';
             $lnk = $link->getContents();
             foreach ($pager->pages as $page => $start_row) {
                 if ($start_row == $from) {
                     $pags .= $page;
                 } else {
-                    $link->setGetVar('pager_from', $start_row);
+                    $link->setGetVar($this->_getVarPrefix.$getvar, $start_row);
                     $link->setContents($page);
                     $pags .= $link->toHtml();
                 }
                     $link->setContents($page);
                     $pags .= $link->toHtml();
                 }
@@ -255,24 +276,27 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
         }
     }
 
         }
     }
 
-    function prependRowsData($format, $campos = array()) {
+    function addRowsData($format, $campos = array(), $lugar = 'append') {
         if (!is_array($campos)) {
             $campos = array($campos);
         }
         if (!is_array($campos)) {
             $campos = array($campos);
         }
-        $this->_prependRowsData[] = array($format, $campos);
-    }
-
-    function appendRowsData($format, $campos = array()) {
-        if (!is_array($campos)) {
-            $campos = array($campos);
+        switch (strtolower($lugar)) {
+            case 'prepend':
+                $this->_prependRowsData[] = array($format, $campos);
+                break;
+            case 'append':
+                $this->_appendRowsData[] = array($format, $campos);
+                break;
+            default:
+                $this->raiseError('Lugar incorrecto. Lugares soportados: append, prepend.');
         }
         }
-        $this->_appendRowsData[] = array($format, $campos);
     }
 
     function _buildRowsData($datos, $row, $array) {
         if ($array) {
             foreach ($array as $data) {
                 list($format, $fields) = $data;
     }
 
     function _buildRowsData($datos, $row, $array) {
         if ($array) {
             foreach ($array as $data) {
                 list($format, $fields) = $data;
+                // Si tiene formatos y argumentos.
                 if ($fields) {
                     $args = array($format);
                     foreach ($fields as $field) {
                 if ($fields) {
                     $args = array($format);
                     foreach ($fields as $field) {
@@ -283,7 +307,19 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
                         }
                     }
                     $datos[] = call_user_func_array('sprintf', $args);
                         }
                     }
                     $datos[] = call_user_func_array('sprintf', $args);
+                // Si tiene solo formato.
                 } else {
                 } else {
+                    #echo "TAG: $format<br>";
+                    // Si es un link, traduce las variables GET.
+                    if (is_a($format, 'mecon_html_link')) {
+                        $vars = $format->getGetVars();
+                        foreach ($vars as $var => $val) {
+                            if (preg_match("/^{$this->_getVarPrefix}(.+)$/", $var, $m)
+                                    and ($val === null)) {
+                                $format->setGetVar($var, $row[$m[1]]);
+                            }
+                        }
+                    }
                     $datos[] = $format;
                 }
             }
                     $datos[] = $format;
                 }
             }
@@ -291,6 +327,54 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
         return $datos;
     }
 
         return $datos;
     }
 
+    function addRowsIcon($id, $campos = array(), $link = null, $lugar = 'append') {
+        if (is_string($campos)) {
+            $campos = array($campos);
+        }
+        if (!$link) {
+            $link = @$_SERVER['PHP_SELF'];
+        }
+        if (is_string($link)) {
+            $link = new MECON_HTML_Link($link, '');
+        }
+        switch ($id) {
+            case 'modificar':
+                $img = new MECON_HTML_Image('/MECON/images/general_modificar', '(M)');
+                $link->addContents($img);
+                foreach ($campos as $campo) {
+                    $link->setGetVar($this->_getVarPrefix.$campo, null);
+                }
+                $this->addRowsData($link, array(), $lugar);
+                break;
+            case 'no_modificar':
+                $img = new MECON_HTML_Image('/MECON/images/general_modificar_des', '(-)');
+                $this->addRowsData($img, array(), $lugar);
+                break;
+            case 'borrar':
+                $img = new MECON_HTML_Image('/MECON/images/general_eliminar', '(B)');
+                $link->addContents($img);
+                foreach ($campos as $campo) {
+                    $link->setGetVar($this->_getVarPrefix.$campo, null);
+                }
+                $this->addRowsData($link, array(), $lugar);
+                break;
+            case 'no_borrar':
+                $img = new MECON_HTML_Image('/MECON/images/general_eliminar_des', '(-)');
+                $this->addRowsData($img, array(), $lugar);
+                break;
+            case 'ir':
+                $img = new MECON_HTML_Image('/MECON/images/general_ir4', '->');
+                $link->addContents($img);
+                foreach ($campos as $campo) {
+                    $link->setGetVar($this->_getVarPrefix.$campo, null);
+                }
+                $this->addRowsData($link, array(), $lugar);
+                break;
+            default:
+                $this->raiseError("No hay un ícono predefinido llamado '$id'.");
+        }
+    }
+
 }
 
 ?>
 }
 
 ?>