Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattab <matthieu.aubry@gmail.com>2013-07-17 03:02:25 +0400
committermattab <matthieu.aubry@gmail.com>2013-07-17 03:02:25 +0400
commit2cfe210dbbcc812be95a66404d87553af8078520 (patch)
treebc86d3cf73f86e8db084e7713ae504e25846e68d /plugins
parentea091e48fcde6161d98ee5fc08cd97a783b2dbd5 (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.php40
-rw-r--r--plugins/CorePluginsAdmin/templates/macros.twig6
-rw-r--r--plugins/Zeitgeist/stylesheets/simple_structure.css2
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 @@
&nbsp; <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;
}