]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/QuickForm/Renderer/TablaHorizontal.php
BugFix.
[mecon/meconlib.git] / lib / MECON / HTML / QuickForm / Renderer / TablaHorizontal.php
index 5b436a93ac92dc396b314d4ca70b123ca4dfa941..d918deffb3a50456fe74c9b934019ccd3a1a722a 100644 (file)
@@ -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 ? '<font color="red">*</font>' : '');
-            $cols[] = $elem . ($err ? "<br><font color=\"red\">$err</font>" : '');
+            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('<font size="-2">'.$form->getRequiredNote().'</font>', 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 ? '<font color="red">*</font>' : ''),
-                $element->toHtml() . ($error ? "<br><font color=\"red\">$error</font>" : ''),
-                $required, $error);
+                $element->toHtml() . ($error ? "<br><font color=\"red\">$error</font>" : ''));
         } else {
             $this->_groupElements[] = ($element->getLabel() ? ($element->getLabel().'&nbsp;') : '') . $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() {