/** * Render element * * @param Zend_Form_Element $element * @return string */ public function aElement(Zend_Form_Element $element) { $viewClasses = array($element->getAttrib('class')); if ($element->isRequired()) { if (!$element->getAttrib('title')) { $element->setAttrib('title', 'Field is required'); } $viewClasses[] = 'aForm-field-required'; } if ($element->getValidators()) { $viewClasses[] = 'aForm-field-validate'; } if ($element->hasErrors()) { $viewClasses[] = 'aForm-field-invalid'; } elseif ($element->getValue() || !$element->isRequired()) { $viewClasses[] = 'aForm-field-valid'; } if ($element->getValidators()) { $viewClasses[] = 'aForm-field-validate'; } $element->setAttrib('class', implode(' ', $viewClasses)); $options = null; $separator = null; if ($element instanceof Zend_Form_Element_Multi) { $options = $element->getMultiOptions(); $separator = $element->getSeparator(); } return $this->view->{$element->helper}($element->getName(), $element->getValue(), $element->getAttribs(), $options, $separator); }
public function testRenderUsesElementIdIfSet() { $element = new Zend_Form_Element('foo'); $element->setAttrib('id', 'foobar')->setView($this->getView())->setLabel('My Label'); $this->decorator->setElement($element); $content = 'test content'; $test = $this->decorator->render($content); $this->assertContains('for="foobar"', $test); }
/** * Enter description here ... * @param Zend_Form_Element $element * @author Tung Ly */ public function renderFormElement($element, $vertical = 0) { if ($element->getType() != "Zend_Form_Element_Checkbox") { $element->setAttrib('class', $element->getAttrib('class') . ' form-control'); } if ($element->isRequired()) { $element->setLabel($element->getLabel() . ' *'); $element->setAttrib('class', $element->getAttrib('class') . ' required'); } switch ($element->getType()) { case 'Zend_Form_Element_Textarea': $element->setAttrib('rows', 5); $element->setAttrib('cols', 80); break; case 'Zend_Form_Element_Hidden': return $element; default: break; } $error = ''; if ($element->hasErrors()) { $error = 'has-error'; } if ($element->getType() == 'Zend_Form_Element_Textarea') { } $btn = array('Zend_Form_Element_Submit', 'Zend_Form_Element_Reset'); if (in_array($element->getType(), $btn)) { //$t ='<button type="reset" class="btn"><i class="icon-refresh"></i> '.$element->getLabel().'</button>'; $t = '<div class="span2">' . $element . '</div>'; } else { $label = trim(preg_replace("/([A-Z])/", " \$1", "{$element->getLabel()}"), ' '); $variables = array('%%ERROR_CLASS%%' => $error, '%%ELEMENT_NAME%%' => $element->getName(), '%%ELEMENT_LABEL%%' => $label, '%%ELEMENT%%' => $element, '%%HELP_MESSAGE%%' => current($element->getMessages())); $t = str_replace(array_keys($variables), $variables, $this->_getTemplate($vertical)); } return $t; }
/** * Static function that adds all the elements in 1 wrapping element instead of dt, dd structure * * @param $elm * @return void */ public static function setElementDecorator(Zend_Form_Element $elm) { $elm->addPrefixPath('Glitch_Form_Decorator', 'Glitch/Form/Decorator/', 'decorator'); $labelSettings = array(); if ($elm->getDecorator('Label')) { $labelSettings = $elm->getDecorator('Label')->getOptions(); unset($labelSettings['tag']); //Tag should never be needed when you call this method } $class = 'wrapper'; if ($elm->getAttrib('wrapperClass')) { $class .= ' ' . $elm->getAttrib('wrapperClass'); $elm->setAttrib('wrapperClass', null); } if ($elm instanceof Zend_Form_Element_Hidden) { $class .= ' hidden'; } $elm->clearDecorators()->addDecorator('Label', $labelSettings)->addDecorator('ViewHelper')->addDecorator('Description', array('escape' => false))->addDecorator('Errors')->addDecorator('Wrapper', array('tag' => 'div', 'id' => $elm->getName() . '-wrapper', 'class' => $class)); if ($elm instanceof Zend_Form_Element_Submit) { $elm->removeDecorator('Label'); } }
/** * Clean decorators for an element. * * @param Zend_Form_Element $element * @return $this */ public function cleanElement(Zend_Form_Element $element) { if (!$element instanceof Zend_Form_Element_File && !$element instanceof Zend_Form_Element_Captcha) { $decorators = $this->defaultNoElementDecorator; if (!$element instanceof Zend_Form_Element_Hidden) { $decorators = $this->defaultElementDecorators; } if ($element instanceof Zend_Form_Element_Checkbox) { $element->setAttrib('class', $element->getAttrib('class') . ' field-checkbox'); } if ($element instanceof Zend_Form_Element_MultiCheckbox) { $element->setAttrib('class', $element->getAttrib('class') . ' field-checkbox'); } if ($element instanceof Zend_Form_Element_Radio) { $element->setAttrib('class', $element->getAttrib('class') . ' field-radio'); } if ($element instanceof Zend_Form_Element_Text || $element instanceof Zend_Form_Element_Password) { $element->setAttrib('class', $element->getAttrib('class') . ' field-text'); } if ($element instanceof Zend_Form_Element_Multiselect) { $element->setAttrib('class', $element->getAttrib('class') . ' field-multiselect'); } elseif ($element instanceof Zend_Form_Element_Select) { $element->setAttrib('class', $element->getAttrib('class') . ' field-select'); } if ($element instanceof Zend_Form_Element_Textarea) { $element->setAttrib('class', $element->getAttrib('class') . ' field-textarea'); } if ($element instanceof Zend_Form_Element_File) { $element->setAttrib('class', $element->getAttrib('class') . ' field-file'); } $element->setDecorators($decorators); if ($element instanceof Zend_Form_Element_Button) { $element->setDecorators(array(array('ViewScript', array('viewScript' => 'centurion/form/_button.phtml')))); } } return $this; }
/** * Add a specific class name to an element. * * @param Zend_Form_Element $element * @param string $className * @return void */ private function _addClassNameToElement(Zend_Form_Element $element, $className) { $existingClassName = $element->getAttrib('class'); $newClassName = strpos($existingClassName, $className) !== false ? $existingClassName : "{$existingClassName} {$className}"; $element->setAttrib('class', $newClassName); }
/** * Setup per-element properties like labels, and classes */ protected function setupSingleElement(Zend_Form_Element $elm) { // determine if this element has an error. (Will be used below) $elmHasError = count($elm->getMessages()) > 0; // set element values from the language pack $elm->setLabel($this->lang->get('form.label.' . $elm->getName())); // display info about required length if validator exists if ($elm->getValidator('StringLength')) { $elm->setDescription(sprintf($this->lang->get('form.description.' . $elm->getName()), $elm->getValidator('StringLength')->getMin(), $elm->getValidator('StringLength')->getMax())); } else { $elm->setDescription($this->lang->get('form.description.' . $elm->getName())); } // Duplicating type attr to classname in case we need to support IE6 // and want to be able to directly target the element without using // input[type=text] $zendType = $elm->getType(); $className = strtolower(substr($zendType, strrpos($zendType, '_') + 1)); $elm->setAttrib('class', $className); // wrap this stuff up in a html div with class 'element' $elm->addDecorator('HtmlTag', array('tag' => 'div', 'class' => 'element')); // determine if element has error and use that to determine prefix char. // 1. There seems to be no way to add html to the reqPrefix // 2. There seems to be no way to add a custom classname to the div tag if ($elm->getName() != 'submit') { $reqChar = $elmHasError ? '! ' : '* '; $elm->addDecorator('Label', array('placement' => 'prepend', 'tag' => 'div', 'requiredPrefix' => $reqChar)); } // use custom error decorator that attempts to replace default error // messages by the ones supplied by My_LanguagaPack $errorDecorator = new My_Decorator_Errors(); $errorDecorator->setLanguagePack($this->lang); $elm->addDecorator($errorDecorator); // wrap everything so far in a li tag, give it class error if elm has error // ATT: using array to create alias for allready used HtmlTag decorator $liClass = $elmHasError ? 'error' : ''; $elm->addDecorator(array('outerLi' => 'HtmlTag'), array('tag' => 'li', 'class' => $liClass)); }
/** * Updates the ID of the given element. * * @param Zend_Form_Element $element */ protected function updateId(Zend_Form_Element $element) { $currentId = $element->getId(); $newId = $currentId . '-' . uniqid(); $element->setAttrib('id', $newId); }
/** * Set an error class into element HtmlTag decorator * * @param Zend_Form_Element $element Element to 'decorate' for the error. * @param string $styleClass CSS class name. * * @return void */ protected function setClassToAnElement(Zend_Form_Element $element, $styleClass) { $htmlTagDecorator = $element->getDecorator('HtmlTag'); if (!empty($htmlTagDecorator)) { $class = $htmlTagDecorator->getOption('class'); $htmlTagDecorator->setOption('class', $class . ' ' . $styleClass); } $element->setAttrib('class', $element->getAttrib('class') . ' ' . $styleClass); }