+ = $content_for_sublayout ?>
+
+ diff --git a/app/Controller/Config.php b/app/Controller/Config.php index deafd05bf..abf6565c9 100644 --- a/app/Controller/Config.php +++ b/app/Controller/Config.php @@ -64,19 +64,6 @@ class Config extends BaseController $this->response->redirect($this->helper->url->to('config', $redirect)); } - /** - * Display the plugin page - * - * @access public - */ - public function plugins() - { - $this->response->html($this->helper->layout->config('config/plugins', array( - 'plugins' => $this->pluginLoader->plugins, - 'title' => t('Settings').' > '.t('Plugins'), - ))); - } - /** * Display the application settings page * diff --git a/app/Controller/PluginController.php b/app/Controller/PluginController.php new file mode 100644 index 000000000..8d5628f10 --- /dev/null +++ b/app/Controller/PluginController.php @@ -0,0 +1,38 @@ +response->html($this->helper->layout->plugin('plugin/show', array( + 'plugins' => $this->pluginLoader->plugins, + 'title' => t('Installed Plugins'), + ))); + } + + /** + * Display list of available plugins + */ + public function directory() + { + $plugins = $this->httpClient->getJson(PLUGIN_API_URL); + + $this->response->html($this->helper->layout->plugin('plugin/directory', array( + 'plugins' => $plugins, + 'title' => t('Plugin Directory'), + ))); + } +} diff --git a/app/Helper/LayoutHelper.php b/app/Helper/LayoutHelper.php index 75cd178a8..aeb0c8466 100644 --- a/app/Helper/LayoutHelper.php +++ b/app/Helper/LayoutHelper.php @@ -120,6 +120,19 @@ class LayoutHelper extends Base return $this->subLayout('config/layout', 'config/sidebar', $template, $params); } + /** + * Common layout for plugin views + * + * @access public + * @param string $template + * @param array $params + * @return string + */ + public function plugin($template, array $params) + { + return $this->subLayout('plugin/layout', 'plugin/sidebar', $template, $params); + } + /** * Common layout for dashboard views * diff --git a/app/ServiceProvider/AuthenticationProvider.php b/app/ServiceProvider/AuthenticationProvider.php index 1ac4656c1..6b037940c 100644 --- a/app/ServiceProvider/AuthenticationProvider.php +++ b/app/ServiceProvider/AuthenticationProvider.php @@ -130,6 +130,7 @@ class AuthenticationProvider implements ServiceProviderInterface $acl->add('AvatarFile', 'show', Role::APP_PUBLIC); $acl->add('Config', '*', Role::APP_ADMIN); + $acl->add('PluginController', '*', Role::APP_ADMIN); $acl->add('Currency', '*', Role::APP_ADMIN); $acl->add('Gantt', array('projects', 'saveProjectDate'), Role::APP_MANAGER); $acl->add('GroupListController', '*', Role::APP_ADMIN); diff --git a/app/ServiceProvider/RouteProvider.php b/app/ServiceProvider/RouteProvider.php index eb567e464..9001f176c 100644 --- a/app/ServiceProvider/RouteProvider.php +++ b/app/ServiceProvider/RouteProvider.php @@ -165,7 +165,6 @@ class RouteProvider implements ServiceProviderInterface // Config $container['route']->addRoute('settings', 'config', 'index'); - $container['route']->addRoute('settings/plugins', 'config', 'plugins'); $container['route']->addRoute('settings/application', 'config', 'application'); $container['route']->addRoute('settings/project', 'config', 'project'); $container['route']->addRoute('settings/project', 'config', 'project'); @@ -177,6 +176,10 @@ class RouteProvider implements ServiceProviderInterface $container['route']->addRoute('settings/links', 'link', 'index'); $container['route']->addRoute('settings/currencies', 'currency', 'index'); + // Plugins + $container['route']->addRoute('extensions', 'PluginController', 'show'); + $container['route']->addRoute('extensions/list', 'PluginController', 'directory'); + // Doc $container['route']->addRoute('documentation/:file', 'doc', 'show'); $container['route']->addRoute('documentation', 'doc', 'show'); diff --git a/app/Template/config/sidebar.php b/app/Template/config/sidebar.php index dd51bc749..a2a5a6cb1 100644 --- a/app/Template/config/sidebar.php +++ b/app/Template/config/sidebar.php @@ -4,9 +4,6 @@
= t('There is no plugin available.') ?>
+ +| = t('Name') ?> | += t('Author') ?> | += t('Version') ?> | += t('Description') ?> | += t('Action') ?> | +
|---|---|---|---|---|
| + = $this->text->e($plugin['title']) ?> + | += $this->text->e($plugin['author']) ?> | += $this->text->e($plugin['version']) ?> | += $this->text->e($plugin['description']) ?> | ++ | +