public static function _renderRequiredNote(HTML_QuickForm2_Renderer $renderer, HTML_QuickForm2 $form) { if ($renderer->hasRequired && !$form->toggleFrozen(null)) { if (($note = $renderer->getOption('required_note')) && !empty($note)) { return '<div class="alert alert-info">' . $note . '</div>'; } } }
public function getOption($name = null) { return $this->_renderer->getOption($name); }
public static function _renderGroup(HTML_QuickForm2_Renderer $renderer, HTML_QuickForm2_Container_Group $group) { $break = HTML_Common2::getOption('linebreak'); $html[] = '<div class="row">'; $html[] = $renderer->renderLabel($group); $error = $group->getError(); if ($error) { $html[] = '<div class="element group error">'; if ($renderer->getOption('group_errors')) { $renderer->errors[] = $error; } else { $html[] = '<span class="error">' . $error . '</span><br />'; } } else { $html[] = '<div class="element group">'; } $separator = $group->getSeparator(); $elements = array_pop($renderer->html); if (!is_array($separator)) { $content = implode((string) $separator, $elements); } else { $content = ''; $cSeparator = count($separator); for ($i = 0, $count = count($elements); $i < $count; $i++) { $content .= (0 == $i ? '' : $separator[($i - 1) % $cSeparator]) . $elements[$i]; } } $html[] = $content; $html[] = '</div>'; $html[] = '</div>'; return implode($break, $html) . $break; }
/** * Renders the container using the given renderer * * Container will be output N + 1 times, where N are visible items and 1 is * the hidden prototype used by Javascript code to create new items. * * @param HTML_QuickForm2_Renderer $renderer renderer to use * * @return HTML_QuickForm2_Renderer */ public function render(HTML_QuickForm2_Renderer $renderer) { $backup = $this->backupChildAttributes(true, true); $hiddens = $renderer->getOption('group_hiddens'); $jsBuilder = $renderer->getJavascriptBuilder(); $evalBuilder = new HTML_QuickForm2_Container_Repeat_JavascriptBuilder(); $renderer->setJavascriptBuilder($evalBuilder)->setOption('group_hiddens', false)->startContainer($this); // first, render a (hidden) prototype $this->getPrototype()->addClass('repeatItem repeatPrototype'); $this->getPrototype()->render($renderer); $this->getPrototype()->removeClass('repeatPrototype'); // restore original JS builder $evalBuilder->passLibraries($jsBuilder); $renderer->setJavascriptBuilder($jsBuilder); // next, render all available rows foreach ($this->getIndexes() as $index) { $this->replaceIndexTemplates($index, $backup); /* @var HTML_QuickForm2_Node $child */ foreach ($this->getRecursiveIterator() as $child) { if (isset($this->childErrors[$hash = spl_object_hash($child)]) && isset($this->childErrors[$hash][$index])) { $child->setError($this->childErrors[$hash][$index]); } } $this->getPrototype()->render($renderer); } $this->restoreChildAttributes($backup); // only add javascript if not frozen if (!$this->toggleFrozen()) { $jsBuilder->addLibrary('repeat', 'quickform-repeat.js'); $jsBuilder->addElementJavascript($this->_generateInitScript($evalBuilder)); $this->renderClientRules($jsBuilder); } $renderer->finishContainer($this); $renderer->setOption('group_hiddens', $hiddens); return $renderer; }