public function render(HTML_QuickForm2_Renderer $renderer) { // render as a normal select when frozen if ($this->frozen) { $renderer->renderElement($this); } else { $jsBuilder = $renderer->getJavascriptBuilder(); $this->renderClientRules($jsBuilder); $jsBuilder->addLibrary('dualselect', 'dualselect.js', 'js/', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR); $keepSorted = empty($this->data['keepSorted']) ? 'false' : 'true'; $jsBuilder->addElementJavascript("qf.elements.dualselect.init('{$this->getId()}', {$keepSorted});"); // Fall back to using the Default renderer if custom one does not have a plugin if ($renderer->methodExists('renderDualSelect')) { $renderer->renderDualSelect($this); } else { $renderer->renderElement($this); } } return $renderer; }
/** * Checks whether a method is available in this object * * A method is considered available if this class has such a public method, * if a proxied renderer publishes such a method, if some plugin has such * a public method. * * @param string Method name * @return bool */ public function methodExists($name) { $lower = strtolower($name); $exists = parent::methodExists($name) || isset($this->_rendererMethods[$lower]); if (!$exists) { $this->updatePlugins(); $exists = isset($this->_pluginMethods[$lower]); } return $exists; }