X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/2d6ca96b34bdd5d21deca5afa95603ae7ba0a7c0..06cd54ffd3f4a2641a10db316fb08d42c3b8b5ea:/lib/MECON/HTML/QuickForm/Renderer/TablaHorizontal.php
diff --git a/lib/MECON/HTML/QuickForm/Renderer/TablaHorizontal.php b/lib/MECON/HTML/QuickForm/Renderer/TablaHorizontal.php
index 5b436a9..d918def 100644
--- a/lib/MECON/HTML/QuickForm/Renderer/TablaHorizontal.php
+++ b/lib/MECON/HTML/QuickForm/Renderer/TablaHorizontal.php
@@ -64,6 +64,12 @@ class MECON_HTML_QuickForm_Renderer_TablaHorizontal extends HTML_QuickForm_Rende
*/
var $_elements = array();
+ /**
+ * Guarda opciones del renderer.
+ * @private
+ */
+ var $_opts = array();
+
/**
* HTML con los scripts para poner antes del formulario (tipicamente
* un javascript).
@@ -110,14 +116,22 @@ class MECON_HTML_QuickForm_Renderer_TablaHorizontal extends HTML_QuickForm_Rende
/**
* Constructor.
*
- * @param mixed $param Array o sting con el estilo de la tabla u objeto
- * tabla alternativo para usar.
+ * @param $param Array o sting con el estilo de la tabla u objeto
+ * tabla alternativo para usar.
+ * @param $opts Opciones, pueden ser:
+ * - btn_row: Si es true, se dibujan los botones en una fila
+ * completa, después de los campos. Si es false, se
+ * dibuja como un elemento con un rowspan para que
+ * ocupe la celda del label y del contenido.
+ * - req_note: Si es true, se incluye una fila adicional con la
+ * 'require note'. Si es false no se la muestra.
*
* @access public
*/
- function MECON_HTML_QuickForm_Renderer_TablaHorizontal($param = array())
+ function MECON_HTML_QuickForm_Renderer_TablaHorizontal($param = array(), $opts = array())
{
parent::HTML_QuickForm_Renderer();
+ $this->_opts = $opts;
if (is_a($param, 'Tabla')) {
$this->setTable($param);
}
@@ -137,18 +151,27 @@ class MECON_HTML_QuickForm_Renderer_TablaHorizontal extends HTML_QuickForm_Rende
$pos = $this->_elementsPos;
$rows = count($this->_rows);
foreach ($this->_elements as $e) {
- list($label, $elem, $req, $err) = $e;
+ list($label, $elem) = $e;
$cols = array();
for ($i = 0; $i < $pos; ++$i) {
$cols[] = '';
}
- $cols[] = $label . ($req ? '*' : '');
- $cols[] = $elem . ($err ? "
$err" : '');
+ if (is_null($label)) { // Para caso especial como botones.
+ $cols[] = $elem;
+ $cols[] = '';
+ } else { // Para caso común.
+ $cols[] = $label;
+ $cols[] = $elem;
+ }
for ($i = $pos + 2; $i < $rows; ++$i) {
$cols[] = '';
}
$id = $this->tabla->addCol($cols, array(array('align' => 'center')));
- $this->tabla->updateCellAttributes($pos, $id, array('titulo' => true));
+ if (is_null($label)) { // Para caso especial como botones.
+ $this->tabla->updateCellAttributes($pos, $id, array('rowspan' => 2));
+ } else { // Para caso común.
+ $this->tabla->updateCellAttributes($pos, $id, array('titulo' => true));
+ }
}
foreach ($this->_rows as $i => $row) {
if ($row) { // Si no son las filas de los elementos...
@@ -188,7 +211,7 @@ class MECON_HTML_QuickForm_Renderer_TablaHorizontal extends HTML_QuickForm_Rende
function finishForm(&$form)
{
// add a required note, if one is needed
- if (!empty($form->_required) && !$form->_freezeAll) {
+ if (@$this->_opts['req_note'] and !empty($form->_required) && !$form->_freezeAll) {
$this->_rows[] = array(''.$form->getRequiredNote().'', array('cabecera' => true));
}
// add a validation script
@@ -225,8 +248,7 @@ class MECON_HTML_QuickForm_Renderer_TablaHorizontal extends HTML_QuickForm_Rende
$this->_checkInElements();
$this->_elements[] = array(
$element->getLabel() . ($required ? '*' : ''),
- $element->toHtml() . ($error ? "
$error" : ''),
- $required, $error);
+ $element->toHtml() . ($error ? "
$error" : ''));
} else {
$this->_groupElements[] = ($element->getLabel() ? ($element->getLabel().' ') : '') . $element->toHtml();
}
@@ -284,14 +306,17 @@ class MECON_HTML_QuickForm_Renderer_TablaHorizontal extends HTML_QuickForm_Rende
{
$name = $group->getName();
$sep = $group->_separator;
- if (strtolower($name) == 'botones') {
+ $label = $group->getLabel();
+ if (!@$this->_opts['btn_row'] and strtolower($name) == 'botones') {
+ $label = null;
+ }
+ if (@$this->_opts['btn_row']) {
$this->_rows[] = array(join('', $this->_groupElements), array('valign' => 'middle', 'align' => 'center'));
} else {
$this->_checkInElements();
- $this->_elements[] = array(array($group->getLabel(),
- join($sep, $this->_groupElements)), false, false);
+ $this->_elements[] = array($label, join($sep, $this->_groupElements));
+ $this->_inGroup = false;
}
- $this->_inGroup = false;
} // end func finishGroup
function _checkInElements() {