Skip to content
Extraits de code Groupes Projets
Valider 4b741958 rédigé par mattab's avatar mattab
Parcourir les fichiers

Refs #3942 Adding Themes menu in the admin screen. Next: make Zeitgeist the...

Refs #3942 Adding Themes menu in the admin screen. Next: make Zeitgeist the default theme (and allow only one enabled theme at a time)
parent 1ad9203f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -28,6 +28,7 @@ abstract class Piwik_Plugin ...@@ -28,6 +28,7 @@ abstract class Piwik_Plugin
* - 'version' => string // plugin version number; examples and 3rd party plugins must not use Piwik_Version::VERSION; 3rd party plugins must increment the version number with each plugin release * - 'version' => string // plugin version number; examples and 3rd party plugins must not use Piwik_Version::VERSION; 3rd party plugins must increment the version number with each plugin release
* - 'translationAvailable' => bool // is there a translation file in plugins/your-plugin/lang/* ? * - 'translationAvailable' => bool // is there a translation file in plugins/your-plugin/lang/* ?
* - 'TrackerPlugin' => bool // should we load this plugin during the stats logging process? * - 'TrackerPlugin' => bool // should we load this plugin during the stats logging process?
* - 'theme' => bool // Whether this plugin is a theme (a theme is a plugin, but a plugin is not necessarily a theme)
* *
* @return array * @return array
*/ */
...@@ -108,6 +109,17 @@ abstract class Piwik_Plugin ...@@ -108,6 +109,17 @@ abstract class Piwik_Plugin
return $info['version']; return $info['version'];
} }
/**
* Whether this plugin is a theme
*
* @return bool
*/
final public function isTheme()
{
$info = $this->getInformation();
return !empty($info['theme']) && (bool)$info['theme'];
}
/** /**
* Returns the plugin's base class name without the "Piwik_" prefix, * Returns the plugin's base class name without the "Piwik_" prefix,
* e.g., "UserCountry" when the plugin class is "Piwik_UserCountry" * e.g., "UserCountry" when the plugin class is "Piwik_UserCountry"
......
...@@ -714,9 +714,14 @@ Piwik will let you track visitors to your website for free. You should definitel ...@@ -714,9 +714,14 @@ Piwik will let you track visitors to your website for free. You should definitel
'CoreHome_MakeOneTimeDonation' => 'Make a one time donation, instead.', 'CoreHome_MakeOneTimeDonation' => 'Make a one time donation, instead.',
'CorePluginsAdmin_PluginDescription' => 'Plugins Administration Interface.', 'CorePluginsAdmin_PluginDescription' => 'Plugins Administration Interface.',
'CorePluginsAdmin_Plugins' => 'Plugins', 'CorePluginsAdmin_Plugins' => 'Plugins',
'CorePluginsAdmin_PluginsManagement' => 'Plugins Management', 'CorePluginsAdmin_Themes' => 'Themes',
'CorePluginsAdmin_PluginsManagement' => 'Manage Plugins',
'CorePluginsAdmin_ThemesManagement' => 'Manage Themes',
'CorePluginsAdmin_MainDescription' => 'Plugins extend and expand the functionality of Piwik. Once a plugin is installed, you may activate it or deactivate it here.', 'CorePluginsAdmin_MainDescription' => 'Plugins extend and expand the functionality of Piwik. Once a plugin is installed, you may activate it or deactivate it here.',
'CorePluginsAdmin_ThemesDescription' => 'Themes can change the appearance of Piwik user interface,
and provide a completely new visual experience to enjoy your analytics reports.',
'CorePluginsAdmin_Plugin' => 'Plugin', 'CorePluginsAdmin_Plugin' => 'Plugin',
'CorePluginsAdmin_Theme' => 'Theme',
'CorePluginsAdmin_Version' => 'Version', 'CorePluginsAdmin_Version' => 'Version',
'CorePluginsAdmin_Status' => 'Status', 'CorePluginsAdmin_Status' => 'Status',
'CorePluginsAdmin_Action' => 'Action', 'CorePluginsAdmin_Action' => 'Action',
...@@ -728,8 +733,8 @@ Piwik will let you track visitors to your website for free. You should definitel ...@@ -728,8 +733,8 @@ Piwik will let you track visitors to your website for free. You should definitel
'CorePluginsAdmin_Inactive' => 'Inactive', 'CorePluginsAdmin_Inactive' => 'Inactive',
'CorePluginsAdmin_Deactivate' => 'Deactivate', 'CorePluginsAdmin_Deactivate' => 'Deactivate',
'CorePluginsAdmin_Activate' => 'Activate', 'CorePluginsAdmin_Activate' => 'Activate',
'CorePluginsAdmin_MenuPlugins' => 'Plugins', 'CorePluginsAdmin_MenuPlatform' => 'Platform',
'CorePluginsAdmin_MenuPluginsInstalled' => 'Installed', 'CorePluginsAdmin_MenuMarketplace' => 'Marketplace',
'CorePluginsAdmin_PluginCannotBeFound' => 'This plugin cannot be found!', 'CorePluginsAdmin_PluginCannotBeFound' => 'This plugin cannot be found!',
'CoreUpdater_PluginDescription' => 'Piwik updating mechanism', 'CoreUpdater_PluginDescription' => 'Piwik updating mechanism',
'CoreUpdater_UpdateTitle' => 'Update', 'CoreUpdater_UpdateTitle' => 'Update',
......
...@@ -15,22 +15,36 @@ ...@@ -15,22 +15,36 @@
*/ */
class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin
{ {
function index() function marketplace()
{ {
return $this->plugins(); $view = $this->configureView('@CorePluginsAdmin/marketplace');
echo $view->render();
} }
function plugins() function plugins()
{ {
Piwik::checkUserIsSuperUser(); $view = $this->configureView('@CorePluginsAdmin/plugins');
$view = new Piwik_View('@CorePluginsAdmin/plugins');
$view->pluginsInfo = $this->getPluginsInfo(); $view->pluginsInfo = $this->getPluginsInfo();
echo $view->render();
}
function themes()
{
$view = $this->configureView('@CorePluginsAdmin/themes');
$view->pluginsInfo = $this->getPluginsInfo($themesOnly = true);
echo $view->render();
}
protected function configureView($template)
{
Piwik::checkUserIsSuperUser();
$view = new Piwik_View($template);
$this->setBasicVariablesView($view); $this->setBasicVariablesView($view);
$this->displayWarningIfConfigFileNotWritable($view); $this->displayWarningIfConfigFileNotWritable($view);
echo $view->render(); return $view;
} }
protected function getPluginsInfo() protected function getPluginsInfo( $themesOnly = false )
{ {
$plugins = array(); $plugins = array();
...@@ -52,6 +66,7 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin ...@@ -52,6 +66,7 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin
foreach ($loadedPlugins as $oPlugin) { foreach ($loadedPlugins as $oPlugin) {
$pluginName = $oPlugin->getPluginName(); $pluginName = $oPlugin->getPluginName();
$plugins[$pluginName]['info'] = $oPlugin->getInformation(); $plugins[$pluginName]['info'] = $oPlugin->getInformation();
$plugins[$pluginName]['theme'] = $oPlugin->isTheme();
} }
foreach ($plugins as $pluginName => &$plugin) { foreach ($plugins as $pluginName => &$plugin) {
...@@ -59,11 +74,21 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin ...@@ -59,11 +74,21 @@ class Piwik_CorePluginsAdmin_Controller extends Piwik_Controller_Admin
$plugin['info'] = array( $plugin['info'] = array(
'description' => '<strong><em>' . Piwik_Translate('CorePluginsAdmin_PluginCannotBeFound') 'description' => '<strong><em>' . Piwik_Translate('CorePluginsAdmin_PluginCannotBeFound')
. '</strong></em>', . '</strong></em>',
'version' => Piwik_Translate('General_Unknown') 'version' => Piwik_Translate('General_Unknown'),
'theme' => false,
); );
} }
} }
return $plugins;
$pluginsFiltered = array();
foreach($plugins as $name => $plugin) {
$isTheme = $plugin['theme'];
if( ($themesOnly && $isTheme)
|| (!$themesOnly && !$isTheme)) {
$pluginsFiltered[$name] = $plugin;
}
}
return $pluginsFiltered;
} }
public function deactivate($redirectAfter = true) public function deactivate($redirectAfter = true)
......
...@@ -38,10 +38,18 @@ class Piwik_CorePluginsAdmin extends Piwik_Plugin ...@@ -38,10 +38,18 @@ class Piwik_CorePluginsAdmin extends Piwik_Plugin
function addMenu() function addMenu()
{ {
Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlugins', null, "", Piwik::isUserIsSuperUser(), $order = 15); Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', null, "", Piwik::isUserIsSuperUser(), $order = 15);
Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlugins', 'CorePluginsAdmin_MenuPluginsInstalled', Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_Plugins',
array('module' => 'CorePluginsAdmin', 'action' => 'index'), array('module' => 'CorePluginsAdmin', 'action' => 'plugins'),
Piwik::isUserIsSuperUser(), Piwik::isUserIsSuperUser(),
$order = 1); $order = 1);
Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_Themes',
array('module' => 'CorePluginsAdmin', 'action' => 'themes'),
Piwik::isUserIsSuperUser(),
$order = 3);
Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_MenuMarketplace',
array('module' => 'CorePluginsAdmin', 'action' => 'marketplace'),
Piwik::isUserIsSuperUser(),
$order = 5);
} }
} }
{% extends 'admin.twig' %} {% extends 'admin.twig' %}
{% import '@CorePluginsAdmin/macros.twig' as plugins %}
{% block content %} {% block content %}
<div style="max-width:980px;"> <div style="max-width:980px;">
...@@ -7,62 +9,7 @@ ...@@ -7,62 +9,7 @@
<p>{{ 'CorePluginsAdmin_MainDescription'|translate }}</p> <p>{{ 'CorePluginsAdmin_MainDescription'|translate }}</p>
<div class='entityContainer'> {{ plugins.tablePlugins(pluginsInfo, token_auth) }}
<table class="dataTable entityTable">
<thead>
<tr>
<th>{{ 'CorePluginsAdmin_Plugin'|translate }}</th>
<th class="num">{{ 'CorePluginsAdmin_Version'|translate }}</th>
<th>{{ 'General_Description'|translate }}</th>
<th class="status">{{ 'CorePluginsAdmin_Status'|translate }}</th>
<th class="action-links">{{ 'CorePluginsAdmin_Action'|translate }}</th>
</tr>
</thead>
<tbody id="plugins">
{% for name,plugin in pluginsInfo %}
{% if plugin.alwaysActivated is defined and not plugin.alwaysActivated %}
<tr {% if plugin.activated %}class="highlighted"{% endif %}>
<td class="name">
{% if plugin.info.homepage is defined %}
<a title="{{ 'CorePluginsAdmin_PluginHomepage'|translate }}" href="{{ plugin.info.homepage }}" target="_blank">
{% endif %}
{{ name }}
{% if plugin.info.homepage is defined %}</a>{% endif %}
</td>
<td class="vers">{{ plugin.info.version }}</td>
<td class="desc">
{{ plugin.info.description|raw|nl2br }}
{% if plugin.info.license is defined %}
&nbsp;({% if plugin.info.license_homepage is defined %}<a title="{{ 'CorePluginsAdmin_LicenseHomepage'|translate }}" target="_blank" href="{{ plugin.info.license_homepage }}">{% endif %}{{ plugin.info.license }}{% if plugin.info.license_homepage is defined %}</a>){% endif %}
{% endif %}
{% if plugin.info.author is defined %}
&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 %}
.</cite>
{% endif %}
</td>
<td class="status">
{% if plugin.activated %}
{{ 'CorePluginsAdmin_Active'|translate }}
{% else %}
{{ 'CorePluginsAdmin_Inactive'|translate }}
{% endif %}
</td>
<td class="togl action-links">
{% if plugin.activated %}
<a href='index.php?module=CorePluginsAdmin&action=deactivate&pluginName={{ name }}&token_auth={{ token_auth }}'>{{ 'CorePluginsAdmin_Deactivate'|translate }}</a>
{% else %}
<a href='index.php?module=CorePluginsAdmin&action=activate&pluginName={{ name }}&token_auth={{ token_auth }}'>{{ 'CorePluginsAdmin_Activate'|translate }}</a>
{% endif %}
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div> </div>
{% endblock %} {% endblock %}
...@@ -120,7 +120,6 @@ class Piwik_PrivacyManager_Controller extends Piwik_Controller_Admin ...@@ -120,7 +120,6 @@ class Piwik_PrivacyManager_Controller extends Piwik_Controller_Admin
$view->language = Piwik_LanguagesManager::getLanguageCodeForCurrentUser(); $view->language = Piwik_LanguagesManager::getLanguageCodeForCurrentUser();
$this->displayWarningIfConfigFileNotWritable($view); $this->displayWarningIfConfigFileNotWritable($view);
$this->setBasicVariablesView($view); $this->setBasicVariablesView($view);
echo $view->render(); echo $view->render();
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter