Skip to content

Commit

Permalink
refs #4126 display a link to plugin settings page from plugins and th…
Browse files Browse the repository at this point in the history
…emes page as well as after activating a plugin
  • Loading branch information
tsteur committed Oct 23, 2013
1 parent ff25602 commit 1297f81
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 12 deletions.
27 changes: 20 additions & 7 deletions core/Settings/Manager.php
Expand Up @@ -26,7 +26,7 @@ class Manager
* named `Settings` that extends `Piwik\Plugin\Settings` in order to be considered as a plugin setting. Otherwise
* the settings for a plugin won't be available.
*
* @return \Piwik\Plugin\Settings[]
* @return \Piwik\Plugin\Settings[] An array containing array([pluginName] => [setting instance]).
*/
public static function getAllPluginSettings()
{
Expand Down Expand Up @@ -60,22 +60,35 @@ public static function cleanupPluginSettings($pluginName)
}

/**
* Detects whether there are plugin settings available that the current user can change.
* Gets all plugins settings that have at least one settings a user is allowed to change.
*
* @return bool
* @return \Piwik\Plugin\Settings[] An array containing array([pluginName] => [setting instance]).
*/
public static function hasPluginSettingsForCurrentUser()
public static function getPluginSettingsForCurrentUser()
{
$settings = static::getAllPluginSettings();

foreach ($settings as $setting) {
$settingsForUser = array();
foreach ($settings as $pluginName => $setting) {
$forUser = $setting->getSettingsForCurrentUser();
if (!empty($forUser)) {
return true;
$settingsForUser[$pluginName] = $setting;
}
}

return false;
return $settingsForUser;
}

/**
* Detects whether there are plugin settings available that the current user can change.
*
* @return bool
*/
public static function hasPluginSettingsForCurrentUser()
{
$settings = static::getPluginSettingsForCurrentUser();

return !empty($settings);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion plugins/CoreAdminHome/Controller.php
Expand Up @@ -101,7 +101,7 @@ public function pluginSettings()

$view = new View('@CoreAdminHome/pluginSettings');

$settings = SettingsManager::getAllPluginSettings();
$settings = SettingsManager::getPluginSettingsForCurrentUser();
ksort($settings);
$view->pluginSettings = $settings;
$view->nonce = Nonce::getNonce(static::SET_PLUGIN_SETTINGS_NONCE);
Expand Down
3 changes: 3 additions & 0 deletions plugins/CorePluginsAdmin/Controller.php
Expand Up @@ -18,6 +18,7 @@
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugin\Manager;
use Piwik\Settings\Manager as SettingsManager;
use Piwik\Url;
use Piwik\View;

Expand Down Expand Up @@ -212,6 +213,8 @@ private function createPluginsOrThemesView($template, $themesOnly)
$view->otherUsersCount = count($users) - 1;
$view->themeEnabled = \Piwik\Plugin\Manager::getInstance()->getThemeEnabled()->getPluginName();

$view->pluginNamesHavingSettings = array_keys(SettingsManager::getPluginSettingsForCurrentUser());

if (CorePluginsAdmin::isMarketplaceEnabled()) {
$marketplace = new Marketplace();
$view->pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate($themesOnly);
Expand Down
7 changes: 7 additions & 0 deletions plugins/CorePluginsAdmin/stylesheets/marketplace.less
Expand Up @@ -9,6 +9,13 @@
.callToAction { font-size: 1.1em;line-height: 2em; }
}

#plugins .settingsLink {
text-align: right;
width: 100%;
display: inline-block;
font-style: italic;
}

#installPluginByUpload {
.description {
margin-top: 30px;
Expand Down
7 changes: 6 additions & 1 deletion plugins/CorePluginsAdmin/templates/macros.twig
Expand Up @@ -41,7 +41,7 @@

{% endmacro %}

{% macro tablePlugins(pluginsInfo, activateNonce, deactivateNonce, uninstallNonce, isTheme) %}
{% macro tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, isTheme) %}

<div id="confirmUninstallPlugin" class="ui-confirm">

Expand Down Expand Up @@ -72,6 +72,11 @@
{% endif %}
{{ name }}
{% if plugin.info.homepage is defined %}</a>{% endif %}

{% if name in pluginNamesHavingSettings %}
<br /><br />
<a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'pluginSettings'}) }}#{{ name|e('html_attr') }}" class="settingsLink">{{ 'General_Settings'|translate }}</a>
{% endif %}
</td>
<td class="vers">{{ plugin.info.version }}</td>
<td class="desc">
Expand Down
8 changes: 6 additions & 2 deletions plugins/CorePluginsAdmin/templates/plugins.twig
Expand Up @@ -6,7 +6,11 @@
<div style="max-width:980px;">

{% if activatedPluginName %}
<div id="feedback-success"><strong>Well done!</strong> You have successfully activated plugin {{ activatedPluginName }}</div>
<div id="feedback-success"><strong>Well done!</strong> You have successfully activated plugin {{ activatedPluginName }}.
{% if activatedPluginName in pluginNamesHavingSettings %}
You can change <a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'pluginSettings'}) }}#{{ activatedPluginName|e('html_attr') }}">settings</a> for this plugin now.
{% endif %}
</div>
{% endif %}

{% if pluginsHavingUpdate|length %}
Expand All @@ -21,7 +25,7 @@

<p>{{ 'CorePluginsAdmin_MainDescription'|translate }}</p>

{{ plugins.tablePlugins(pluginsInfo, activateNonce, deactivateNonce, uninstallNonce, false) }}
{{ plugins.tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, false) }}

</div>
{% endblock %}
2 changes: 1 addition & 1 deletion plugins/CorePluginsAdmin/templates/themes.twig
Expand Up @@ -25,7 +25,7 @@
{% endif %}
</p>

{{ plugins.tablePlugins(pluginsInfo, activateNonce, deactivateNonce, uninstallNonce, true) }}
{{ plugins.tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, true) }}

</div>
{% endblock %}

0 comments on commit 1297f81

Please sign in to comment.