diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:39:39 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:39:39 +0000 |
commit | 8ca6cc32b2c789a3149861159ad258f2cb9491e3 (patch) | |
tree | 2492de6f1528dd44eaa169a5c1555026d9cb75ec /library/vendor/Zend/Form/Decorator/FormErrors.php | |
parent | Initial commit. (diff) | |
download | icingaweb2-a598b28402ead15d3701df32e198513e7b1f299c.tar.xz icingaweb2-a598b28402ead15d3701df32e198513e7b1f299c.zip |
Adding upstream version 2.11.4.upstream/2.11.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | library/vendor/Zend/Form/Decorator/FormErrors.php | 514 |
1 files changed, 514 insertions, 0 deletions
diff --git a/library/vendor/Zend/Form/Decorator/FormErrors.php b/library/vendor/Zend/Form/Decorator/FormErrors.php new file mode 100644 index 0000000..70c9353 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/FormErrors.php @@ -0,0 +1,514 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Form + * @subpackage Decorator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** Zend_Form_Decorator_Abstract */ + +/** + * Zend_Form_Decorator_FormErrors + * + * Displays all form errors in one view. + * + * Any options passed will be used as HTML attributes of the ul tag for the errors. + * + * @category Zend + * @package Zend_Form + * @subpackage Decorator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Form_Decorator_FormErrors extends Zend_Form_Decorator_Abstract +{ + /** + * Default values for markup options + * @var array + */ + protected $_defaults = array( + 'ignoreSubForms' => false, + 'showCustomFormErrors' => true, + 'onlyCustomFormErrors' => false, + 'markupElementLabelEnd' => '</b>', + 'markupElementLabelStart' => '<b>', + 'markupListEnd' => '</ul>', + 'markupListItemEnd' => '</li>', + 'markupListItemStart' => '<li>', + 'markupListStart' => '<ul class="form-errors">', + ); + + /**#@+ + * Markup options + * @var string + */ + protected $_ignoreSubForms; + protected $_showCustomFormErrors; + protected $_onlyCustomFormErrors; + protected $_markupElementLabelEnd; + protected $_markupElementLabelStart; + protected $_markupListEnd; + protected $_markupListItemEnd; + protected $_markupListItemStart; + protected $_markupListStart; + /**#@-*/ + + /** + * Whether or not to escape error label and error message + * @var bool + */ + protected $_escape; + + /** + * Render errors + * + * @param string $content + * @return string + */ + public function render($content) + { + $form = $this->getElement(); + if (!$form instanceof Zend_Form) { + return $content; + } + + $view = $form->getView(); + if (null === $view) { + return $content; + } + + $this->initOptions(); + $markup = $this->_recurseForm($form, $view); + + if (empty($markup)) { + return $content; + } + + $markup = $this->getMarkupListStart() + . $markup + . $this->getMarkupListEnd(); + + switch ($this->getPlacement()) { + case self::APPEND: + return $content . $this->getSeparator() . $markup; + case self::PREPEND: + return $markup . $this->getSeparator() . $content; + } + } + + /** + * Initialize options + * + * @return void + */ + public function initOptions() + { + $this->getMarkupElementLabelEnd(); + $this->getMarkupElementLabelStart(); + $this->getMarkupListEnd(); + $this->getMarkupListItemEnd(); + $this->getMarkupListItemStart(); + $this->getMarkupListStart(); + $this->getPlacement(); + $this->getSeparator(); + $this->ignoreSubForms(); + $this->getShowCustomFormErrors(); + $this->getOnlyCustomFormErrors(); + } + + /** + * Retrieve markupElementLabelStart + * + * @return string + */ + public function getMarkupElementLabelStart() + { + if (null === $this->_markupElementLabelStart) { + if (null === ($markupElementLabelStart = $this->getOption('markupElementLabelStart'))) { + $this->setMarkupElementLabelStart($this->_defaults['markupElementLabelStart']); + } else { + $this->setMarkupElementLabelStart($markupElementLabelStart); + $this->removeOption('markupElementLabelStart'); + } + } + + return $this->_markupElementLabelStart; + } + + /** + * Set markupElementLabelStart + * + * @param string $markupElementLabelStart + * @return Zend_Form_Decorator_FormErrors + */ + public function setMarkupElementLabelStart($markupElementLabelStart) + { + $this->_markupElementLabelStart = $markupElementLabelStart; + return $this; + } + + /** + * Retrieve markupElementLabelEnd + * + * @return string + */ + public function getMarkupElementLabelEnd() + { + if (null === $this->_markupElementLabelEnd) { + if (null === ($markupElementLabelEnd = $this->getOption('markupElementLabelEnd'))) { + $this->setMarkupElementLabelEnd($this->_defaults['markupElementLabelEnd']); + } else { + $this->setMarkupElementLabelEnd($markupElementLabelEnd); + $this->removeOption('markupElementLabelEnd'); + } + } + + return $this->_markupElementLabelEnd; + } + + /** + * Set markupElementLabelEnd + * + * @param string $markupElementLabelEnd + * @return Zend_Form_Decorator_FormErrors + */ + public function setMarkupElementLabelEnd($markupElementLabelEnd) + { + $this->_markupElementLabelEnd = $markupElementLabelEnd; + return $this; + } + + /** + * Retrieve markupListStart + * + * @return string + */ + public function getMarkupListStart() + { + if (null === $this->_markupListStart) { + if (null === ($markupListStart = $this->getOption('markupListStart'))) { + $this->setMarkupListStart($this->_defaults['markupListStart']); + } else { + $this->setMarkupListStart($markupListStart); + $this->removeOption('markupListStart'); + } + } + + return $this->_markupListStart; + } + + /** + * Set markupListStart + * + * @param string $markupListStart + * @return Zend_Form_Decorator_FormErrors + */ + public function setMarkupListStart($markupListStart) + { + $this->_markupListStart = $markupListStart; + return $this; + } + + /** + * Retrieve markupListEnd + * + * @return string + */ + public function getMarkupListEnd() + { + if (null === $this->_markupListEnd) { + if (null === ($markupListEnd = $this->getOption('markupListEnd'))) { + $this->setMarkupListEnd($this->_defaults['markupListEnd']); + } else { + $this->setMarkupListEnd($markupListEnd); + $this->removeOption('markupListEnd'); + } + } + + return $this->_markupListEnd; + } + + /** + * Set markupListEnd + * + * @param string $markupListEnd + * @return Zend_Form_Decorator_FormErrors + */ + public function setMarkupListEnd($markupListEnd) + { + $this->_markupListEnd = $markupListEnd; + return $this; + } + + /** + * Retrieve markupListItemStart + * + * @return string + */ + public function getMarkupListItemStart() + { + if (null === $this->_markupListItemStart) { + if (null === ($markupListItemStart = $this->getOption('markupListItemStart'))) { + $this->setMarkupListItemStart($this->_defaults['markupListItemStart']); + } else { + $this->setMarkupListItemStart($markupListItemStart); + $this->removeOption('markupListItemStart'); + } + } + + return $this->_markupListItemStart; + } + + /** + * Set markupListItemStart + * + * @param string $markupListItemStart + * @return Zend_Form_Decorator_FormErrors + */ + public function setMarkupListItemStart($markupListItemStart) + { + $this->_markupListItemStart = $markupListItemStart; + return $this; + } + + /** + * Retrieve markupListItemEnd + * + * @return string + */ + public function getMarkupListItemEnd() + { + if (null === $this->_markupListItemEnd) { + if (null === ($markupListItemEnd = $this->getOption('markupListItemEnd'))) { + $this->setMarkupListItemEnd($this->_defaults['markupListItemEnd']); + } else { + $this->setMarkupListItemEnd($markupListItemEnd); + $this->removeOption('markupListItemEnd'); + } + } + + return $this->_markupListItemEnd; + } + + /** + * Set markupListItemEnd + * + * @param string $markupListItemEnd + * @return Zend_Form_Decorator_FormErrors + */ + public function setMarkupListItemEnd($markupListItemEnd) + { + $this->_markupListItemEnd = $markupListItemEnd; + return $this; + } + + /** + * Retrieve ignoreSubForms + * + * @return bool + */ + public function ignoreSubForms() + { + if (null === $this->_ignoreSubForms) { + if (null === ($ignoreSubForms = $this->getOption('ignoreSubForms'))) { + $this->setIgnoreSubForms($this->_defaults['ignoreSubForms']); + } else { + $this->setIgnoreSubForms($ignoreSubForms); + $this->removeOption('ignoreSubForms'); + } + } + + return $this->_ignoreSubForms; + } + + /** + * Set ignoreSubForms + * + * @param bool $ignoreSubForms + * @return Zend_Form_Decorator_FormErrors + */ + public function setIgnoreSubForms($ignoreSubForms) + { + $this->_ignoreSubForms = (bool) $ignoreSubForms; + return $this; + } + + /** + * Get showCustomFormErrors + * + * @return bool + */ + public function getShowCustomFormErrors() + { + if (null === $this->_showCustomFormErrors) { + if (null === ($show = $this->getOption('showCustomFormErrors'))) { + $this->setShowCustomFormErrors($this->_defaults['showCustomFormErrors']); + } else { + $this->setShowCustomFormErrors($show); + $this->removeOption('showCustomFormErrors'); + } + } + return $this->_showCustomFormErrors; + } + + /** + * Set showCustomFormErrors + * + * @param bool $showCustomFormErrors + * @return Zend_Form_Decorator_FormErrors + */ + public function setShowCustomFormErrors($showCustomFormErrors) + { + $this->_showCustomFormErrors = (bool)$showCustomFormErrors; + return $this; + } + + /** + * Get onlyCustomFormErrors + * + * @return bool + */ + public function getOnlyCustomFormErrors() + { + if (null === $this->_onlyCustomFormErrors) { + if (null === ($show = $this->getOption('onlyCustomFormErrors'))) { + $this->setOnlyCustomFormErrors($this->_defaults['onlyCustomFormErrors']); + } else { + $this->setOnlyCustomFormErrors($show); + $this->removeOption('onlyCustomFormErrors'); + } + } + return $this->_onlyCustomFormErrors; + } + + /** + * Set onlyCustomFormErrors, whether to display elements messages + * in addition to custom form messages. + * + * @param bool $onlyCustomFormErrors + * @return Zend_Form_Decorator_FormErrors + */ + public function setOnlyCustomFormErrors($onlyCustomFormErrors) + { + $this->_onlyCustomFormErrors = (bool)$onlyCustomFormErrors; + return $this; + } + + /** + * Set whether or not to escape error label and error message + * + * Sets also the 'escape' option for the view helper + * + * @param bool $flag + * @return Zend_Form_Decorator_FormErrors + */ + public function setEscape($flag) + { + $this->_escape = (bool) $flag; + + // Set also option for view helper + $this->setOption('escape', $this->_escape); + return $this; + } + + /** + * Get escape flag + * + * @return bool + */ + public function getEscape() + { + if (null === $this->_escape) { + if (null !== ($escape = $this->getOption('escape'))) { + $this->setEscape($escape); + } else { + $this->setEscape(true); + } + } + + return $this->_escape; + } + + /** + * Render element label + * + * @param Zend_Form_Element $element + * @param Zend_View_Interface $view + * @return string + */ + public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $view) + { + $label = $element->getLabel(); + if (empty($label)) { + $label = $element->getName(); + + // Translate element name + if (null !== ($translator = $element->getTranslator())) { + $label = $translator->translate($label); + } + } + + if ($this->getEscape()) { + $label = $view->escape($label); + } + + return $this->getMarkupElementLabelStart() + . $label + . $this->getMarkupElementLabelEnd(); + } + + /** + * Recurse through a form object, rendering errors + * + * @param Zend_Form $form + * @param Zend_View_Interface $view + * @return string + */ + protected function _recurseForm(Zend_Form $form, Zend_View_Interface $view) + { + $content = ''; + + $custom = $form->getCustomMessages(); + if ($this->getShowCustomFormErrors() && count($custom)) { + $content .= $this->getMarkupListItemStart() + . $view->formErrors($custom, $this->getOptions()) + . $this->getMarkupListItemEnd(); + } + foreach ($form->getElementsAndSubFormsOrdered() as $subitem) { + if ($subitem instanceof Zend_Form_Element && !$this->getOnlyCustomFormErrors()) { + $messages = $subitem->getMessages(); + if (count($messages)) { + $subitem->setView($view); + $content .= $this->getMarkupListItemStart() + . $this->renderLabel($subitem, $view) + . $view->formErrors($messages, $this->getOptions()) + . $this->getMarkupListItemEnd(); + } + } else if ($subitem instanceof Zend_Form && !$this->ignoreSubForms()) { + $markup = $this->_recurseForm($subitem, $view); + + if (!empty($markup)) { + $content .= $this->getMarkupListStart() + . $markup + . $this->getMarkupListEnd(); + } + } + } + return $content; + } +} |