diff options
Diffstat (limited to '')
-rw-r--r-- | library/vendor/Zend/Form/Decorator/Fieldset.php | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/library/vendor/Zend/Form/Decorator/Fieldset.php b/library/vendor/Zend/Form/Decorator/Fieldset.php new file mode 100644 index 0000000..036df2c --- /dev/null +++ b/library/vendor/Zend/Form/Decorator/Fieldset.php @@ -0,0 +1,156 @@ +<?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_Fieldset + * + * Any options passed will be used as HTML attributes of the fieldset tag. + * + * + * @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_Fieldset extends Zend_Form_Decorator_Abstract +{ + /** + * Attribs that should be removed prior to rendering + * @var array + */ + public $stripAttribs = array( + 'action', + 'enctype', + 'helper', + 'method', + 'name', + 'accept-charset', + ); + + /** + * Fieldset legend + * @var string + */ + protected $_legend; + + /** + * Default placement: surround content + * @var string + */ + protected $_placement = null; + + /** + * Get options + * + * Merges in element attributes as well. + * + * @return array + */ + public function getOptions() + { + $options = parent::getOptions(); + if (null !== ($element = $this->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); + } +} |