X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/2d6ca96b34bdd5d21deca5afa95603ae7ba0a7c0..7eddd945e06d40240c52993be71ad52b9212f79e:/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() {