]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/TablaDB.php
Se agrega estilo.
[mecon/meconlib.git] / lib / MECON / HTML / TablaDB.php
index 62dcb64f477d4d735695ee94586ee35aa7c3e380..fb13bf6742b3bc4f8951aa866e15203dcfd30dc3 100644 (file)
@@ -59,7 +59,7 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
     /**
      * Prefijo a usar para las variables GET que genera la tabla.
      */
-    var $_getVarPrefix = 'tabladb_';
+    var $_getVarPrefix = '_';
 
     /**
      * Constructor. 
@@ -221,8 +221,12 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
                 $this->addRowsResult($result, $campos, $obj);
             }
         } else {
-            $id = $this->addRow(array(new MECON_HTML_Error("No se encontraron {$this->_desc}.")));
-            $this->updateCellAttributes($id, 0, array('colspan' => count($campos)));
+            $id = $this->addRow(array(
+                new MECON_HTML_Error("No se encontraron {$this->_desc}.")));
+            $this->updateCellAttributes($id, 0,
+                array('colspan' => count($campos)
+                    + count($this->_prependRowsData)
+                    + count($this->_appendRowsData)));
         }
     }
 
@@ -291,39 +295,85 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
      * if (DB::isError($result)) {
      *      die('Error');
      * }
-     * $tabla->addRow(array('Col1', 'Nombre', 'Apellido', 'Activo'), 'cabecera');
+     * $tabla->addRow(
+     *      array('Col1', 'Nombre', 'Apellido', 'Activo', 'PopUp1', 'PopUp2'),
+     *      'cabecera');
      * // Agrega una columna con una leyenda 'El nombre es: {nombre}' al principio.
      * $tabla->addRowsData('Me llamo %s.', 'nombre', 'prepend');
      * // Agrega una columna al final con checkbox para seleccionar filas. El
      * // segundo elemento será procesado por la callback checked_callback().
      * $tabla->addRowsData('<input type="checkbox" name="datos[%s]" value="1" %s />',
      *          array('nombre', array('activo', 'checked_callback')));
+     * // Agrega el nombre con un link a un popup (sin javascript).
+     * $tabla->addRowsData(
+     *      new MECON_HTML_Link('popup.php', '%s', array('nombre' => null),
+     *          array('target' => '_blank')),
+     *      'nombre',
+     *      'prepend');
+     * // Agrega el nombre con un link a un popup (con javascript).
+     * $tabla->addRowsData('<a href="popup.php?nombre=%s" '
+     *          . 'onclick="'."javascript:window.open('popup.php?nombre=%s',"
+     *          . "'win_id','width=400,height=400,scrollbars=no');"
+     *          . 'return false;">%s</a>',
+     *      array('nombre', 'nombre', 'apellido'));
      * // Agrega resultados de la tabla.
      * $tabla->addRows($result, array('nombre', 'apellido'));
      * $tabla->display();
+     *
+     * // Funcion callback para darle formato al campo 'activo'.
+     * // En este caso devuelve 'checked' para indicar que el checkbox está
+     * // activado si activo es true.
+     * function checked_callback($activo) {
+     *      return $activo ? 'checked' : '';
+     * }
      * @endcode
      *
      * @param mixed $format Si es un string, especifica el formato a usar al
      *                      estilo de sprintf. Si es un MECON_HTML_Link, se
      *                      traduce cada variable por GET que empiece con el
      *                      \ref getGetVarPrefix "prefijo" y cuyo valor sea null
-     *                      al campo correspondiente de la DB. Si e valor en vez
-     *                      de ser null es un string, se fija si existe una
-     *                      función con ese nombre para llamar con el campo de
-     *                      la DB como argumento para formatearlo. Si no existe
-     *                      la función, se toma el string como formato para
-     *                      sprintf para darle formato.
+     *                      al campo correspondiente de la DB:
+     * @code $tabla->addRowsData(new MECON_HTML_Link('abm.php', 'Ver %s',
+     *      array($tabla->getGetVarPrefix().'id' => null), 'nombre'); @endcode
+     *                      Si el valor en vez de ser null es un string, se
+     *                      fija si existe una función con ese nombre para llamar
+     *                      con el campo de la DB como argumento para
+     *                      formatearlo:
+     * @code $tabla->addRowsData(new MECON_HTML_Link('print.php', 'Mostrar',
+     *      array($tabla->getGetVarPrefix().'campo1' => 'callback_campo1'));
+     * function callback_campo1($campo1) {
+     *      return 'El campo1 es '.strtoupper($campo3);
+     * } @endcode
+     *                      Si no existe la función, se toma el string como
+     *                      formato para sprintf para darle formato:
+     * @code $tabla->addRowsData(new MECON_HTML_Link('print.php', 'Ver',
+     *      array($tabla->getGetVarPrefix().'campo1' => 'campo1: %s')); @endcode
      * @param mixed $campos Campos de la DB a usar como argumentos del sprintf.
      *                      Puede ser un string para pasar un solo campo sin
-     *                      formato. Si es un array, cada elemento es un campo
+     *                      formato:
+     *                      @code $tabla->addRowsData('%s', 'campo1'); @endcode
+     *                      Si es un array, cada elemento es un campo
      *                      que puede ser un string representando el nombre de
-     *                      un campo a usar sin agumento o un array cuyo primer
-     *                      elemento es el nombre del campo a usar y el segundo
-     *                      argumento es una funcion callback a llamar con el
-     *                      valor del campo como argumento para darle formato.
-     *                      @code $tabla->addRowsData('%s', array('campo1', 'campo2', array('campo3', 'callback_campo3')))); @endcode
+     *                      un campo a usar:
+     *                      @code $tabla->addRowsData('%s',
+     *      array('campo1', 'campo2'); @endcode
+     *                      o un array cuyo primer elemento es el nombre del
+     *                      campo a usar y el segundo argumento es una funcion
+     *                      callback a llamar con el valor del campo como
+     *                      argumento para darle formato:
+     *                      @code $tabla->addRowsData('%s',
+     *      array('campo1', 'campo2', array('campo3', 'callback_campo3'))));
+     * function callback_campo3($campo3) {
+     *      return strtoupper($campo3);
+     * } @endcode
+     *                      Si no se encuentra la funcion callback, se toma como
+     *                      un string para formatear el campo con sprintf():
+     *                      @code $tabla->addRowsData('%s', array('campo1',
+     *      array('campo2', 'campo2 = %s')); @endcode
      * @param string $lugar Indica donde hay que agregar la columna. Puede ser:
-     *                      <tt>prepend</tt> o <tt>append</tt>.
+     *                      <tt>'prepend'</tt> o <tt>'append'</tt>:
+     *                      @code $tabla->addRowsData('Hola %s!', 'nombre',
+     *      'prepend'); @endcode
      *
      * @warning Este método debe ser llamado antes de llamar a addRows().
      * @note Las funciones callback toman todas un solo argumento (el valor del
@@ -445,6 +495,25 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
 
     /**
      * Agrega un ícono predefinido a la tabla.
+     * Ejemplo:
+     * @code
+     * $tabla = new MECON_HTML_TablaDB('personas', array('width' => '100%'));
+     * $result = $db->query('SELECT nombre, apellido FROM tabla');
+     * if (DB::isError($result)) {
+     *      die('Error');
+     * }
+     * $tabla->addRow(array('Col1', 'Nombre', 'Apellido', 'Modificar', 'Borrar',
+     *      'Agregar'), 'cabecera');
+     * // Agrega ícono de modificar que apunta a modificar.php y pasa el 'id'.
+     * $tabla->addRowsIcon('modificar', 'id', 'modificar.php');
+     * // Agrega ícono de borrar desactivado.
+     * $tabla->addRowsIcon('no_borrar');
+     * // Agrega ícono con una flecha que apunta a agregar.php y no pasa nada.
+     * $tabla->addRowsIcon('ir', null, 'modificar.php');
+     * // Agrega resultados de la tabla.
+     * $tabla->addRows($result, array('nombre', 'apellido'));
+     * $tabla->display();
+     * @endcode
      *
      * @param string $id Identificador del tipo de ícono a agregar. Puede ser:
      *                   <ul>
@@ -469,7 +538,7 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
      *                    parámetro $formato en addRowsData() con la excepción
      *                    de que el contenido del Link no es tomado en cuenta).
      * @param string $lugar Indica donde hay que agregar la columna. Puede ser:
-     *                      <tt>prepend</tt> o <tt>append</tt>.
+     *                      <tt>'prepend'</tt> o <tt>'append'</tt>.
      *
      * @warning Este método debe ser llamado antes de llamar a addRows().
      * @note Las funciones callback toman todas un solo argumento (el valor del
@@ -477,6 +546,9 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
      *       formateado.
      */
     function addRowsIcon($id, $campos = array(), $link = null, $lugar = 'append') {
+        if (!$campos) {
+            $campos = array();
+        }
         if (is_string($campos)) {
             $campos = array($campos);
         }
@@ -489,6 +561,7 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
         switch ($id) {
             case 'modificar':
                 $img = new MECON_HTML_Image('/MECON/images/general_modificar', '(M)');
+                $img->updateAttributes(array('title' => 'Modificar'));
                 $link->addContents($img);
                 foreach ($campos as $campo) {
                     $format = null;
@@ -501,10 +574,12 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
                 break;
             case 'no_modificar':
                 $img = new MECON_HTML_Image('/MECON/images/general_modificar_des', '(-)');
+                $img->updateAttributes(array('title' => 'Modificar'));
                 $this->addRowsData($img, array(), $lugar);
                 break;
             case 'borrar':
                 $img = new MECON_HTML_Image('/MECON/images/general_eliminar', '(B)');
+                $img->updateAttributes(array('title' => 'Borrar'));
                 $link->addContents($img);
                 foreach ($campos as $campo) {
                     $link->setGetVar($this->_getVarPrefix.$campo, null);
@@ -513,10 +588,12 @@ class MECON_HTML_TablaDB extends MECON_HTML_Tabla {
                 break;
             case 'no_borrar':
                 $img = new MECON_HTML_Image('/MECON/images/general_eliminar_des', '(-)');
+                $img->updateAttributes(array('title' => 'Borrar'));
                 $this->addRowsData($img, array(), $lugar);
                 break;
             case 'ir':
                 $img = new MECON_HTML_Image('/MECON/images/general_ir4', '->');
+                $img->updateAttributes(array('title' => 'Ir'));
                 $link->addContents($img);
                 foreach ($campos as $campo) {
                     $link->setGetVar($this->_getVarPrefix.$campo, null);