diff --git a/lib/Alchemy/Phrasea/Controller/Admin/PluginsController.php b/lib/Alchemy/Phrasea/Controller/Admin/PluginsController.php index 33886dcbde..cbc7746e92 100644 --- a/lib/Alchemy/Phrasea/Controller/Admin/PluginsController.php +++ b/lib/Alchemy/Phrasea/Controller/Admin/PluginsController.php @@ -30,6 +30,21 @@ class PluginsController ]); } + /** + * @param string $pluginName + * @return Response + */ + public function showAction($pluginName) + { + if (!isset($this->app['plugins'][$pluginName])) { + throw new \InvalidArgumentException('Expects a valid plugin name.'); + } + + return $this->render('admin/plugins/show.html.twig', [ + 'plugin' => $this->app['plugins'][$pluginName], + ]); + } + /** * @param string $view * @param array $parameters diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Admin/Plugins.php b/lib/Alchemy/Phrasea/ControllerProvider/Admin/Plugins.php index 159d44f33e..d56831c55f 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Admin/Plugins.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Admin/Plugins.php @@ -47,6 +47,10 @@ class Plugins implements ControllerProviderInterface, ServiceProviderInterface ->get('/', 'controller.admin_plugin:indexAction') ->bind('admin_plugins_list'); + $controllers + ->get('/{pluginName}', 'controller.admin_plugin:showAction') + ->bind('admin_plugins_show'); + return $controllers; } } diff --git a/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php b/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php index 58ebd39906..1110d7101e 100644 --- a/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php +++ b/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php @@ -43,6 +43,7 @@ class PluginServiceProvider implements ServiceProviderInterface $app['plugins.manager'] = $app->share(function (Application $app) { return new PluginManager($app['plugin.path'], $app['plugins.plugins-validator'], $app['conf']); }); + // All plugins, indexed by their name $app['plugins'] = $app->share(function () { return new Pimple(); }); diff --git a/lib/Alchemy/Phrasea/Plugin/BasePluginMetadata.php b/lib/Alchemy/Phrasea/Plugin/BasePluginMetadata.php index de1794f99f..2bae6225d3 100644 --- a/lib/Alchemy/Phrasea/Plugin/BasePluginMetadata.php +++ b/lib/Alchemy/Phrasea/Plugin/BasePluginMetadata.php @@ -17,17 +17,21 @@ class BasePluginMetadata implements PluginMetadataInterface private $version; /** @var string */ private $iconUrl; + /** @var string */ + private $localeTextDomain; /** * @param string $name * @param string $version * @param string $iconUrl + * @param string $localeTextDomain */ - public function __construct($name, $version, $iconUrl) + public function __construct($name, $version, $iconUrl, $localeTextDomain) { $this->name = $name; $this->version = $version; $this->iconUrl = $iconUrl; + $this->localeTextDomain = $localeTextDomain; } /** @@ -53,4 +57,12 @@ class BasePluginMetadata implements PluginMetadataInterface { return $this->iconUrl; } + + /** + * @return string + */ + public function getLocaleTextDomain() + { + return $this->localeTextDomain; + } } diff --git a/templates/web/admin/plugins/index.html.twig b/templates/web/admin/plugins/index.html.twig index 37be88a77f..25dfb78a70 100644 --- a/templates/web/admin/plugins/index.html.twig +++ b/templates/web/admin/plugins/index.html.twig @@ -7,9 +7,12 @@