listComponents(); return $this->makePartial('formcomponents', ['components' => $components]); } protected function listComponents() { $result = []; if (!isset($this->model->settings['components'])) { return $result; } $manager = ComponentManager::instance(); $manager->listComponents(); foreach ($this->model->settings['components'] as $name => $properties) { list($name, $alias) = strpos($name, ' ') ? explode(' ', $name) : [$name, $name]; try { $componentObj = $manager->makeComponent($name, null, $properties); $componentObj->alias = ((starts_with($name, '@') && $alias !== $name) ? '@' : '') . $alias; $componentObj->pluginIcon = 'icon-puzzle-piece'; /* * Look up the plugin hosting this component */ $plugin = $manager->findComponentPlugin($componentObj); if ($plugin) { $pluginDetails = $plugin->pluginDetails(); if (isset($pluginDetails['icon'])) { $componentObj->pluginIcon = $pluginDetails['icon']; } } } catch (Exception $ex) { if (starts_with($name, '@')) { $componentObj = new SoftComponent($properties); $componentObj->name = $name; $componentObj->alias = (($alias !== $name) ? '@' : '') . $alias; $componentObj->pluginIcon = 'icon-flag'; } else { $componentObj = new UnknownComponent(null, $properties, $ex->getMessage()); $componentObj->alias = $alias; $componentObj->pluginIcon = 'icon-bug'; } } $result[] = $componentObj; } return $result; } protected function getComponentName($component) { return ComponentHelpers::getComponentName($component); } protected function getComponentDescription($component) { return ComponentHelpers::getComponentDescription($component); } protected function getComponentsPropertyConfig($component) { return ComponentHelpers::getComponentsPropertyConfig($component); } protected function getComponentPropertyValues($component) { return ComponentHelpers::getComponentPropertyValues($component); } }