alias = $alias; parent::__construct($controller, []); $this->bindToController(); } /** * Renders the widget. * @return string */ public function render() { return $this->makePartial('body', $this->getRenderData()); } public function updateList() { return ['#'.$this->getId('plugin-language-list') => $this->makePartial('items', $this->getRenderData())]; } public function refreshActivePlugin() { return ['#'.$this->getId('body') => $this->makePartial('widget-contents', $this->getRenderData())]; } /* * Event handlers */ public function onUpdate() { return $this->updateList(); } public function onSearch() { $this->setSearchTerm(Input::get('search')); return $this->updateList(); } /* * Methods for the internal use */ protected function getLanguageList($pluginCode) { $result = LocalizationModel::listPluginLanguages($pluginCode); return $result; } protected function getRenderData() { $activePluginVector = $this->controller->getBuilderActivePluginVector(); if (!$activePluginVector) { return [ 'pluginVector'=>null, 'items' => [] ]; } $items = $this->getLanguageList($activePluginVector->pluginCodeObj); $searchTerm = Str::lower($this->getSearchTerm()); if (strlen($searchTerm)) { $words = explode(' ', $searchTerm); $result = []; foreach ($items as $language) { if ($this->textMatchesSearch($words, $language)) { $result[] = $language; } } $items = $result; } return [ 'pluginVector'=>$activePluginVector, 'items'=>$items ]; } }