From 924f20d19da7ac927235ff43e4d526b597ccebae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Burnichon?= Date: Thu, 3 Sep 2015 16:52:29 +0200 Subject: [PATCH] Add Basic handling of plugins in admin --- .../Controller/Admin/PluginsController.php | 15 ++++++++++++++ .../ControllerProvider/Admin/Plugins.php | 4 ++++ .../Core/Provider/PluginServiceProvider.php | 1 + .../Phrasea/Plugin/BasePluginMetadata.php | 14 ++++++++++++- templates/web/admin/plugins/index.html.twig | 9 ++++++--- templates/web/admin/plugins/show.html.twig | 19 ++++++++++++++++++ templates/web/admin/tree.html.twig | 2 +- www/skins/admin/plugins-admin.png | Bin 0 -> 1353 bytes 8 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 templates/web/admin/plugins/show.html.twig create mode 100644 www/skins/admin/plugins-admin.png 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 @@
- {% for pluginKey in plugins.keys() %} - {% set plugin = plugins[pluginKey] %} -
{{ plugin.name }}
+ {% for pluginName in plugins.keys() %} +
  • + + {% trans pluginName plugins[pluginName].localeTextDomain %} + +
  • {% endfor %}
    {% endblock %} diff --git a/templates/web/admin/plugins/show.html.twig b/templates/web/admin/plugins/show.html.twig new file mode 100644 index 0000000000..89f20edf8d --- /dev/null +++ b/templates/web/admin/plugins/show.html.twig @@ -0,0 +1,19 @@ + +{% extends app['request'].isXmlHttpRequest ? "admin/common/ajax_wrap.html.twig" : "admin/common/iframe_wrap.html.twig" %} + +{% block content %} + + + {{ block('plugin_about') }} +{% endblock %} + + +{% block about %} +

    {% trans 'admin::plugins: about' %}

    + + {{ 'admin::plugins: name'|trans }} {{ plugin.name }} + {{ 'admin::plugins: version'|trans }} {{ plugin.version }} +{% endblock %} diff --git a/templates/web/admin/tree.html.twig b/templates/web/admin/tree.html.twig index 4f1ee05e47..a22b6414a5 100644 --- a/templates/web/admin/tree.html.twig +++ b/templates/web/admin/tree.html.twig @@ -71,7 +71,7 @@
  • - + {% trans 'admin::plugins: plugins' %}
  • diff --git a/www/skins/admin/plugins-admin.png b/www/skins/admin/plugins-admin.png new file mode 100644 index 0000000000000000000000000000000000000000..7b70cfbb30ac0a1512e8c67e13534a01e8653076 GIT binary patch literal 1353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m^Cs(B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc$WX!DQqR!T z)ZE-iN5ROz&_v(BP~Xs4*U-|+#Kg+LKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0d=ry1 z^FV@{U|qhxR-SpqC5d^-sh%#jN4=q7`@^Ko=Fg5id9bW3CMA1v(c=Za zLVg-k?gV%nZxx?nzj3#w^2V;R+o9DLt=?4BFF${6{rtpNSB*cu$A zZ0ol${Z5v)|H$_J#>Qid7_LSH=EtRaZCHO`eME5bTZX+ytkzwbua>jR+at4kO=9&5 zSHp8#zBKS%Zhcm=TX@gavYV5t3p!#{wZb3w1+KsPCCOy(|Gvd@$}$K3eQ=lV~_21bUOb2IIw SIq%qk3O7$zKbLh*2~7ZFV)85i literal 0 HcmV?d00001