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;
 }
示例#2
0
 /**
  * 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;
 }