]> git.llucax.com Git - mecon/meconlib.git/commitdiff
Se pone el nuevo metodo addPager() en una subclase.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 17 Oct 2003 20:27:51 +0000 (20:27 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 17 Oct 2003 20:27:51 +0000 (20:27 +0000)
lib/MECON/HTML/Tabla.php
lib/MECON/HTML/TablaDB.php [new file with mode: 0644]

index e6010a7c836849bc903825f9b130eb4e993a1935..e85c06c55b5de952790bba6b5d0ed39f7cffb392 100644 (file)
@@ -26,7 +26,6 @@ $Id$
 
 require_once 'HTML/Table.php';
 require_once 'MECON/HTML/Image.php';
-require_once 'MECON/DB/Pager.php';
 
 /**
  * Libreria para le manejo de las tablas de los sistemas de intranet.
@@ -603,112 +602,6 @@ class MECON_HTML_Tabla extends HTML_Table {
         }
     }
 
-    /**
-     * Agrega un páginador a la tabla, basado en un resultado de una base de datos.
-     * Ejemplo:
-     * @code
-     * $tabla = new MECON_HTML_Tabla();
-     * $result = $db->query('SELECT * FROM tabla');
-     * if (DB::isError($result)) {
-     *      die('Error');
-     * }
-     * $pager = $tabla->addPager($result);
-     * $tabla->addRow(array('Nombre', 'Apellido'), 'cabecera');
-     * if ($pager->numRows()) {
-     *      while ($row = $pager->fetchRow(DB_FETCHMODE_ASSOC)) {
-     *          $tabla->addRow(array($row['nombre'], $row['apellido']));
-     *      }       
-     * } else {
-     *      $tabla->addRow(array(new MECON_HTML_Error('No se encontraron agentes.')),
-     *          array('colspan' => 2));
-     * }   
-     * $tabla->display();
-     * @endcode
-     *
-     * @param DB_Result $result Resultado de una consulta de base de datos.
-     * @param mixed $tipo Tipo de link(s) a agregar. Puede ser:
-     *                    <ul>
-     *                      <li><tt>'anterior'</tt></li>
-     *                      <li><tt>'siguiente'</tt></li>
-     *                      <li><tt>'paginas'</tt></li>
-     *                      <li><tt>'total'</tt></li>
-     *                      <li><tt>'info'</tt></li>
-     *                    </ul>
-     *                    Puede pasarse uno solo como un string o varios como un
-     *                    array. Si se pasa <tt>'todo'</tt>, se incluyen todos.
-     *                    Si se pasa null, se incluyen <tt>'anterior'</tt>,
-     *                    <tt>'siguiente'</tt> y <tt>'paginas'</tt>.
-     * @param mixed $link Dirección a la que apuntan los links generados. Puede
-     *                    ser un MECON_HTML_Link (para poder pasar variables por
-     *                    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.
-     *
-     * @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) {
-        // Creo el pager con el resultado.
-        $pager = new MECON_DB_Pager($result, @$_GET['pager_from'], $limit, $maxpages);
-        // Obtengo un link válido.
-        if (!$link) {
-            $link = @$_SERVER['PHP_SELF'];
-        }
-        if (is_string($link)) {
-            $link = new MECON_HTML_Link($link, '');
-        }
-        // Si es el tipo por defecto pone paginador nada más.
-        if (!$tipo) {
-            $tipo = array('anterior', 'paginas', 'siguiente');
-        }
-        // Convierte tipo a array.
-        if (!is_array($tipo)) {
-            $tipo = array($tipo);
-        }
-        // Si se quiere mostrar todas las decoraciones del paginador.
-        if (in_array('todo', $tipo)) {
-            $tipo = array('anterior', 'paginas', 'siguiente', 'total', 'info');
-        }
-        // 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);
-            $this->addLink('anterior', $link);
-        }
-        if (in_array('siguiente', $tipo) and $pager->numRows() and $pager->currentpage != $pager->numpages) {
-            $link->setGetVar('pager_from', $pager->next);
-            $this->addLink('siguiente', $link);
-        }
-        if (in_array('paginas', $tipo) and $pager->numRows() and $pager->numpages > 1) {
-            $from = @$_GET['pager_from'];
-            $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->setContents($page);
-                    $pags .= $link->toHtml();
-                }
-                if ($page != $pager->lastpage) {
-                    $pags .= ' | ';
-                }
-            }
-            $link->setContents($lnk);
-            $this->updatePie($pags, 'centro');
-        }
-        if (in_array('total', $tipo) and $pager->numRows()) {
-            $this->updateCabecera('Se encontraron ' . $pager->numrows . ' resultados.', 'izquierda');
-        }
-        if (in_array('info', $tipo) and $pager->numRows()) {
-            $this->updateCabecera('Página ' . $pager->currentpage . ' de ' . $pager->numpages
-                . ' - ' . $pager->limit . ' resultados por página.', 'derecha');
-        }
-        return $pager;
-    }
-
 }
 
 ?>
diff --git a/lib/MECON/HTML/TablaDB.php b/lib/MECON/HTML/TablaDB.php
new file mode 100644 (file)
index 0000000..9a0d15e
--- /dev/null
@@ -0,0 +1,144 @@
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    meconlib
+-------------------------------------------------------------------------------
+This file is part of meconlib.
+
+meconlib is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+meconlib is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: fri mar 21 ART 2003
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+require_once 'MECON/DB/Pager.php';
+require_once 'MECON/HTML/Tabla.php';
+
+/**
+ * Libreria para le manejo de las tablas de los sistemas de intranet.
+ *
+ */
+class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
+
+    /**
+     * Agrega un páginador a la tabla, basado en un resultado de una base de datos.
+     * Ejemplo:
+     * @code
+     * $tabla = new MECON_HTML_Tabla();
+     * $result = $db->query('SELECT * FROM tabla');
+     * if (DB::isError($result)) {
+     *      die('Error');
+     * }
+     * $pager = $tabla->addPager($result);
+     * $tabla->addRow(array('Nombre', 'Apellido'), 'cabecera');
+     * if ($pager->numRows()) {
+     *      while ($row = $pager->fetchRow(DB_FETCHMODE_ASSOC)) {
+     *          $tabla->addRow(array($row['nombre'], $row['apellido']));
+     *      }       
+     * } else {
+     *      $tabla->addRow(array(new MECON_HTML_Error('No se encontraron agentes.')),
+     *          array('colspan' => 2));
+     * }   
+     * $tabla->display();
+     * @endcode
+     *
+     * @param DB_Result $result Resultado de una consulta de base de datos.
+     * @param mixed $tipo Tipo de link(s) a agregar. Puede ser:
+     *                    <ul>
+     *                      <li><tt>'anterior'</tt></li>
+     *                      <li><tt>'siguiente'</tt></li>
+     *                      <li><tt>'paginas'</tt></li>
+     *                      <li><tt>'total'</tt></li>
+     *                      <li><tt>'info'</tt></li>
+     *                    </ul>
+     *                    Puede pasarse uno solo como un string o varios como un
+     *                    array. Si se pasa <tt>'todo'</tt>, se incluyen todos.
+     *                    Si se pasa null, se incluyen <tt>'anterior'</tt>,
+     *                    <tt>'siguiente'</tt> y <tt>'paginas'</tt>.
+     * @param mixed $link Dirección a la que apuntan los links generados. Puede
+     *                    ser un MECON_HTML_Link (para poder pasar variables por
+     *                    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.
+     *
+     * @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) {
+        // Creo el pager con el resultado.
+        $pager = new MECON_DB_Pager($result, @$_GET['pager_from'], $limit, $maxpages);
+        // Obtengo un link válido.
+        if (!$link) {
+            $link = @$_SERVER['PHP_SELF'];
+        }
+        if (is_string($link)) {
+            $link = new MECON_HTML_Link($link, '');
+        }
+        // Si es el tipo por defecto pone paginador nada más.
+        if (!$tipo) {
+            $tipo = array('anterior', 'paginas', 'siguiente');
+        }
+        // Convierte tipo a array.
+        if (!is_array($tipo)) {
+            $tipo = array($tipo);
+        }
+        // Si se quiere mostrar todas las decoraciones del paginador.
+        if (in_array('todo', $tipo)) {
+            $tipo = array('anterior', 'paginas', 'siguiente', 'total', 'info');
+        }
+        // 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);
+            $this->addLink('anterior', $link);
+        }
+        if (in_array('siguiente', $tipo) and $pager->numRows() and $pager->currentpage != $pager->numpages) {
+            $link->setGetVar('pager_from', $pager->next);
+            $this->addLink('siguiente', $link);
+        }
+        if (in_array('paginas', $tipo) and $pager->numRows() and $pager->numpages > 1) {
+            $from = @$_GET['pager_from'];
+            $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->setContents($page);
+                    $pags .= $link->toHtml();
+                }
+                if ($page != $pager->lastpage) {
+                    $pags .= ' | ';
+                }
+            }
+            $link->setContents($lnk);
+            $this->updatePie($pags, 'centro');
+        }
+        if (in_array('total', $tipo) and $pager->numRows()) {
+            $this->updateCabecera('Se encontraron ' . $pager->numrows . ' resultados.', 'izquierda');
+        }
+        if (in_array('info', $tipo) and $pager->numRows()) {
+            $this->updateCabecera('Página ' . $pager->currentpage . ' de ' . $pager->numpages
+                . ' - ' . $pager->limit . ' resultados por página.', 'derecha');
+        }
+        return $pager;
+    }
+
+}
+
+?>