public function setJavascriptBuilder(HTML_QuickForm2_JavascriptBuilder $builder = null) { $this->_renderer->setJavascriptBuilder($builder); return $this; }
/** * 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; }