From: Leandro Lucarella Date: Fri, 6 Jun 2003 21:05:55 +0000 (+0000) Subject: Se sigue mejorando el Renderer. Ya es funcional. X-Git-Tag: svn_import~500 X-Git-Url: https://git.llucax.com/mecon/meconlib.git/commitdiff_plain/082988eafe85c61b9614cca1a33f8cf5cc6cf39d Se sigue mejorando el Renderer. Ya es funcional. - Inicia y finaliza bien el formulario. - Soporta grupos. - Implementa un grupo especial 'botones' para poner los botones del formulario. --- diff --git a/HTML/php/QuickForm/Renderer/Tabla.php b/HTML/php/QuickForm/Renderer/Tabla.php index abf5f88..315e8ea 100644 --- a/HTML/php/QuickForm/Renderer/Tabla.php +++ b/HTML/php/QuickForm/Renderer/Tabla.php @@ -1,266 +1,265 @@ - | -// | Adam Daniel | -// | Bertrand Mansion | -// +----------------------------------------------------------------------+ -// -// $Id$ - -require_once 'HTML/QuickForm/Renderer.php'; -require_once 'HTML/Tabla.php'; - -/** - * A concrete renderer for HTML_QuickForm, - * based on QuickForm 2.x built-in one - * - * @access public - */ -class HTML_QuickForm_Renderer_Tabla extends HTML_QuickForm_Renderer { - - /** - * Tabla usada para dibujar el formulario. - * @var object Tabla - * @access private - */ - var $_tabla; - - /** - * HTML con los scripts para poner antes del formulario (tipicamente - * un javascript). - * @var string - * @access private - */ - var $_script = ''; - - /** - * HTML para agregar antes de la tabla (tipicamente un javascript). - * @var string - * @access private - */ - var $_prepend = ''; - - /** - * HTML para agregar despues de la tabla. - * @var string - * @access private - */ - var $_append = ''; - - /** - * True if we are inside a group - * @var bool - * @access private - */ - var $_inGroup = false; - - /** - * Array with HTML generated for group elements - * @var array - * @access private - */ - var $_groupElements = array(); - - /** - * Constructor. - * - * @param mixed $style Estilo de la tabla. - * - * @access public - */ - function HTML_QuickForm_Renderer_Tabla($style = 'width="400"') - { - $this->HTML_QuickForm_Renderer(); - $this->_tabla =& new Tabla($style); - } // end constructor - - /** - * returns the HTML generated for the form - * - * @access public - * @return string - */ - function toHtml() - { - return $this->_script . $this->_prepend . - $this->_tabla->toHtml() . - $this->_append; - } // end func toHtml - - /** - * Called when visiting a form, before processing any form elements - * - * @param object An HTML_QuickForm object being visited - * @access public - * @return void - */ - function startForm(&$form) - { - # FIXME - deberia sacarlo del QuickForm - #$this->_prepend = $form->getFormStart(); - $this->_prepend = "\n
\n"; - } // end func startForm - - /** - * Called when visiting a form, after processing all form elements - * Adds required note, form attributes, validation javascript and form content. - * - * @param object An HTML_QuickForm object being visited - * @access public - * @return void - */ - function finishForm(&$form) - { - // add a required note, if one is needed - if (!empty($form->_required) && !$form->_freezeAll) { - $id = $this->_tabla->addRow(array($form->getRequiredNote()), array('colspan' => 2, 'align' => 'center', 'cabecera' => true)); - //$this->_tabla->updateCellAttributes($id, array('colspan' => 2)); - } - // add form attributes and content - //$html = str_replace('{attributes}', $form->getAttributesString(), $this->_formTemplate); - //$this->_html = str_replace('{content}', $this->_html, $html); - // add a validation script - $this->_script = strval($form->getValidationScript()); - # FIXME - deberia sacarlo del QuickForm - #$this->_append = $form->getFormEnd(); - $this->_append = "\n
\n"; - } // end func finishForm - - /** - * Called when visiting a header element - * - * @param object An HTML_QuickForm_header element being visited - * @access public - * @return void - */ - function renderHeader(&$header) - { - $name = $header->getName(); - $this->_tabla->addRow(array($header->toHtml()), array('colspan' => 2, $name => true, 'align' => 'center')); - } // end func renderHeader - - /** - * Renders an element Html - * Called when visiting an element - * - * @param object An HTML_QuickForm_element object being visited - * @param bool Whether an element is required - * @param string An error message associated with an element - * @access public - * @return void - */ - function renderElement(&$element, $required, $error) - { - if (!$this->_inGroup) { - if ($element->getLabel()) { - $id = $this->_tabla->addRow( - array( - $element->getLabel() . ($required ? '*' : ''), - $element->toHtml(), - ) - ); - $this->_tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'left', 'nowrap' => true)); - $this->_tabla->updateCellAttributes($id, 1, array('align' => 'left')); - } else { - $id = $this->_tabla->addRow( - array( - $element->toHtml(), - ) - ); - $this->_tabla->updateCellAttributes($id, 0, array('colspan' => 2, 'align' => 'center')); - } - } else { - $this->_groupElements[] = $element->toHtml(); - } - } // end func renderElement - - /** - * Renders an hidden element - * Called when visiting a hidden element - * - * @param object An HTML_QuickForm_hidden object being visited - * @access public - * @return void - */ - function renderHidden(&$element) - { - $this->_prepend .= "\n\t". $element->toHtml(); - } // end func renderHidden - - /** - * Called when visiting a raw HTML/text pseudo-element - * - * @param object An HTML_QuickForm_html element being visited - * @access public - * @return void - */ - function renderHtml(&$data) - { - $this->_tabla->addRow(array($header->toHtml()), array('colspan' => 2)); - } // end func renderHtml - - /** - * Called when visiting a group, before processing any group elements - * - * @param object An HTML_QuickForm_group object being visited - * @param bool Whether a group is required - * @param string An error message associated with a group - * @access public - * @return void - */ - function startGroup(&$group, $required, $error) - { - $this->_groupElements = array(); - $this->_inGroup = true; - } // end func startGroup - - /** - * Called when visiting a group, after processing all group elements - * - * @param object An HTML_QuickForm_group object being visited - * @access public - * @return void - */ - function finishGroup(&$group) - { - $id = $this->_tabla->addRow(array($group->getLabel(), join('', $this->_groupElements))); - $this->_tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'right', 'nowrap' => true)); - $this->_tabla->updateCellAttributes($id, 1, array('align' => 'left')); -/* if (!empty($this->_groupWrap)) { - $html = str_replace('{content}', implode('', $this->_groupElements), $this->_groupWrap); - } else { - $separator = $group->_separator; - if (is_array($separator)) { - $count = count($separator); - $html = ''; - for ($i = 0; $i < count($this->_groupElements); $i++) { - $html .= $this->_groupElements[$i] . $separator[$i % $count]; - } - $html = substr($html, 0, -strlen($separator[($i - 1) % $count])); - } else { - if (is_null($separator)) { - $separator = ' '; - } - $html = implode((string)$separator, $this->_groupElements); - } - } - $this->_html .= str_replace('{element}', $html, $this->_groupTemplate); - $this->_inGroup = false;*/ - } // end func finishGroup - -} // end class HTML_QuickForm_Renderer_Default - -?> + | +// | Adam Daniel | +// | Bertrand Mansion | +// +----------------------------------------------------------------------+ +// +// $Id$ + +require_once 'HTML/QuickForm/Renderer.php'; +require_once 'HTML/Tabla.php'; + +/** + * A concrete renderer for HTML_QuickForm, + * based on QuickForm 2.x built-in one + * + * @access public + */ +class HTML_QuickForm_Renderer_Tabla extends HTML_QuickForm_Renderer { + + /** + * Tabla usada para dibujar el formulario. + * @var object Tabla + * @access private + */ + var $_tabla; + + /** + * HTML con los scripts para poner antes del formulario (tipicamente + * un javascript). + * @var string + * @access private + */ + var $_script = ''; + + /** + * HTML para agregar antes de la tabla (tipicamente un javascript). + * @var string + * @access private + */ + var $_prepend = ''; + + /** + * HTML para agregar despues de la tabla. + * @var string + * @access private + */ + var $_append = ''; + + /** + * True if we are inside a group + * @var bool + * @access private + */ + var $_inGroup = false; + + /** + * Group error related message. + * @var string + * @access private + */ + var $_groupError = ''; + + /** + * Array with HTML generated for group elements + * @var array + * @access private + */ + var $_groupElements = array(); + + /** + * Constructor. + * + * @param mixed $style Estilo de la tabla. + * + * @access public + */ + function HTML_QuickForm_Renderer_Tabla($style = 'width="400"') + { + $this->HTML_QuickForm_Renderer(); + $this->_tabla =& new Tabla($style); + } // end constructor + + /** + * returns the HTML generated for the form + * + * @access public + * @return string + */ + function toHtml() + { + return $this->_script . $this->_prepend . + $this->_tabla->toHtml() . + $this->_append; + } // end func toHtml + + /** + * Called when visiting a form, before processing any form elements + * + * @param object An HTML_QuickForm object being visited + * @access public + * @return void + */ + function startForm(&$form) + { + # FIXME - deberia sacarlo del QuickForm + #$this->_prepend = $form->getFormStart(); + $attrs = $form->getAttributesString(); + $this->_prepend = "\n\n"; + } // end func startForm + + /** + * Called when visiting a form, after processing all form elements + * Adds required note, form attributes, validation javascript and form content. + * + * @param object An HTML_QuickForm object being visited + * @access public + * @return void + */ + function finishForm(&$form) + { + // add a required note, if one is needed + if (!empty($form->_required) && !$form->_freezeAll) { + $id = $this->_tabla->addRow( + array($form->getRequiredNote()), + array('colspan' => 2, 'align' => 'center', 'cabecera' => true) + ); + //$this->_tabla->updateCellAttributes($id, array('colspan' => 2)); + } + // add form attributes and content + //$this->_html = str_replace('{content}', $this->_html, $html); + // add a validation script + $this->_script = strval($form->getValidationScript()); + # FIXME - deberia sacarlo del QuickForm + #$this->_append = $form->getFormEnd(); + $this->_append = "\n\n"; + } // end func finishForm + + /** + * Called when visiting a header element + * + * @param object An HTML_QuickForm_header element being visited + * @access public + * @return void + */ + function renderHeader(&$header) + { + $name = $header->getName(); + $this->_tabla->addRow( + array($header->toHtml()), + array('colspan' => 2, $name => true, 'align' => 'center') + ); + } // end func renderHeader + + /** + * Renders an element Html + * Called when visiting an element + * + * @param object An HTML_QuickForm_element object being visited + * @param bool Whether an element is required + * @param string An error message associated with an element + * @access public + * @return void + */ + function renderElement(&$element, $required, $error) + { + if (!$this->_inGroup) { + $id = $this->_tabla->addRow( + array( + $element->getLabel() . ($required ? '*' : ''), + $element->toHtml() . ($error ? "
$error" : ''), + ) + ); + $this->_tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'left', 'nowrap' => true)); + $this->_tabla->updateCellAttributes($id, 1, array('align' => 'left')); + } else { + $this->_groupElements[] = ($element->getLabel() ? ($element->getLabel().' ') : '') . $element->toHtml(); + } + } // end func renderElement + + /** + * Renders an hidden element + * Called when visiting a hidden element + * + * @param object An HTML_QuickForm_hidden object being visited + * @access public + * @return void + */ + function renderHidden(&$element) + { + $this->_prepend .= "\n\t". $element->toHtml(); + } // end func renderHidden + + /** + * Called when visiting a raw HTML/text pseudo-element + * + * @param object An HTML_QuickForm_html element being visited + * @access public + * @return void + */ + function renderHtml(&$data) + { + $this->_tabla->addRow( + array($header->toHtml()), + array('colspan' => 2) + ); + } // end func renderHtml + + /** + * Called when visiting a group, before processing any group elements + * + * @param object An HTML_QuickForm_group object being visited + * @param bool Whether a group is required + * @param string An error message associated with a group + * @access public + * @return void + */ + function startGroup(&$group, $required, $error) + { + $this->_groupElements = array(); + $this->_groupError = $error; + $this->_inGroup = true; + } // end func startGroup + + /** + * Called when visiting a group, after processing all group elements + * + * @param object An HTML_QuickForm_group object being visited + * @access public + * @return void + */ + function finishGroup(&$group) + { + $name = $group->getName(); + $sep = $group->_separator; + if (strtolower($name) == 'botones') { + $id = $this->_tabla->addRow( + array(join('', $this->_groupElements)) + ); + $this->_tabla->updateCellAttributes($id, 0, array('align' => 'right', 'colspan' => 2)); + } else { + $id = $this->_tabla->addRow( + array($group->getLabel(), join($sep, $this->_groupElements)), + array('align' => 'left') + ); + $this->_tabla->updateCellAttributes($id, 0, array('titulo' => true, 'align' => 'left', 'nowrap' => true)); + } + } // end func finishGroup + +} // end class HTML_QuickForm_Renderer_Default + +?>