diff -r 000000000000 -r 4eba9c11703f web/Zend/Form/Decorator/Fieldset.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/Zend/Form/Decorator/Fieldset.php Mon Dec 13 18:29:26 2010 +0100 @@ -0,0 +1,155 @@ +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); + } +}