diff options
Diffstat (limited to 'libs/HTML/QuickForm/Renderer/Array.php')
-rwxr-xr-x | libs/HTML/QuickForm/Renderer/Array.php | 678 |
1 files changed, 339 insertions, 339 deletions
diff --git a/libs/HTML/QuickForm/Renderer/Array.php b/libs/HTML/QuickForm/Renderer/Array.php index b8eab80b7a..fd2fefc60e 100755 --- a/libs/HTML/QuickForm/Renderer/Array.php +++ b/libs/HTML/QuickForm/Renderer/Array.php @@ -1,340 +1,340 @@ -<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A concrete renderer for HTML_QuickForm, makes an array of form contents
- *
- * PHP versions 4 and 5
- *
- * LICENSE: This source file is subject to version 3.01 of the PHP license
- * that is available through the world-wide-web at the following URI:
- * http://www.php.net/license/3_01.txt If you did not receive a copy of
- * the PHP License and are unable to obtain it through the web, please
- * send a note to license@php.net so we can mail you a copy immediately.
- *
- * @category HTML
- * @package HTML_QuickForm
- * @author Alexey Borzov <avb@php.net>
- * @author Adam Daniel <adaniel1@eesus.jnj.com>
- * @author Bertrand Mansion <bmansion@mamasam.com>
- * @author Thomas Schulz <ths@4bconsult.de>
- * @copyright 2001-2007 The PHP Group
- * @license http://www.php.net/license/3_01.txt PHP License 3.01
- * @version CVS: $Id$
- * @link http://pear.php.net/package/HTML_QuickForm
- */
-
-/**
- * An abstract base class for QuickForm renderers
- */
-require_once 'HTML/QuickForm/Renderer.php';
-
-/**
- * A concrete renderer for HTML_QuickForm, makes an array of form contents
- *
- * Based on old HTML_QuickForm::toArray() code.
- *
- * The form array structure is the following:
- * <pre>
- * array(
- * 'frozen' => 'whether the form is frozen',
- * 'javascript' => 'javascript for client-side validation',
- * 'attributes' => 'attributes for <form> tag',
- * 'requirednote => 'note about the required elements',
- * // if we set the option to collect hidden elements
- * 'hidden' => 'collected html of all hidden elements',
- * // if there were some validation errors:
- * 'errors' => array(
- * '1st element name' => 'Error for the 1st element',
- * ...
- * 'nth element name' => 'Error for the nth element'
- * ),
- * // if there are no headers in the form:
- * 'elements' => array(
- * element_1,
- * ...
- * element_N
- * )
- * // if there are headers in the form:
- * 'sections' => array(
- * array(
- * 'header' => 'Header text for the first header',
- * 'name' => 'Header name for the first header',
- * 'elements' => array(
- * element_1,
- * ...
- * element_K1
- * )
- * ),
- * ...
- * array(
- * 'header' => 'Header text for the Mth header',
- * 'name' => 'Header name for the Mth header',
- * 'elements' => array(
- * element_1,
- * ...
- * element_KM
- * )
- * )
- * )
- * );
- * </pre>
- *
- * where element_i is an array of the form:
- * <pre>
- * array(
- * 'name' => 'element name',
- * 'value' => 'element value',
- * 'type' => 'type of the element',
- * 'frozen' => 'whether element is frozen',
- * 'label' => 'label for the element',
- * 'required' => 'whether element is required',
- * 'error' => 'error associated with the element',
- * 'style' => 'some information about element style (e.g. for Smarty)',
- * // if element is not a group
- * 'html' => 'HTML for the element'
- * // if element is a group
- * 'separator' => 'separator for group elements',
- * 'elements' => array(
- * element_1,
- * ...
- * element_N
- * )
- * );
- * </pre>
- *
- * @category HTML
- * @package HTML_QuickForm
- * @author Alexey Borzov <avb@php.net>
- * @author Adam Daniel <adaniel1@eesus.jnj.com>
- * @author Bertrand Mansion <bmansion@mamasam.com>
- * @author Thomas Schulz <ths@4bconsult.de>
- * @version Release: 3.2.9
- * @since 3.0
- */
-class HTML_QuickForm_Renderer_Array extends HTML_QuickForm_Renderer
-{
- /**#@+
- * @access private
- */
- /**
- * An array being generated
- * @var array
- */
- var $_ary;
-
- /**
- * Number of sections in the form (i.e. number of headers in it)
- * @var integer
- */
- var $_sectionCount;
-
- /**
- * Current section number
- * @var integer
- */
- var $_currentSection;
-
- /**
- * Array representing current group
- * @var array
- */
- var $_currentGroup = null;
-
- /**
- * Additional style information for different elements
- * @var array
- */
- var $_elementStyles = array();
-
- /**
- * true: collect all hidden elements into string; false: process them as usual form elements
- * @var bool
- */
- var $_collectHidden = false;
-
- /**
- * true: render an array of labels to many labels, $key 0 named 'label', the rest "label_$key"
- * false: leave labels as defined
- * @var bool
- */
- var $_staticLabels = false;
- /**#@-*/
-
- /**
- * Constructor
- *
- * @param bool true: collect all hidden elements into string; false: process them as usual form elements
- * @param bool true: render an array of labels to many labels, $key 0 to 'label' and the oterh to "label_$key"
- * @access public
- */
- function HTML_QuickForm_Renderer_Array($collectHidden = false, $staticLabels = false)
- {
- $this->HTML_QuickForm_Renderer();
- $this->_collectHidden = $collectHidden;
- $this->_staticLabels = $staticLabels;
- } // end constructor
-
-
- /**
- * Returns the resultant array
- *
- * @access public
- * @return array
- */
- function toArray()
- {
- return $this->_ary;
- }
-
-
- function startForm(&$form)
- {
- $this->_ary = array(
- 'frozen' => $form->isFrozen(),
- 'javascript' => $form->getValidationScript(),
- 'attributes' => $form->getAttributes(true),
- 'requirednote' => $form->getRequiredNote(),
- 'errors' => array()
- );
- if ($this->_collectHidden) {
- $this->_ary['hidden'] = '';
- }
- $this->_elementIdx = 1;
- $this->_currentSection = null;
- $this->_sectionCount = 0;
- } // end func startForm
-
-
- function renderHeader(&$header)
- {
- $this->_ary['sections'][$this->_sectionCount] = array(
- 'header' => $header->toHtml(),
- 'name' => $header->getName()
- );
- $this->_currentSection = $this->_sectionCount++;
- } // end func renderHeader
-
-
- function renderElement(&$element, $required, $error)
- {
- $elAry = $this->_elementToArray($element, $required, $error);
- if (!empty($error)) {
- $this->_ary['errors'][$elAry['name']] = $error;
- }
- $this->_storeArray($elAry);
- } // end func renderElement
-
-
- function renderHidden(&$element)
- {
- if ($this->_collectHidden) {
- $this->_ary['hidden'] .= $element->toHtml() . "\n";
- } else {
- $this->renderElement($element, false, null);
- }
- } // end func renderHidden
-
-
- function startGroup(&$group, $required, $error)
- {
- $this->_currentGroup = $this->_elementToArray($group, $required, $error);
- if (!empty($error)) {
- $this->_ary['errors'][$this->_currentGroup['name']] = $error;
- }
- } // end func startGroup
-
-
- function finishGroup(&$group)
- {
- $this->_storeArray($this->_currentGroup);
- $this->_currentGroup = null;
- } // end func finishGroup
-
-
- /**
- * Creates an array representing an element
- *
- * @access private
- * @param HTML_QuickForm_element element being processed
- * @param bool Whether an element is required
- * @param string Error associated with the element
- * @return array
- */
- function _elementToArray(&$element, $required, $error)
- {
- $ret = array(
- 'name' => $element->getName(),
- 'value' => $element->getValue(),
- 'type' => $element->getType(),
- 'frozen' => $element->isFrozen(),
- 'required' => $required,
- 'error' => $error
- );
- // render label(s)
- $labels = $element->getLabel();
- if (is_array($labels) && $this->_staticLabels) {
- foreach($labels as $key => $label) {
- $key = is_int($key)? $key + 1: $key;
- if (1 === $key) {
- $ret['label'] = $label;
- } else {
- $ret['label_' . $key] = $label;
- }
- }
- } else {
- $ret['label'] = $labels;
- }
-
- // set the style for the element
- if (isset($this->_elementStyles[$ret['name']])) {
- $ret['style'] = $this->_elementStyles[$ret['name']];
- }
- if ('group' == $ret['type']) {
- $ret['separator'] = $element->_separator;
- $ret['elements'] = array();
- } else {
- $ret['html'] = $element->toHtml();
- }
- return $ret;
- }
-
-
- /**
- * Stores an array representation of an element in the form array
- *
- * @access private
- * @param array Array representation of an element
- * @return void
- */
- function _storeArray($elAry)
- {
- // where should we put this element...
- if (is_array($this->_currentGroup) && ('group' != $elAry['type'])) {
- $this->_currentGroup['elements'][] = $elAry;
- } elseif (isset($this->_currentSection)) {
- $this->_ary['sections'][$this->_currentSection]['elements'][] = $elAry;
- } else {
- $this->_ary['elements'][] = $elAry;
- }
- }
-
-
- /**
- * Sets a style to use for element rendering
- *
- * @param mixed element name or array ('element name' => 'style name')
- * @param string style name if $elementName is not an array
- * @access public
- * @return void
- */
- function setElementStyle($elementName, $styleName = null)
- {
- if (is_array($elementName)) {
- $this->_elementStyles = array_merge($this->_elementStyles, $elementName);
- } else {
- $this->_elementStyles[$elementName] = $styleName;
- }
- }
-}
+<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +/** + * A concrete renderer for HTML_QuickForm, makes an array of form contents + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.01 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_01.txt If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category HTML + * @package HTML_QuickForm + * @author Alexey Borzov <avb@php.net> + * @author Adam Daniel <adaniel1@eesus.jnj.com> + * @author Bertrand Mansion <bmansion@mamasam.com> + * @author Thomas Schulz <ths@4bconsult.de> + * @copyright 2001-2007 The PHP Group + * @license http://www.php.net/license/3_01.txt PHP License 3.01 + * @version CVS: $Id$ + * @link http://pear.php.net/package/HTML_QuickForm + */ + +/** + * An abstract base class for QuickForm renderers + */ +require_once 'HTML/QuickForm/Renderer.php'; + +/** + * A concrete renderer for HTML_QuickForm, makes an array of form contents + * + * Based on old HTML_QuickForm::toArray() code. + * + * The form array structure is the following: + * <pre> + * array( + * 'frozen' => 'whether the form is frozen', + * 'javascript' => 'javascript for client-side validation', + * 'attributes' => 'attributes for <form> tag', + * 'requirednote => 'note about the required elements', + * // if we set the option to collect hidden elements + * 'hidden' => 'collected html of all hidden elements', + * // if there were some validation errors: + * 'errors' => array( + * '1st element name' => 'Error for the 1st element', + * ... + * 'nth element name' => 'Error for the nth element' + * ), + * // if there are no headers in the form: + * 'elements' => array( + * element_1, + * ... + * element_N + * ) + * // if there are headers in the form: + * 'sections' => array( + * array( + * 'header' => 'Header text for the first header', + * 'name' => 'Header name for the first header', + * 'elements' => array( + * element_1, + * ... + * element_K1 + * ) + * ), + * ... + * array( + * 'header' => 'Header text for the Mth header', + * 'name' => 'Header name for the Mth header', + * 'elements' => array( + * element_1, + * ... + * element_KM + * ) + * ) + * ) + * ); + * </pre> + * + * where element_i is an array of the form: + * <pre> + * array( + * 'name' => 'element name', + * 'value' => 'element value', + * 'type' => 'type of the element', + * 'frozen' => 'whether element is frozen', + * 'label' => 'label for the element', + * 'required' => 'whether element is required', + * 'error' => 'error associated with the element', + * 'style' => 'some information about element style (e.g. for Smarty)', + * // if element is not a group + * 'html' => 'HTML for the element' + * // if element is a group + * 'separator' => 'separator for group elements', + * 'elements' => array( + * element_1, + * ... + * element_N + * ) + * ); + * </pre> + * + * @category HTML + * @package HTML_QuickForm + * @author Alexey Borzov <avb@php.net> + * @author Adam Daniel <adaniel1@eesus.jnj.com> + * @author Bertrand Mansion <bmansion@mamasam.com> + * @author Thomas Schulz <ths@4bconsult.de> + * @version Release: 3.2.9 + * @since 3.0 + */ +class HTML_QuickForm_Renderer_Array extends HTML_QuickForm_Renderer +{ + /**#@+ + * @access private + */ + /** + * An array being generated + * @var array + */ + var $_ary; + + /** + * Number of sections in the form (i.e. number of headers in it) + * @var integer + */ + var $_sectionCount; + + /** + * Current section number + * @var integer + */ + var $_currentSection; + + /** + * Array representing current group + * @var array + */ + var $_currentGroup = null; + + /** + * Additional style information for different elements + * @var array + */ + var $_elementStyles = array(); + + /** + * true: collect all hidden elements into string; false: process them as usual form elements + * @var bool + */ + var $_collectHidden = false; + + /** + * true: render an array of labels to many labels, $key 0 named 'label', the rest "label_$key" + * false: leave labels as defined + * @var bool + */ + var $_staticLabels = false; + /**#@-*/ + + /** + * Constructor + * + * @param bool true: collect all hidden elements into string; false: process them as usual form elements + * @param bool true: render an array of labels to many labels, $key 0 to 'label' and the oterh to "label_$key" + * @access public + */ + function HTML_QuickForm_Renderer_Array($collectHidden = false, $staticLabels = false) + { + $this->HTML_QuickForm_Renderer(); + $this->_collectHidden = $collectHidden; + $this->_staticLabels = $staticLabels; + } // end constructor + + + /** + * Returns the resultant array + * + * @access public + * @return array + */ + function toArray() + { + return $this->_ary; + } + + + function startForm(&$form) + { + $this->_ary = array( + 'frozen' => $form->isFrozen(), + 'javascript' => $form->getValidationScript(), + 'attributes' => $form->getAttributes(true), + 'requirednote' => $form->getRequiredNote(), + 'errors' => array() + ); + if ($this->_collectHidden) { + $this->_ary['hidden'] = ''; + } + $this->_elementIdx = 1; + $this->_currentSection = null; + $this->_sectionCount = 0; + } // end func startForm + + + function renderHeader(&$header) + { + $this->_ary['sections'][$this->_sectionCount] = array( + 'header' => $header->toHtml(), + 'name' => $header->getName() + ); + $this->_currentSection = $this->_sectionCount++; + } // end func renderHeader + + + function renderElement(&$element, $required, $error) + { + $elAry = $this->_elementToArray($element, $required, $error); + if (!empty($error)) { + $this->_ary['errors'][$elAry['name']] = $error; + } + $this->_storeArray($elAry); + } // end func renderElement + + + function renderHidden(&$element) + { + if ($this->_collectHidden) { + $this->_ary['hidden'] .= $element->toHtml() . "\n"; + } else { + $this->renderElement($element, false, null); + } + } // end func renderHidden + + + function startGroup(&$group, $required, $error) + { + $this->_currentGroup = $this->_elementToArray($group, $required, $error); + if (!empty($error)) { + $this->_ary['errors'][$this->_currentGroup['name']] = $error; + } + } // end func startGroup + + + function finishGroup(&$group) + { + $this->_storeArray($this->_currentGroup); + $this->_currentGroup = null; + } // end func finishGroup + + + /** + * Creates an array representing an element + * + * @access private + * @param HTML_QuickForm_element element being processed + * @param bool Whether an element is required + * @param string Error associated with the element + * @return array + */ + function _elementToArray(&$element, $required, $error) + { + $ret = array( + 'name' => $element->getName(), + 'value' => $element->getValue(), + 'type' => $element->getType(), + 'frozen' => $element->isFrozen(), + 'required' => $required, + 'error' => $error + ); + // render label(s) + $labels = $element->getLabel(); + if (is_array($labels) && $this->_staticLabels) { + foreach($labels as $key => $label) { + $key = is_int($key)? $key + 1: $key; + if (1 === $key) { + $ret['label'] = $label; + } else { + $ret['label_' . $key] = $label; + } + } + } else { + $ret['label'] = $labels; + } + + // set the style for the element + if (isset($this->_elementStyles[$ret['name']])) { + $ret['style'] = $this->_elementStyles[$ret['name']]; + } + if ('group' == $ret['type']) { + $ret['separator'] = $element->_separator; + $ret['elements'] = array(); + } else { + $ret['html'] = $element->toHtml(); + } + return $ret; + } + + + /** + * Stores an array representation of an element in the form array + * + * @access private + * @param array Array representation of an element + * @return void + */ + function _storeArray($elAry) + { + // where should we put this element... + if (is_array($this->_currentGroup) && ('group' != $elAry['type'])) { + $this->_currentGroup['elements'][] = $elAry; + } elseif (isset($this->_currentSection)) { + $this->_ary['sections'][$this->_currentSection]['elements'][] = $elAry; + } else { + $this->_ary['elements'][] = $elAry; + } + } + + + /** + * Sets a style to use for element rendering + * + * @param mixed element name or array ('element name' => 'style name') + * @param string style name if $elementName is not an array + * @access public + * @return void + */ + function setElementStyle($elementName, $styleName = null) + { + if (is_array($elementName)) { + $this->_elementStyles = array_merge($this->_elementStyles, $elementName); + } else { + $this->_elementStyles[$elementName] = $styleName; + } + } +} ?>
\ No newline at end of file |