X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/5e0dff970fc4e06b4a642b7e84ed8083a76bd00a..9ea00a51d80e94e95ff5525f3c63301c86b50d12:/lib/MECON/HTML/TablaDB.php diff --git a/lib/MECON/HTML/TablaDB.php b/lib/MECON/HTML/TablaDB.php index 62dcb64..fb13bf6 100644 --- a/lib/MECON/HTML/TablaDB.php +++ b/lib/MECON/HTML/TablaDB.php @@ -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('', * 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('%s', + * 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: - * prepend o append. + * 'prepend' o 'append': + * @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: *