diff options
author | mattab <matthieu.aubry@gmail.com> | 2013-07-17 03:02:25 +0400 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2013-07-17 03:02:25 +0400 |
commit | 2cfe210dbbcc812be95a66404d87553af8078520 (patch) | |
tree | bc86d3cf73f86e8db084e7713ae504e25846e68d /plugins | |
parent | ea091e48fcde6161d98ee5fc08cd97a783b2dbd5 (diff) |
Refs #546 Adding core "Uninstall" feature for Plugins and Themes + Cleanups + fix build by moving constant to PluginsManager
Todo
* ask for confirmation: "Do you want to uninstall X?" // warn that plugin-specific data may be deleted as part of calling the plugin's uninstall method, and may not be recoverable.
* call uninstall() method on the plugin class
* verify core plugins cant be uninstalled
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/CorePluginsAdmin/Controller.php | 40 | ||||
-rw-r--r-- | plugins/CorePluginsAdmin/templates/macros.twig | 6 | ||||
-rw-r--r-- | plugins/Zeitgeist/stylesheets/simple_structure.css | 2 |
3 files changed, 37 insertions, 11 deletions
diff --git a/plugins/CorePluginsAdmin/Controller.php b/plugins/CorePluginsAdmin/Controller.php index baa04f6da4..d9e6f0fca9 100644 --- a/plugins/CorePluginsAdmin/Controller.php +++ b/plugins/CorePluginsAdmin/Controller.php @@ -44,7 +44,7 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin return $view; } - protected function getPluginsInfo( $themesOnly = false ) + protected function getPluginsInfo($themesOnly = false) { $plugins = array(); @@ -58,6 +58,7 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin $plugins[$pluginName] = array( 'activated' => Piwik_PluginsManager::getInstance()->isPluginActivated($pluginName), 'alwaysActivated' => Piwik_PluginsManager::getInstance()->isPluginAlwaysActivated($pluginName), + 'uninstallable' => Piwik_PluginsManager::getInstance()->isPluginUninstallable($pluginName), ); } Piwik_PluginsManager::getInstance()->loadPluginTranslations(); @@ -74,7 +75,7 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin 'description' => '<strong><em>' . Piwik_Translate('CorePluginsAdmin_PluginCannotBeFound') . '</strong></em>', 'version' => Piwik_Translate('General_Unknown'), - 'theme' => false, + 'theme' => false, ); } } @@ -103,23 +104,46 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin public function deactivate($redirectAfter = true) { - Piwik::checkUserIsSuperUser(); - $this->checkTokenInUrl(); - $pluginName = Piwik_Common::getRequestVar('pluginName', null, 'string'); + $pluginName = $this->initPluginModification(); Piwik_PluginsManager::getInstance()->deactivatePlugin($pluginName); + $this->redirectAfterModification($redirectAfter); + } + + protected function redirectAfterModification($redirectAfter) + { if ($redirectAfter) { Piwik_Url::redirectToReferer(); } } - public function activate($redirectAfter = true) + protected function initPluginModification() { Piwik::checkUserIsSuperUser(); $this->checkTokenInUrl(); $pluginName = Piwik_Common::getRequestVar('pluginName', null, 'string'); + return $pluginName; + } + + public function activate($redirectAfter = true) + { + $pluginName = $this->initPluginModification(); Piwik_PluginsManager::getInstance()->activatePlugin($pluginName); - if ($redirectAfter) { - Piwik_Url::redirectToReferer(); + $this->redirectAfterModification($redirectAfter); + } + + public function uninstall($redirectAfter = true) + { + $pluginName = $this->initPluginModification(); + $uninstalled = Piwik_PluginsManager::getInstance()->uninstallPlugin($pluginName); + if(!$uninstalled) { + $path = Piwik_Common::getPathToPiwikRoot() . '/plugins/' . $pluginName . '/'; + $messagePermissions = Piwik::getErrorMessageMissingPermissions($path); + + $messageIntro = Piwik_Translate("Warning: \"%s\" could not be uninstalled. Piwik did not have enough permission to delete the files in $path. ", + $pluginName); + $exitMessage = $messageIntro . "<br/><br/>" . $messagePermissions; + Piwik_ExitWithMessage($exitMessage, $optionalTrace = false, $optionalLinks = false, $optionalLinkBack = true); } + $this->redirectAfterModification($redirectAfter); } } diff --git a/plugins/CorePluginsAdmin/templates/macros.twig b/plugins/CorePluginsAdmin/templates/macros.twig index 7da709fb30..1d3a592159 100644 --- a/plugins/CorePluginsAdmin/templates/macros.twig +++ b/plugins/CorePluginsAdmin/templates/macros.twig @@ -32,7 +32,7 @@ <cite>By {% if plugin.info.author_homepage is defined %} <a title="{{ 'CorePluginsAdmin_AuthorHomepage'|translate }}" href="{{ plugin.info.author_homepage }}" target="_blank"> - {% endif %}{{ plugin.info.author }}{% if plugin.info.author_homepage is defined %}</a>{% endif %} + {% endif %}{{ plugin.info.author }}{% if plugin.info.author_homepage is defined -%}</a>{% endif -%} .</cite> {% endif %} </td> @@ -40,7 +40,9 @@ {% if plugin.activated %} {{ 'CorePluginsAdmin_Active'|translate }} {% else %} - {{ 'CorePluginsAdmin_Inactive'|translate }} + {{ 'CorePluginsAdmin_Inactive'|translate }} <br/> + - {% if plugin.uninstallable %}<a href='index.php?module=CorePluginsAdmin&action=uninstall&pluginName={{ name }}&token_auth={{ + token_auth }}'>uninstall</a>{% endif %} {% endif %} </td> diff --git a/plugins/Zeitgeist/stylesheets/simple_structure.css b/plugins/Zeitgeist/stylesheets/simple_structure.css index c62143a1bb..1582148c9a 100644 --- a/plugins/Zeitgeist/stylesheets/simple_structure.css +++ b/plugins/Zeitgeist/stylesheets/simple_structure.css @@ -36,7 +36,7 @@ body#simple { vertical-align:bottom; } #title { - padding-bottom:5px; + padding-bottom:15px; border-bottom:1px solid #F0F0F0; font:42px Georgia, serif; } |