/library/Zend/Form/Decorator/Fieldset.php
PHP | 172 lines | 79 code | 17 blank | 76 comment | 13 complexity | 6d159636e271911915ada7fd2fe96f4f MD5 | raw file
Possible License(s): BSD-3-Clause
- <?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-2012 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- /**
- * @namespace
- */
- namespace Zend\Form\Decorator;
- /**
- * Zend_Form_Decorator_Fieldset
- *
- * Any options passed will be used as HTML attributes of the fieldset tag.
- *
- * @uses \Zend\Form\Decorator\AbstractDecorator
- * @category Zend
- * @package Zend_Form
- * @subpackage Decorator
- * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- class Fieldset extends AbstractDecorator
- {
- /**
- * Attribs that should be removed prior to rendering
- * @var array
- */
- public $stripAttribs = array(
- 'action',
- 'enctype',
- 'helper',
- 'method',
- 'name',
- );
- /**
- * Fieldset legend
- * @var string
- */
- protected $_legend;
- /**
- * Default placement: surround content
- * @var string
- */
- protected $_placement = null;
-
- /**
- * Get option
- *
- * @param string $key
- * @return mixed
- */
- public function getOption($key)
- {
- if (null !== $this->_element) {
- $this->getOptions();
- }
-
- return parent::getOption($key);
- }
- /**
- * 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) && '' !== $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);
- }
- }