From 8ca6cc32b2c789a3149861159ad258f2cb9491e3 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 14:39:39 +0200 Subject: Adding upstream version 2.11.4. Signed-off-by: Daniel Baumann --- library/vendor/Zend/Form/Decorator/Abstract.php | 251 ++++++++++ library/vendor/Zend/Form/Decorator/Callback.php | 126 +++++ library/vendor/Zend/Form/Decorator/Captcha.php | 71 +++ library/vendor/Zend/Form/Decorator/Description.php | 197 ++++++++ library/vendor/Zend/Form/Decorator/DtDdWrapper.php | 69 +++ library/vendor/Zend/Form/Decorator/Errors.php | 76 +++ library/vendor/Zend/Form/Decorator/Exception.php | 36 ++ library/vendor/Zend/Form/Decorator/Fieldset.php | 156 +++++++ library/vendor/Zend/Form/Decorator/File.php | 140 ++++++ library/vendor/Zend/Form/Decorator/Form.php | 133 ++++++ .../vendor/Zend/Form/Decorator/FormElements.php | 140 ++++++ library/vendor/Zend/Form/Decorator/FormErrors.php | 514 +++++++++++++++++++++ library/vendor/Zend/Form/Decorator/HtmlTag.php | 253 ++++++++++ library/vendor/Zend/Form/Decorator/Image.php | 152 ++++++ library/vendor/Zend/Form/Decorator/Interface.php | 123 +++++ library/vendor/Zend/Form/Decorator/Label.php | 461 ++++++++++++++++++ .../Zend/Form/Decorator/Marker/File/Interface.php | 33 ++ .../vendor/Zend/Form/Decorator/PrepareElements.php | 89 ++++ library/vendor/Zend/Form/Decorator/Tooltip.php | 57 +++ library/vendor/Zend/Form/Decorator/ViewHelper.php | 266 +++++++++++ library/vendor/Zend/Form/Decorator/ViewScript.php | 190 ++++++++ 21 files changed, 3533 insertions(+) create mode 100644 library/vendor/Zend/Form/Decorator/Abstract.php create mode 100644 library/vendor/Zend/Form/Decorator/Callback.php create mode 100644 library/vendor/Zend/Form/Decorator/Captcha.php create mode 100644 library/vendor/Zend/Form/Decorator/Description.php create mode 100644 library/vendor/Zend/Form/Decorator/DtDdWrapper.php create mode 100644 library/vendor/Zend/Form/Decorator/Errors.php create mode 100644 library/vendor/Zend/Form/Decorator/Exception.php create mode 100644 library/vendor/Zend/Form/Decorator/Fieldset.php create mode 100644 library/vendor/Zend/Form/Decorator/File.php create mode 100644 library/vendor/Zend/Form/Decorator/Form.php create mode 100644 library/vendor/Zend/Form/Decorator/FormElements.php create mode 100644 library/vendor/Zend/Form/Decorator/FormErrors.php create mode 100644 library/vendor/Zend/Form/Decorator/HtmlTag.php create mode 100644 library/vendor/Zend/Form/Decorator/Image.php create mode 100644 library/vendor/Zend/Form/Decorator/Interface.php create mode 100644 library/vendor/Zend/Form/Decorator/Label.php create mode 100644 library/vendor/Zend/Form/Decorator/Marker/File/Interface.php create mode 100644 library/vendor/Zend/Form/Decorator/PrepareElements.php create mode 100644 library/vendor/Zend/Form/Decorator/Tooltip.php create mode 100644 library/vendor/Zend/Form/Decorator/ViewHelper.php create mode 100644 library/vendor/Zend/Form/Decorator/ViewScript.php (limited to 'library/vendor/Zend/Form/Decorator') diff --git a/library/vendor/Zend/Form/Decorator/Abstract.php b/library/vendor/Zend/Form/Decorator/Abstract.php new file mode 100644 index 0000000..93c5a05 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Abstract.php @@ -0,0 +1,251 @@ +setOptions($options); + } elseif ($options instanceof Zend_Config) { + $this->setConfig($options); + } + } + + /** + * Set options + * + * @param array $options + * @return Zend_Form_Decorator_Abstract + */ + public function setOptions(array $options) + { + $this->_options = $options; + return $this; + } + + /** + * Set options from config object + * + * @param Zend_Config $config + * @return Zend_Form_Decorator_Abstract + */ + public function setConfig(Zend_Config $config) + { + return $this->setOptions($config->toArray()); + } + + /** + * Set option + * + * @param string $key + * @param mixed $value + * @return Zend_Form_Decorator_Abstract + */ + public function setOption($key, $value) + { + $this->_options[(string) $key] = $value; + return $this; + } + + /** + * Get option + * + * @param string $key + * @return mixed + */ + public function getOption($key) + { + $key = (string) $key; + if (isset($this->_options[$key])) { + return $this->_options[$key]; + } + + return null; + } + + /** + * Retrieve options + * + * @return array + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Remove single option + * + * @param mixed $key + * @return void + */ + public function removeOption($key) + { + if (null !== $this->getOption($key)) { + unset($this->_options[$key]); + return true; + } + + return false; + } + + /** + * Clear all options + * + * @return Zend_Form_Decorator_Abstract + */ + public function clearOptions() + { + $this->_options = array(); + return $this; + } + + /** + * Set current form element + * + * @param Zend_Form_Element|Zend_Form $element + * @return Zend_Form_Decorator_Abstract + * @throws Zend_Form_Decorator_Exception on invalid element type + */ + public function setElement($element) + { + if ((!$element instanceof Zend_Form_Element) + && (!$element instanceof Zend_Form) + && (!$element instanceof Zend_Form_DisplayGroup)) + { + throw new Zend_Form_Decorator_Exception('Invalid element type passed to decorator'); + } + + $this->_element = $element; + return $this; + } + + /** + * Retrieve current element + * + * @return Zend_Form_Element|Zend_Form + */ + public function getElement() + { + return $this->_element; + } + + /** + * Determine if decorator should append or prepend content + * + * @return string + */ + public function getPlacement() + { + $placement = $this->_placement; + if (null !== ($placementOpt = $this->getOption('placement'))) { + $placementOpt = strtoupper($placementOpt); + switch ($placementOpt) { + case self::APPEND: + case self::PREPEND: + $placement = $this->_placement = $placementOpt; + break; + case false: + $placement = $this->_placement = null; + break; + default: + break; + } + $this->removeOption('placement'); + } + + return $placement; + } + + /** + * Retrieve separator to use between old and new content + * + * @return string + */ + public function getSeparator() + { + $separator = $this->_separator; + if (null !== ($separatorOpt = $this->getOption('separator'))) { + $separator = $this->_separator = (string) $separatorOpt; + $this->removeOption('separator'); + } + return $separator; + } + + /** + * Decorate content and/or element + * + * @param string $content + * @return string + * @throws Zend_Form_Decorator_Exception when unimplemented + */ + public function render($content) + { + throw new Zend_Form_Decorator_Exception('render() not implemented'); + } +} diff --git a/library/vendor/Zend/Form/Decorator/Callback.php b/library/vendor/Zend/Form/Decorator/Callback.php new file mode 100644 index 0000000..fb759fd --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Callback.php @@ -0,0 +1,126 @@ +_callback = $callback; + return $this; + } + + /** + * Get registered callback + * + * If not previously registered, checks to see if it exists in registered + * options. + * + * @return null|string|array + */ + public function getCallback() + { + if (null === $this->_callback) { + if (null !== ($callback = $this->getOption('callback'))) { + $this->setCallback($callback); + $this->removeOption('callback'); + } + } + + return $this->_callback; + } + + /** + * Render + * + * If no callback registered, returns callback. Otherwise, gets return + * value of callback and either appends, prepends, or replaces passed in + * content. + * + * @param string $content + * @return string + */ + public function render($content) + { + $callback = $this->getCallback(); + if (null === $callback) { + return $content; + } + + $placement = $this->getPlacement(); + $separator = $this->getSeparator(); + + $response = call_user_func($callback, $content, $this->getElement(), $this->getOptions()); + + switch ($placement) { + case self::APPEND: + return $content . $separator . $response; + case self::PREPEND: + return $response . $separator . $content; + default: + // replace content + return $response; + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/Captcha.php b/library/vendor/Zend/Form/Decorator/Captcha.php new file mode 100644 index 0000000..914189e --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Captcha.php @@ -0,0 +1,71 @@ +getElement(); + if (!method_exists($element, 'getCaptcha')) { + return $content; + } + + $view = $element->getView(); + if (null === $view) { + return $content; + } + + $placement = $this->getPlacement(); + $separator = $this->getSeparator(); + + $captcha = $element->getCaptcha(); + $markup = $captcha->render($view, $element); + switch ($placement) { + case 'PREPEND': + $content = $markup . $separator . $content; + break; + case 'APPEND': + default: + $content = $content . $separator . $markup; + } + return $content; + } +} diff --git a/library/vendor/Zend/Form/Decorator/Description.php b/library/vendor/Zend/Form/Decorator/Description.php new file mode 100644 index 0000000..63dfdbc --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Description.php @@ -0,0 +1,197 @@ +_tag = (string) $tag; + return $this; + } + + /** + * Get HTML tag, if any, with which to surround description + * + * @return string + */ + public function getTag() + { + if (null === $this->_tag) { + $tag = $this->getOption('tag'); + if (null !== $tag) { + $this->removeOption('tag'); + } else { + $tag = 'p'; + } + + $this->setTag($tag); + return $tag; + } + + return $this->_tag; + } + + /** + * Get class with which to define description + * + * Defaults to 'hint' + * + * @return string + */ + public function getClass() + { + $class = $this->getOption('class'); + if (null === $class) { + $class = 'hint'; + $this->setOption('class', $class); + } + + return $class; + } + + /** + * Set whether or not to escape description + * + * @param bool $flag + * @return Zend_Form_Decorator_Description + */ + public function setEscape($flag) + { + $this->_escape = (bool) $flag; + return $this; + } + + /** + * Get escape flag + * + * @return true + */ + public function getEscape() + { + if (null === $this->_escape) { + if (null !== ($escape = $this->getOption('escape'))) { + $this->setEscape($escape); + $this->removeOption('escape'); + } else { + $this->setEscape(true); + } + } + + return $this->_escape; + } + + /** + * Render a description + * + * @param string $content + * @return string + */ + public function render($content) + { + $element = $this->getElement(); + $view = $element->getView(); + if (null === $view) { + return $content; + } + + $description = $element->getDescription(); + $description = trim($description ?? ''); + + if (!empty($description) && (null !== ($translator = $element->getTranslator()))) { + $description = $translator->translate($description); + } + + if (empty($description)) { + return $content; + } + + $separator = $this->getSeparator(); + $placement = $this->getPlacement(); + $tag = $this->getTag(); + $class = $this->getClass(); + $escape = $this->getEscape(); + + $options = $this->getOptions(); + + if ($escape) { + $description = $view->escape($description); + } + + if (!empty($tag)) { + $options['tag'] = $tag; + $decorator = new Zend_Form_Decorator_HtmlTag($options); + $description = $decorator->render($description); + } + + switch ($placement) { + case self::PREPEND: + return $description . $separator . $content; + case self::APPEND: + default: + return $content . $separator . $description; + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/DtDdWrapper.php b/library/vendor/Zend/Form/Decorator/DtDdWrapper.php new file mode 100644 index 0000000..b569fab --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/DtDdWrapper.php @@ -0,0 +1,69 @@ + item, and wraps the content in a
. Used as a + * default decorator for subforms and display groups. + * + * @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_DtDdWrapper extends Zend_Form_Decorator_Abstract +{ + /** + * Default placement: surround content + * @var string + */ + protected $_placement = null; + + /** + * Render + * + * Renders as the following: + *
$dtLabel
+ *
$content
+ * + * $dtLabel can be set via 'dtLabel' option, defaults to '\ ' + * + * @param string $content + * @return string + */ + public function render($content) + { + $elementName = $this->getElement()->getName(); + + $dtLabel = $this->getOption('dtLabel'); + if( null === $dtLabel ) { + $dtLabel = ' '; + } + + return '
' . $dtLabel . '
' . + '
' . $content . '
'; + } +} diff --git a/library/vendor/Zend/Form/Decorator/Errors.php b/library/vendor/Zend/Form/Decorator/Errors.php new file mode 100644 index 0000000..24fc3d9 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Errors.php @@ -0,0 +1,76 @@ +getElement(); + $view = $element->getView(); + if (null === $view) { + return $content; + } + + // Get error messages + if ($element instanceof Zend_Form + && null !== $element->getElementsBelongTo() + ) { + $errors = $element->getMessages(null, true); + } else { + $errors = $element->getMessages(); + } + + if (empty($errors)) { + return $content; + } + + $separator = $this->getSeparator(); + $placement = $this->getPlacement(); + $errors = $view->formErrors($errors, $this->getOptions()); + + switch ($placement) { + case self::APPEND: + return $content . $separator . $errors; + case self::PREPEND: + return $errors . $separator . $content; + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/Exception.php b/library/vendor/Zend/Form/Decorator/Exception.php new file mode 100644 index 0000000..6d86f32 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Exception.php @@ -0,0 +1,36 @@ +getElement())) { + $attribs = $element->getAttribs(); + $options = array_merge($attribs, $options); + $this->setOptions($options); + } + return $options; + } + + /** + * Set legend + * + * @param string $value + * @return Zend_Form_Decorator_Fieldset + */ + public function setLegend($value) + { + $this->_legend = (string) $value; + return $this; + } + + /** + * Get legend + * + * @return string + */ + public function getLegend() + { + $legend = $this->_legend; + if ((null === $legend) && (null !== ($element = $this->getElement()))) { + if (method_exists($element, 'getLegend')) { + $legend = $element->getLegend(); + $this->setLegend($legend); + } + } + if ((null === $legend) && (null !== ($legend = $this->getOption('legend')))) { + $this->setLegend($legend); + $this->removeOption('legend'); + } + + return $legend; + } + + /** + * Render a fieldset + * + * @param string $content + * @return string + */ + public function render($content) + { + $element = $this->getElement(); + $view = $element->getView(); + if (null === $view) { + return $content; + } + + $legend = $this->getLegend(); + $attribs = $this->getOptions(); + $name = $element->getFullyQualifiedName(); + $id = (string)$element->getId(); + + if ((!array_key_exists('id', $attribs) || $attribs['id'] == $id) && '' !== $id) { + $attribs['id'] = 'fieldset-' . $id; + } + + if (null !== $legend) { + if (null !== ($translator = $element->getTranslator())) { + $legend = $translator->translate($legend); + } + + $attribs['legend'] = $legend; + } + + foreach (array_keys($attribs) as $attrib) { + $testAttrib = strtolower($attrib); + if (in_array($testAttrib, $this->stripAttribs)) { + unset($attribs[$attrib]); + } + } + + return $view->fieldset($name, $content, $attribs); + } +} diff --git a/library/vendor/Zend/Form/Decorator/File.php b/library/vendor/Zend/Form/Decorator/File.php new file mode 100644 index 0000000..d7141de --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/File.php @@ -0,0 +1,140 @@ +getOptions(); + + if (null !== ($element = $this->getElement())) { + $attribs = array_merge($attribs, $element->getAttribs()); + } + + foreach ($this->_attribBlacklist as $key) { + if (array_key_exists($key, $attribs)) { + unset($attribs[$key]); + } + } + + return $attribs; + } + + /** + * Render a form file + * + * @param string $content + * @return string + */ + public function render($content) + { + $element = $this->getElement(); + if (!$element instanceof Zend_Form_Element) { + return $content; + } + + $view = $element->getView(); + if (!$view instanceof Zend_View_Interface) { + return $content; + } + + $name = $element->getName(); + $attribs = $this->getAttribs(); + if (!array_key_exists('id', $attribs)) { + $attribs['id'] = $name; + } + + $separator = $this->getSeparator(); + $placement = $this->getPlacement(); + $markup = array(); + $size = $element->getMaxFileSize(); + if ($size > 0) { + $element->setMaxFileSize(0); + $markup[] = $view->formHidden('MAX_FILE_SIZE', $size); + } + + if (Zend_File_Transfer_Adapter_Http::isApcAvailable()) { + $markup[] = $view->formHidden(ini_get('apc.rfc1867_name'), uniqid(), array('id' => 'progress_key')); + } else if (Zend_File_Transfer_Adapter_Http::isUploadProgressAvailable()) { + $markup[] = $view->formHidden('UPLOAD_IDENTIFIER', uniqid(), array('id' => 'progress_key')); + } + + $helper = $element->helper; + if ($element->isArray()) { + $name .= "[]"; + $count = $element->getMultiFile(); + for ($i = 0; $i < $count; ++$i) { + $htmlAttribs = $attribs; + $htmlAttribs['id'] .= '-' . $i; + $markup[] = $view->$helper($name, $htmlAttribs); + } + } else { + $markup[] = $view->$helper($name, $attribs); + } + + $markup = implode($separator, $markup); + + switch ($placement) { + case self::PREPEND: + return $markup . $separator . $content; + case self::APPEND: + default: + return $content . $separator . $markup; + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/Form.php b/library/vendor/Zend/Form/Decorator/Form.php new file mode 100644 index 0000000..c885731 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Form.php @@ -0,0 +1,133 @@ +_helper = (string) $helper; + return $this; + } + + /** + * Get view helper for rendering form + * + * @return string + */ + public function getHelper() + { + if (null !== ($helper = $this->getOption('helper'))) { + $this->setHelper($helper); + $this->removeOption('helper'); + } + return $this->_helper; + } + + /** + * Retrieve decorator options + * + * Assures that form action and method are set, and sets appropriate + * encoding type if current method is POST. + * + * @return array + */ + public function getOptions() + { + if (null !== ($element = $this->getElement())) { + if ($element instanceof Zend_Form) { + $element->getAction(); + $method = $element->getMethod(); + if ($method == Zend_Form::METHOD_POST) { + $this->setOption('enctype', 'application/x-www-form-urlencoded'); + } + foreach ($element->getAttribs() as $key => $value) { + $this->setOption($key, $value); + } + } elseif ($element instanceof Zend_Form_DisplayGroup) { + foreach ($element->getAttribs() as $key => $value) { + $this->setOption($key, $value); + } + } + } + + if (isset($this->_options['method'])) { + $this->_options['method'] = strtolower($this->_options['method']); + } + + return $this->_options; + } + + /** + * Render a form + * + * Replaces $content entirely from currently set element. + * + * @param string $content + * @return string + */ + public function render($content) + { + $form = $this->getElement(); + $view = $form->getView(); + if (null === $view) { + return $content; + } + + $helper = $this->getHelper(); + $attribs = $this->getOptions(); + $name = $form->getFullyQualifiedName(); + $attribs['id'] = $form->getId(); + return $view->$helper($name, $attribs, $content); + } +} diff --git a/library/vendor/Zend/Form/Decorator/FormElements.php b/library/vendor/Zend/Form/Decorator/FormElements.php new file mode 100644 index 0000000..c2fb136 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/FormElements.php @@ -0,0 +1,140 @@ +getElement(); + if ((!$form instanceof Zend_Form) && (!$form instanceof Zend_Form_DisplayGroup)) { + return $content; + } + + $belongsTo = ($form instanceof Zend_Form) ? $form->getElementsBelongTo() : null; + $elementContent = ''; + $displayGroups = ($form instanceof Zend_Form) ? $form->getDisplayGroups() : array(); + $separator = $this->getSeparator(); + $translator = $form->getTranslator(); + $items = array(); + $view = $form->getView(); + foreach ($form as $item) { + $item->setView($view); + + // Set translator + if (!$item->hasTranslator()) { + $item->setTranslator($translator); + } + + if ($item instanceof Zend_Form_Element) { + foreach ($displayGroups as $group) { + $elementName = $item->getName(); + $element = $group->getElement($elementName); + if ($element) { + // Element belongs to display group; only render in that + // context. + continue 2; + } + } + $item->setBelongsTo($belongsTo); + } elseif (!empty($belongsTo) && ($item instanceof Zend_Form)) { + if ($item->isArray()) { + $name = $this->mergeBelongsTo($belongsTo, $item->getElementsBelongTo()); + $item->setElementsBelongTo($name, true); + } else { + $item->setElementsBelongTo($belongsTo, true); + } + } elseif (!empty($belongsTo) && ($item instanceof Zend_Form_DisplayGroup)) { + foreach ($item as $element) { + $element->setBelongsTo($belongsTo); + } + } + + $items[] = $item->render(); + + if (($item instanceof Zend_Form_Element_File) + || (($item instanceof Zend_Form) + && (Zend_Form::ENCTYPE_MULTIPART == $item->getEnctype())) + || (($item instanceof Zend_Form_DisplayGroup) + && (Zend_Form::ENCTYPE_MULTIPART == $item->getAttrib('enctype'))) + ) { + if ($form instanceof Zend_Form) { + $form->setEnctype(Zend_Form::ENCTYPE_MULTIPART); + } elseif ($form instanceof Zend_Form_DisplayGroup) { + $form->setAttrib('enctype', Zend_Form::ENCTYPE_MULTIPART); + } + } + } + $elementContent = implode($separator, $items); + + switch ($this->getPlacement()) { + case self::PREPEND: + return $elementContent . $separator . $content; + case self::APPEND: + default: + return $content . $separator . $elementContent; + } + } +} 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 @@ + false, + 'showCustomFormErrors' => true, + 'onlyCustomFormErrors' => false, + 'markupElementLabelEnd' => '', + 'markupElementLabelStart' => '', + 'markupListEnd' => '', + 'markupListItemEnd' => '', + 'markupListItemStart' => '
  • ', + 'markupListStart' => '
      ', + ); + + /**#@+ + * 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; + } +} diff --git a/library/vendor/Zend/Form/Decorator/HtmlTag.php b/library/vendor/Zend/Form/Decorator/HtmlTag.php new file mode 100644 index 0000000..47b9e21 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/HtmlTag.php @@ -0,0 +1,253 @@ +_getEncoding(); + foreach ((array) $attribs as $key => $val) { + $key = htmlspecialchars($key, ENT_COMPAT, $enc); + if (is_array($val)) { + if (array_key_exists('callback', $val) + && is_callable($val['callback']) + ) { + $val = call_user_func($val['callback'], $this); + } else { + $val = implode(' ', $val); + } + } + $val = htmlspecialchars($val ?? '', ENT_COMPAT, $enc); + $xhtml .= " $key=\"$val\""; + } + return $xhtml; + } + + /** + * Normalize tag + * + * Ensures tag is alphanumeric characters only, and all lowercase. + * + * @param string $tag + * @return string + */ + public function normalizeTag($tag) + { + if (!isset($this->_tagFilter)) { + $this->_tagFilter = new Zend_Filter(); + $this->_tagFilter->addFilter(new Zend_Filter_Alnum()) + ->addFilter(new Zend_Filter_StringToLower()); + } + return $this->_tagFilter->filter($tag); + } + + /** + * Set tag to use + * + * @param string $tag + * @return Zend_Form_Decorator_HtmlTag + */ + public function setTag($tag) + { + $this->_tag = $this->normalizeTag($tag); + return $this; + } + + /** + * Get tag + * + * If no tag is registered, either via setTag() or as an option, uses 'div'. + * + * @return string + */ + public function getTag() + { + if (null === $this->_tag) { + if (null === ($tag = $this->getOption('tag'))) { + $this->setTag('div'); + } else { + $this->setTag($tag); + $this->removeOption('tag'); + } + } + + return $this->_tag; + } + + /** + * Get the formatted open tag + * + * @param string $tag + * @param array $attribs + * @return string + */ + protected function _getOpenTag($tag, array $attribs = null) + { + $html = '<' . $tag; + if (null !== $attribs) { + $html .= $this->_htmlAttribs($attribs); + } + $html .= '>'; + return $html; + } + + /** + * Get formatted closing tag + * + * @param string $tag + * @return string + */ + protected function _getCloseTag($tag) + { + return ''; + } + + /** + * Render content wrapped in an HTML tag + * + * @param string $content + * @return string + */ + public function render($content) + { + $tag = $this->getTag(); + $placement = $this->getPlacement(); + $noAttribs = $this->getOption('noAttribs'); + $openOnly = $this->getOption('openOnly'); + $closeOnly = $this->getOption('closeOnly'); + $this->removeOption('noAttribs'); + $this->removeOption('openOnly'); + $this->removeOption('closeOnly'); + + $attribs = null; + if (!$noAttribs) { + $attribs = $this->getOptions(); + } + + switch ($placement) { + case self::APPEND: + if ($closeOnly) { + return $content . $this->_getCloseTag($tag); + } + if ($openOnly) { + return $content . $this->_getOpenTag($tag, $attribs); + } + return $content + . $this->_getOpenTag($tag, $attribs) + . $this->_getCloseTag($tag); + case self::PREPEND: + if ($closeOnly) { + return $this->_getCloseTag($tag) . $content; + } + if ($openOnly) { + return $this->_getOpenTag($tag, $attribs) . $content; + } + return $this->_getOpenTag($tag, $attribs) + . $this->_getCloseTag($tag) + . $content; + default: + return (($openOnly || !$closeOnly) ? $this->_getOpenTag($tag, $attribs) : '') + . $content + . (($closeOnly || !$openOnly) ? $this->_getCloseTag($tag) : ''); + } + } + + /** + * Get encoding for use with htmlspecialchars() + * + * @return string + */ + protected function _getEncoding() + { + if (null !== $this->_encoding) { + return $this->_encoding; + } + + if (null === ($element = $this->getElement())) { + $this->_encoding = 'UTF-8'; + } elseif (null === ($view = $element->getView())) { + $this->_encoding = 'UTF-8'; + } elseif (!$view instanceof Zend_View_Abstract + && !method_exists($view, 'getEncoding') + ) { + $this->_encoding = 'UTF-8'; + } else { + $this->_encoding = $view->getEncoding(); + } + return $this->_encoding; + } +} diff --git a/library/vendor/Zend/Form/Decorator/Image.php b/library/vendor/Zend/Form/Decorator/Image.php new file mode 100644 index 0000000..4ec01c1 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Image.php @@ -0,0 +1,152 @@ +_tag = (string) $tag; + return $this; + } + + /** + * Get HTML tag, if any, with which to surround label + * + * @return void + */ + public function getTag() + { + if (null === $this->_tag) { + $tag = $this->getOption('tag'); + if (null !== $tag) { + $this->removeOption('tag'); + $this->setTag($tag); + } + return $tag; + } + + return $this->_tag; + } + + /** + * Get attributes to pass to image helper + * + * @return array + */ + public function getAttribs() + { + $attribs = $this->getOptions(); + + if (null !== ($element = $this->getElement())) { + $attribs['alt'] = $element->getLabel(); + $attribs = array_merge($attribs, $element->getAttribs()); + } + + foreach ($this->_attribBlacklist as $key) { + if (array_key_exists($key, $attribs)) { + unset($attribs[$key]); + } + } + + return $attribs; + } + + /** + * Render a form image + * + * @param string $content + * @return string + */ + public function render($content) + { + $element = $this->getElement(); + $view = $element->getView(); + if (null === $view) { + return $content; + } + + $tag = $this->getTag(); + $placement = $this->getPlacement(); + $separator = $this->getSeparator(); + $name = $element->getFullyQualifiedName(); + $attribs = $this->getAttribs(); + $attribs['id'] = $element->getId(); + + $image = $view->formImage($name, $element->getImageValue(), $attribs); + + if (null !== $tag) { + $decorator = new Zend_Form_Decorator_HtmlTag(); + $decorator->setOptions(array('tag' => $tag)); + $image = $decorator->render($image); + } + + switch ($placement) { + case self::PREPEND: + return $image . $separator . $content; + case self::APPEND: + default: + return $content . $separator . $image; + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/Interface.php b/library/vendor/Zend/Form/Decorator/Interface.php new file mode 100644 index 0000000..5cc1171 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Interface.php @@ -0,0 +1,123 @@ +setOption('id', $id); + return $this; + } + + /** + * Retrieve element ID (used in 'for' attribute) + * + * If none set in decorator, looks first for element 'id' attribute, and + * defaults to element name. + * + * @return string + */ + public function getId() + { + $id = $this->getOption('id'); + if (null === $id) { + if (null !== ($element = $this->getElement())) { + $id = $element->getId(); + $this->setId($id); + } + } + + return $id; + } + + /** + * Set HTML tag with which to surround label + * + * @param string $tag + * @return Zend_Form_Decorator_Label + */ + public function setTag($tag) + { + if (empty($tag)) { + $this->_tag = null; + } else { + $this->_tag = (string) $tag; + } + + $this->removeOption('tag'); + + return $this; + } + + /** + * Get HTML tag, if any, with which to surround label + * + * @return string + */ + public function getTag() + { + if (null === $this->_tag) { + $tag = $this->getOption('tag'); + if (null !== $tag) { + $this->removeOption('tag'); + $this->setTag($tag); + } + return $tag; + } + + return $this->_tag; + } + + /** + * Set the class to apply to the HTML tag with which to surround label + * + * @param string $tagClass + * @return Zend_Form_Decorator_Label + */ + public function setTagClass($tagClass) + { + if (empty($tagClass)) { + $this->_tagClass = null; + } else { + $this->_tagClass = (string) $tagClass; + } + + $this->removeOption('tagClass'); + + return $this; + } + + /** + * Get the class to apply to the HTML tag, if any, with which to surround label + * + * @return void + */ + public function getTagClass() + { + if (null === $this->_tagClass) { + $tagClass = $this->getOption('tagClass'); + if (null !== $tagClass) { + $this->removeOption('tagClass'); + $this->setTagClass($tagClass); + } + } + + return $this->_tagClass; + } + + /** + * Get class with which to define label + * + * Appends either 'optional' or 'required' to class, depending on whether + * or not the element is required. + * + * @return string + */ + public function getClass() + { + $class = ''; + $element = $this->getElement(); + + $decoratorClass = $this->getOption('class'); + if (!empty($decoratorClass)) { + $class .= ' ' . $decoratorClass; + } + + $type = $element->isRequired() ? 'required' : 'optional'; + + if (!strstr($class, $type)) { + $class .= ' ' . $type; + $class = trim($class); + } + + return $class; + } + + /** + * Load an optional/required suffix/prefix key + * + * @param string $key + * @return void + */ + protected function _loadOptReqKey($key) + { + if (!isset($this->$key)) { + $value = $this->getOption($key); + $this->$key = (string) $value; + if (null !== $value) { + $this->removeOption($key); + } + } + } + + /** + * Overloading + * + * Currently overloads: + * + * - getOpt(ional)Prefix() + * - getOpt(ional)Suffix() + * - getReq(uired)Prefix() + * - getReq(uired)Suffix() + * - setOpt(ional)Prefix() + * - setOpt(ional)Suffix() + * - setReq(uired)Prefix() + * - setReq(uired)Suffix() + * + * @param string $method + * @param array $args + * @return mixed + * @throws Zend_Form_Exception for unsupported methods + */ + public function __call($method, $args) + { + $tail = substr($method, -6); + $head = substr($method, 0, 3); + if (in_array($head, array('get', 'set')) + && (('Prefix' == $tail) || ('Suffix' == $tail)) + ) { + $position = substr($method, -6); + $type = strtolower(substr($method, 3, 3)); + switch ($type) { + case 'req': + $key = 'required' . $position; + break; + case 'opt': + $key = 'optional' . $position; + break; + default: + throw new Zend_Form_Exception(sprintf('Invalid method "%s" called in Label decorator, and detected as type %s', $method, $type)); + } + + switch ($head) { + case 'set': + if (0 === count($args)) { + throw new Zend_Form_Exception(sprintf('Method "%s" requires at least one argument; none provided', $method)); + } + $value = array_shift($args); + $this->$key = $value; + return $this; + case 'get': + default: + if (null === ($element = $this->getElement())) { + $this->_loadOptReqKey($key); + } elseif (isset($element->$key)) { + $this->$key = (string) $element->$key; + } else { + $this->_loadOptReqKey($key); + } + return $this->$key; + } + } + + throw new Zend_Form_Exception(sprintf('Invalid method "%s" called in Label decorator', $method)); + } + + /** + * Get label to render + * + * @return string + */ + public function getLabel() + { + if (null === ($element = $this->getElement())) { + return ''; + } + + $label = $element->getLabel(); + $label = trim($label ?? ''); + + if (empty($label)) { + return ''; + } + + $optPrefix = $this->getOptPrefix(); + $optSuffix = $this->getOptSuffix(); + $reqPrefix = $this->getReqPrefix(); + $reqSuffix = $this->getReqSuffix(); + $separator = $this->getSeparator(); + + if (!empty($label)) { + if ($element->isRequired()) { + $label = $reqPrefix . $label . $reqSuffix; + } else { + $label = $optPrefix . $label . $optSuffix; + } + } + + return $label; + } + + /** + * Determine if label should append, prepend or implicit content + * + * @return string + */ + public function getPlacement() + { + $placement = $this->_placement; + if (null !== ($placementOpt = $this->getOption('placement'))) { + $placementOpt = strtoupper($placementOpt); + switch ($placementOpt) { + case self::APPEND: + case self::PREPEND: + case self::IMPLICIT: + case self::IMPLICIT_PREPEND: + case self::IMPLICIT_APPEND: + $placement = $this->_placement = $placementOpt; + break; + case false: + $placement = $this->_placement = null; + break; + default: + break; + } + $this->removeOption('placement'); + } + + return $placement; + } + + /** + * Render a label + * + * @param string $content + * @return string + */ + public function render($content) + { + $element = $this->getElement(); + $view = $element->getView(); + if (null === $view) { + return $content; + } + + $label = $this->getLabel(); + $separator = $this->getSeparator(); + $placement = $this->getPlacement(); + $tag = $this->getTag(); + $tagClass = $this->getTagClass(); + $id = $this->getId(); + $class = $this->getClass(); + $options = $this->getOptions(); + + + if (empty($label) && empty($tag)) { + return $content; + } + + if (!empty($label)) { + $options['class'] = $class; + $label = trim($label); + + switch ($placement) { + case self::IMPLICIT: + // Break was intentionally omitted + + case self::IMPLICIT_PREPEND: + $options['escape'] = false; + $options['disableFor'] = true; + + $label = $view->formLabel( + $element->getFullyQualifiedName(), + $label . $separator . $content, + $options + ); + break; + + case self::IMPLICIT_APPEND: + $options['escape'] = false; + $options['disableFor'] = true; + + $label = $view->formLabel( + $element->getFullyQualifiedName(), + $content . $separator . $label, + $options + ); + break; + + case self::APPEND: + // Break was intentionally omitted + + case self::PREPEND: + // Break was intentionally omitted + + default: + $label = $view->formLabel( + $element->getFullyQualifiedName(), + $label, + $options + ); + break; + } + } else { + $label = ' '; + } + + if (null !== $tag) { + $decorator = new Zend_Form_Decorator_HtmlTag(); + if (null !== $this->_tagClass) { + $decorator->setOptions(array('tag' => $tag, + 'id' => $id . '-label', + 'class' => $tagClass)); + } else { + $decorator->setOptions(array('tag' => $tag, + 'id' => $id . '-label')); + } + + $label = $decorator->render($label); + } + + switch ($placement) { + case self::APPEND: + return $content . $separator . $label; + + case self::PREPEND: + return $label . $separator . $content; + + case self::IMPLICIT: + // Break was intentionally omitted + + case self::IMPLICIT_PREPEND: + // Break was intentionally omitted + + case self::IMPLICIT_APPEND: + return $label; + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/Marker/File/Interface.php b/library/vendor/Zend/Form/Decorator/Marker/File/Interface.php new file mode 100644 index 0000000..40a4fe7 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Marker/File/Interface.php @@ -0,0 +1,33 @@ +getElement(); + if ((!$form instanceof Zend_Form) && (!$form instanceof Zend_Form_DisplayGroup)) { + return $content; + } + + $this->_recursivelyPrepareForm($form); + + return $content; + } + + protected function _recursivelyPrepareForm(Zend_Form $form) + { + $belongsTo = ($form instanceof Zend_Form) ? $form->getElementsBelongTo() : null; + $elementContent = ''; + $separator = $this->getSeparator(); + $translator = $form->getTranslator(); + $view = $form->getView(); + + foreach ($form as $item) { + $item->setView($view) + ->setTranslator($translator); + if ($item instanceof Zend_Form_Element) { + $item->setBelongsTo($belongsTo); + } elseif (!empty($belongsTo) && ($item instanceof Zend_Form)) { + if ($item->isArray()) { + $name = $this->mergeBelongsTo($belongsTo, $item->getElementsBelongTo()); + $item->setElementsBelongTo($name, true); + } else { + $item->setElementsBelongTo($belongsTo, true); + } + $this->_recursivelyPrepareForm($item); + } elseif (!empty($belongsTo) && ($item instanceof Zend_Form_DisplayGroup)) { + foreach ($item as $element) { + $element->setBelongsTo($belongsTo); + } + } + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/Tooltip.php b/library/vendor/Zend/Form/Decorator/Tooltip.php new file mode 100644 index 0000000..2448b61 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Tooltip.php @@ -0,0 +1,57 @@ +getElement()->getAttrib('title'))) { + if (null !== ($translator = $this->getElement()->getTranslator())) { + $title = $translator->translate($title); + } + } + + $this->getElement()->setAttrib('title', $title); + return $content; + } + +} diff --git a/library/vendor/Zend/Form/Decorator/ViewHelper.php b/library/vendor/Zend/Form/Decorator/ViewHelper.php new file mode 100644 index 0000000..a0f71af --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/ViewHelper.php @@ -0,0 +1,266 @@ +_helper = (string) $helper; + return $this; + } + + /** + * Retrieve view helper for rendering element + * + * @return string + */ + public function getHelper() + { + if (null === $this->_helper) { + $options = $this->getOptions(); + if (isset($options['helper'])) { + $this->setHelper($options['helper']); + $this->removeOption('helper'); + } else { + $element = $this->getElement(); + if (null !== $element) { + if (null !== ($helper = $element->getAttrib('helper'))) { + $this->setHelper($helper); + } else { + $type = $element->getType(); + if ($pos = strrpos($type, '_')) { + $type = substr($type, $pos + 1); + } + $this->setHelper('form' . ucfirst($type)); + } + } + } + } + + return $this->_helper; + } + + /** + * Get name + * + * If element is a Zend_Form_Element, will attempt to namespace it if the + * element belongs to an array. + * + * @return string + */ + public function getName() + { + if (null === ($element = $this->getElement())) { + return ''; + } + + $name = $element->getName(); + + if (!$element instanceof Zend_Form_Element) { + return $name; + } + + if (null !== ($belongsTo = $element->getBelongsTo())) { + $name = $belongsTo . '[' + . $name + . ']'; + } + + if ($element->isArray()) { + $name .= '[]'; + } + + return $name; + } + + /** + * Retrieve element attributes + * + * Set id to element name and/or array item. + * + * @return array + */ + public function getElementAttribs() + { + if (null === ($element = $this->getElement())) { + return null; + } + + $attribs = $element->getAttribs(); + if (isset($attribs['helper'])) { + unset($attribs['helper']); + } + + if (method_exists($element, 'getSeparator')) { + if (null !== ($listsep = $element->getSeparator())) { + $attribs['listsep'] = $listsep; + } + } + + if (isset($attribs['id'])) { + return $attribs; + } + + $id = $element->getName(); + + if ($element instanceof Zend_Form_Element) { + if (null !== ($belongsTo = $element->getBelongsTo())) { + $belongsTo = preg_replace('/\[([^\]]+)\]/', '-$1', $belongsTo); + $id = $belongsTo . '-' . $id; + } + } + + $element->setAttrib('id', $id); + $attribs['id'] = $id; + + return $attribs; + } + + /** + * Get value + * + * If element type is one of the button types, returns the label. + * + * @param Zend_Form_Element $element + * @return string|null + */ + public function getValue($element) + { + if (!$element instanceof Zend_Form_Element) { + return null; + } + + foreach ($this->_buttonTypes as $type) { + if ($element instanceof $type) { + if (stristr($type, 'button')) { + $element->content = $element->getLabel(); + + return $element->getValue(); + } + return $element->getLabel(); + } + } + + return $element->getValue(); + } + + /** + * Render an element using a view helper + * + * Determine view helper from 'viewHelper' option, or, if none set, from + * the element type. Then call as + * helper($element->getName(), $element->getValue(), $element->getAttribs()) + * + * @param string $content + * @return string + * @throws Zend_Form_Decorator_Exception if element or view are not registered + */ + public function render($content) + { + $element = $this->getElement(); + + $view = $element->getView(); + if (null === $view) { + throw new Zend_Form_Decorator_Exception('ViewHelper decorator cannot render without a registered view object'); + } + + if (method_exists($element, 'getMultiOptions')) { + $element->getMultiOptions(); + } + + $helper = $this->getHelper(); + $separator = $this->getSeparator(); + $value = $this->getValue($element); + $attribs = $this->getElementAttribs(); + $name = $element->getFullyQualifiedName(); + $id = $element->getId(); + $attribs['id'] = $id; + + $helperObject = $view->getHelper($helper); + if (method_exists($helperObject, 'setTranslator')) { + $helperObject->setTranslator($element->getTranslator()); + } + + // Check list separator + if (isset($attribs['listsep']) + && in_array($helper, array('formMultiCheckbox', 'formRadio', 'formSelect')) + ) { + $listsep = $attribs['listsep']; + unset($attribs['listsep']); + + $elementContent = $view->$helper($name, $value, $attribs, $element->options, $listsep); + } else { + $elementContent = $view->$helper($name, $value, $attribs, $element->options); + } + + switch ($this->getPlacement()) { + case self::APPEND: + return $content . $separator . $elementContent; + case self::PREPEND: + return $elementContent . $separator . $content; + default: + return $elementContent; + } + } +} diff --git a/library/vendor/Zend/Form/Decorator/ViewScript.php b/library/vendor/Zend/Form/Decorator/ViewScript.php new file mode 100644 index 0000000..0a1a5a1 --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/ViewScript.php @@ -0,0 +1,190 @@ + + * // in view script: + * echo $this->element->getLabel(); + * + * + * Any options other than separator, placement, viewScript, and viewModule are passed to + * the partial as local variables. + * + * @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_ViewScript extends Zend_Form_Decorator_Abstract +{ + /** + * Default placement: append + * @var string + */ + protected $_placement = 'APPEND'; + + /** + * View script to render + * @var string + */ + protected $_viewScript; + + /** + * View script module + * @var string + */ + protected $_viewModule; + + /** + * Set view script + * + * @param string $script + * @return Zend_Form_Decorator_ViewScript + */ + public function setViewScript($script) + { + $this->_viewScript = (string) $script; + return $this; + } + + /** + * Get view script + * + * @return string|null + */ + public function getViewScript() + { + if (null === $this->_viewScript) { + if (null !== ($element = $this->getElement())) { + if (null !== ($viewScript = $element->getAttrib('viewScript'))) { + $this->setViewScript($viewScript); + return $viewScript; + } + } + + if (null !== ($viewScript = $this->getOption('viewScript'))) { + $this->setViewScript($viewScript) + ->removeOption('viewScript'); + } + } + + return $this->_viewScript; + } + + /** + * Set view script module + * + * @param string $module + * @return Zend_Form_Decorator_ViewScript + */ + public function setViewModule($viewModule) + { + $this->_viewModule = (string) $viewModule; + return $this; + } + + /** + * Get view script module + * + * @return string|null + */ + public function getViewModule() + { + if (null === $this->_viewModule) { + if (null !== ($element = $this->getElement())) { + if (null !== ($viewModule = $element->getAttrib('viewModule'))) { + $this->setViewModule($viewModule); + return $viewModule; + } + } + + if (null !== ($viewModule = $this->getOption('viewModule'))) { + $this->setViewModule($viewModule) + ->removeOption('viewModule'); + } + } + + return $this->_viewModule; + } + + /** + * Render a view script + * + * @param string $content + * @return string + */ + public function render($content) + { + $element = $this->getElement(); + $view = $element->getView(); + if (null === $view) { + return $content; + } + + $viewScript = $this->getViewScript(); + if (empty($viewScript)) { + throw new Zend_Form_Exception('No view script registered with ViewScript decorator'); + } + + $separator = $this->getSeparator(); + $placement = $this->getPlacement(); + + $vars = $this->getOptions(); + $vars['element'] = $element; + $vars['content'] = $content; + $vars['decorator'] = $this; + + $viewModule = $this->getViewModule(); + if (empty($viewModule)) { + $renderedContent = $view->partial($viewScript, $vars); + } else { + $renderedContent = $view->partial($viewScript, $viewModule, $vars); + } + + // Get placement again to see if it has changed + $placement = $this->getPlacement(); + + switch ($placement) { + case self::PREPEND: + return $renderedContent . $separator . $content; + case self::APPEND: + return $content . $separator . $renderedContent; + default: + return $renderedContent; + } + } +} -- cgit v1.2.3