diff options
author | Thomas Steur <thomas.steur@googlemail.com> | 2014-05-20 10:10:27 +0400 |
---|---|---|
committer | Thomas Steur <thomas.steur@googlemail.com> | 2014-05-20 10:10:27 +0400 |
commit | 307ec31f2cfebd9c8bf9caba575e2864d42c8597 (patch) | |
tree | 2d6120c412b272344d204e9947fb3859bb7b3aa7 | |
parent | 45ae10e999baf0dfa066e5daae00bca824a68191 (diff) |
refs #5192 added generator for menus, updated more plugins to use menu class, fixed some bugs, improved design, fixed tests, ...
51 files changed, 635 insertions, 294 deletions
diff --git a/core/Menu/MenuAbstract.php b/core/Menu/MenuAbstract.php index 02d76b2ce5..ebdf22b5fd 100644 --- a/core/Menu/MenuAbstract.php +++ b/core/Menu/MenuAbstract.php @@ -9,6 +9,7 @@ namespace Piwik\Menu; use Piwik\Common; +use Piwik\Log; use Piwik\Plugins\SitesManager\API; use Piwik\Singleton; use Piwik\Plugin\Manager as PluginManager; @@ -84,7 +85,12 @@ abstract class MenuAbstract extends Singleton $klassName = sprintf('Piwik\\Plugins\\%s\\Menu', $pluginName); - if (!class_exists($klassName) || !is_subclass_of($klassName, 'Piwik\\Plugin\\Menu')) { + if (!class_exists($klassName)) { + return; + } + + if (!is_subclass_of($klassName, 'Piwik\\Plugin\\Menu')) { + Log::warning(sprintf('Cannot use menu for plugin %s, class %s does not extend Piwik\Plugin\Menu', $pluginName, $klassName)); return; } @@ -125,6 +131,13 @@ abstract class MenuAbstract extends Singleton ); } + /** + * Removes an existing entry from the menu. + * + * @param string $menuName The menu's category name. Can be a translation token. + * @param bool|string $subMenuName The menu item's name. Can be a translation token. + * @api + */ public function remove($menuName, $subMenuName = false) { $this->menuEntriesToRemove[] = array( @@ -157,6 +170,7 @@ abstract class MenuAbstract extends Singleton $this->menu[$menuName][$subMenuName]['_url'] = $url; $this->menu[$menuName][$subMenuName]['_order'] = $order; $this->menu[$menuName][$subMenuName]['_name'] = $subMenuName; + $this->menu[$menuName][$subMenuName]['_tooltip'] = $tooltip; $this->menu[$menuName]['_hasSubmenu'] = true; $this->menu[$menuName]['_tooltip'] = $tooltip; } @@ -179,6 +193,7 @@ abstract class MenuAbstract extends Singleton * @param $subMenuOriginal * @param $mainMenuRenamed * @param $subMenuRenamed + * @api */ public function rename($mainMenuOriginal, $subMenuOriginal, $mainMenuRenamed, $subMenuRenamed) { diff --git a/plugins/CoreConsole/Commands/GenerateMenu.php b/plugins/CoreConsole/Commands/GenerateMenu.php new file mode 100644 index 0000000000..18f2b4dd0e --- /dev/null +++ b/plugins/CoreConsole/Commands/GenerateMenu.php @@ -0,0 +1,58 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ + +namespace Piwik\Plugins\CoreConsole\Commands; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + */ +class GenerateMenu extends GeneratePluginBase +{ + protected function configure() + { + $this->setName('generate:menu') + ->setDescription('Adds a plugin menu class to an existing plugin') + ->addOption('pluginname', null, InputOption::VALUE_REQUIRED, 'The name of an existing plugin which does not have a menu defined yet'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $pluginName = $this->getPluginName($input, $output); + + $exampleFolder = PIWIK_INCLUDE_PATH . '/plugins/ExamplePlugin'; + $replace = array('ExamplePlugin' => $pluginName); + $whitelistFiles = array('/Menu.php'); + + $this->copyTemplateToPlugin($exampleFolder, $pluginName, $replace, $whitelistFiles); + + $this->writeSuccessMessage($output, array( + sprintf('Menu.php for %s generated.', $pluginName), + 'You can now start defining your plugin menu', + 'Enjoy!' + )); + } + + /** + * @param InputInterface $input + * @param OutputInterface $output + * @return array + * @throws \RunTimeException + */ + protected function getPluginName(InputInterface $input, OutputInterface $output) + { + $pluginNames = $this->getPluginNamesHavingNotSpecificFile('Menu.php'); + $invalidName = 'You have to enter the name of an existing plugin which does not already have a menu defined'; + + return $this->askPluginNameAndValidate($input, $output, $pluginNames, $invalidName); + } + +} diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown-directive.js b/plugins/CoreHome/angularjs/menudropdown/menudropdown-directive.js index b599f40e70..68c6d5171d 100644 --- a/plugins/CoreHome/angularjs/menudropdown/menudropdown-directive.js +++ b/plugins/CoreHome/angularjs/menudropdown/menudropdown-directive.js @@ -7,10 +7,11 @@ /** * Usage: - * <div piwik-menudropdown title="MyMenuItem"> - * <a class="item" href="/url"></a> - * <a class="item active">test</a> - * <a class="item disabled">-------</a> + * <div piwik-menudropdown menu-title="MyMenuItem"> + * <a class="item" href="/url">An Item</a> + * <a class="item disabled">Disabled</a> + * <a class="item active">Active item</a> + * <hr class="item separator"/> * <a class="item" href="/url"></a> * </div> */ @@ -21,7 +22,7 @@ angular.module('piwikApp').directive('piwikMenudropdown', function(){ replace: true, restrict: 'A', scope: { - title: '@' + menuTitle: '@' }, templateUrl: 'plugins/CoreHome/angularjs/menudropdown/menudropdown.html?cb=' + piwik.cacheBuster }; diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.html b/plugins/CoreHome/angularjs/menudropdown/menudropdown.html index c7a4e715aa..539db4d99c 100644 --- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.html +++ b/plugins/CoreHome/angularjs/menudropdown/menudropdown.html @@ -2,7 +2,7 @@ <span class="title" ng-click="view.showItems=!view.showItems" - >{{ title }}</span> + ng-bind-html="menuTitle"/> <div class="items" ng-show="view.showItems" ng-transclude></div> diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.less b/plugins/CoreHome/angularjs/menudropdown/menudropdown.less index 941db9ac66..39d3352e89 100644 --- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.less +++ b/plugins/CoreHome/angularjs/menudropdown/menudropdown.less @@ -28,8 +28,10 @@ .items { z-index: 21; position: absolute; - max-width: 200px; border: 1px solid @color-silver-l80 !important; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; background: @theme-color-background-base; max-height: 400px; overflow-y: auto; @@ -40,7 +42,7 @@ display: block; color: @theme-color-text !important; text-decoration: none !important; - padding: 1px 25px 1px 3px !important; + padding: 6px 25px 6px 6px !important; &:hover { background: @color-silver-l80; @@ -51,6 +53,13 @@ cursor: default; } + &.separator { + padding: 0px !important; + border-bottom: 0px; + margin: 0px; + } + + &.separator, &.disabled { opacity: 0.5; cursor: default; diff --git a/plugins/CoreHome/stylesheets/coreHome.less b/plugins/CoreHome/stylesheets/coreHome.less index ea2e0b228f..f10476568d 100644 --- a/plugins/CoreHome/stylesheets/coreHome.less +++ b/plugins/CoreHome/stylesheets/coreHome.less @@ -217,6 +217,11 @@ a.Piwik_Popover_Error_Back { } } +#userMenu .items { + margin-left: -105px; + width: 150px; +} + #updateCheckLinkContainer { opacity: 0.7; } diff --git a/plugins/CoreHome/templates/_topBarHelloMenu.twig b/plugins/CoreHome/templates/_topBarHelloMenu.twig index 90ca8161a3..89f1fcb52b 100644 --- a/plugins/CoreHome/templates/_topBarHelloMenu.twig +++ b/plugins/CoreHome/templates/_topBarHelloMenu.twig @@ -1,9 +1,9 @@ <div id="topRightBar"> {% set helloAlias %} {% if userAlias is not empty %} - {{ userAlias }} + {{ userAlias|raw }} {% else %} - {{ userLogin }} + {{ userLogin|raw }} {% endif %} {% endset %} @@ -21,7 +21,9 @@ {% endmacro %} <span class="topBarElem"> - <div title="{{ helloAlias|trim|raw }}" + <div id="userMenu" + title="{{ 'General_HelloUser'|translate(helloAlias|trim)|raw }}" + menu-title="{{ helloAlias|trim }}" piwik-menudropdown> {% if userLogin != 'anonymous' %} @@ -35,7 +37,7 @@ {% for lev1UserLabel,lev1UserMenu in userMenu if lev1UserLabel|slice(0,1) != '_' %} {% if userLogin != 'anonymous' or not loop.first %} - <span class="item disabled">--------</span> + <hr class="item separator"/> {% endif %} {% if lev1UserMenu._hasSubmenu is defined and lev1UserMenu._hasSubmenu %} diff --git a/plugins/DevicesDetection/Menu.php b/plugins/DevicesDetection/Menu.php index c67778a5b4..2b2f06ed78 100644 --- a/plugins/DevicesDetection/Menu.php +++ b/plugins/DevicesDetection/Menu.php @@ -26,7 +26,7 @@ class Menu extends \Piwik\Plugin\Menu ); } - public function configureReporingMenu(MenuReporting $menu) + public function configureReportingMenu(MenuReporting $menu) { $menu->add('General_Visitors', 'DevicesDetection_submenu', array('module' => 'DevicesDetection', 'action' => 'index')); } diff --git a/plugins/Events/Menu.php b/plugins/Events/Menu.php index 1a0585a5cd..78c9b0bc9b 100644 --- a/plugins/Events/Menu.php +++ b/plugins/Events/Menu.php @@ -14,7 +14,7 @@ use Piwik\Menu\MenuReporting; */ class Menu extends \Piwik\Plugin\Menu { - public function configureReporingMenu(MenuReporting $menu) + public function configureReportingMenu(MenuReporting $menu) { $menu->add('General_Actions', 'Events_Events', array('module' => 'Events', 'action' => 'index'), true, 30); } diff --git a/plugins/ExamplePlugin/Menu.php b/plugins/ExamplePlugin/Menu.php new file mode 100644 index 0000000000..de2b1ea9fb --- /dev/null +++ b/plugins/ExamplePlugin/Menu.php @@ -0,0 +1,43 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\ExamplePlugin; + +use Piwik\Menu\MenuAdmin; +use Piwik\Menu\MenuReporting; +use Piwik\Menu\MenuTop; +use Piwik\Menu\MenuUser; + +/** + * This class allows you to add, remove or rename menu items. + * To configure a menu (such as Admin Menu, Reporting Menu, User Menu...) simply call the corresponding methods as + * described in the API-Reference http://developer.piwik.org/api-reference/Piwik/Menu/MenuAbstract + */ +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + // $menu->add('UI Framework', '', array('module' => 'ExamplePlugin', 'action' => ''), true, $orderId = 30); + // $menu->add('UI Framework', 'Report 1', array('module' => 'ExamplePlugin', 'action' => 'report1'), true, $orderId = 30); + } + + public function configureAdminMenu(MenuAdmin $menu) + { + // $menu->add('General_Settings', 'My Admin Item', array('module' => 'ExamplePlugin', 'action' => ''), true, $orderId = 30); + } + + public function configureTopMenu(MenuTop $menu) + { + // $menu->add('My Top Item', null, array('module' => 'ExamplePlugin', 'action' => ''), true, $orderId = 30); + } + + public function configureUserMenu(MenuUser $menu) + { + // $menu->add('CoreAdminHome_MenuManage', 'My User Item', array('module' => 'ExamplePlugin', 'action' => ''), true, $orderId = 30); + } +} diff --git a/plugins/ExampleUI/ExampleUI.php b/plugins/ExampleUI/Menu.php index d9204abca8..c2b61f6e2d 100644 --- a/plugins/ExampleUI/ExampleUI.php +++ b/plugins/ExampleUI/Menu.php @@ -6,28 +6,17 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * */ - namespace Piwik\Plugins\ExampleUI; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; + +use Piwik\Menu\MenuReporting; use Piwik\Menu\MenuTop; +use Piwik\Plugin\Manager as PluginManager; /** */ -class ExampleUI extends \Piwik\Plugin +class Menu extends \Piwik\Plugin\Menu { - /** - * @see Piwik\Plugin::getListHooksRegistered - */ - public function getListHooksRegistered() - { - return array( - 'Menu.Reporting.addItems' => 'addReportingMenuItems', - 'Menu.Top.addItems' => 'addTopMenuItems', - ); - } - - function addReportingMenuItems(MenuAbstract $menu) + public function configureReportingMenu(MenuReporting $menu) { $menu->add('UI Framework', '', array('module' => 'ExampleUI', 'action' => 'dataTables'), true, 30); @@ -38,18 +27,18 @@ class ExampleUI extends \Piwik\Plugin $this->addSubMenu($menu, 'Sparklines', 'sparklines', 5); $this->addSubMenu($menu, 'Evolution Graph', 'evolutionGraph', 6); - if (\Piwik\Plugin\Manager::getInstance()->isPluginActivated('TreemapVisualization')) { + if (PluginManager::getInstance()->isPluginActivated('TreemapVisualization')) { $this->addSubMenu($menu, 'Treemap', 'treemap', 7); } } - function addTopMenuItems(MenuTop $menu) + public function configureTopMenu(MenuTop $menu) { $urlParams = array('module' => 'ExampleUI', 'action' => 'notifications'); - $menu->addEntry('UI Notifications', null, $urlParams, $displayedForCurrentUser = true, $order = 3); + $menu->add('UI Notifications', null, $urlParams, $displayedForCurrentUser = true, $order = 3); } - private function addSubMenu(MenuAbstract $menu, $subMenu, $action, $order) + private function addSubMenu(MenuReporting $menu, $subMenu, $action, $order) { $menu->add('UI Framework', $subMenu, array('module' => 'ExampleUI', 'action' => $action), true, $order); } diff --git a/plugins/Feedback/Menu.php b/plugins/Feedback/Menu.php index c41e9d783e..1b352a4b2a 100644 --- a/plugins/Feedback/Menu.php +++ b/plugins/Feedback/Menu.php @@ -11,8 +11,6 @@ namespace Piwik\Plugins\Feedback; use Piwik\Menu\MenuUser; use Piwik\Piwik; -/** - */ class Menu extends \Piwik\Plugin\Menu { public function configureUserMenu(MenuUser $menu) diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php index eb037238f5..4631010d3e 100644 --- a/plugins/Goals/Goals.php +++ b/plugins/Goals/Goals.php @@ -11,8 +11,6 @@ namespace Piwik\Plugins\Goals; use Piwik\ArchiveProcessor; use Piwik\Common; use Piwik\Db; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Site; @@ -106,7 +104,6 @@ class Goals extends \Piwik\Plugin 'API.getReportMetadata.end' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenus', 'SitesManager.deleteSite.end' => 'deleteSiteGoals', 'Goals.getReportsWithGoalMetrics' => 'getActualReportsWithGoalMetrics', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -495,45 +492,6 @@ class Goals extends \Piwik\Plugin } } - function addMenus(MenuAbstract $menu) - { - $idSite = Common::getRequestVar('idSite', null, 'int'); - $goals = API::getInstance()->getGoals($idSite); - $mainGoalMenu = $this->getGoalCategoryName($idSite); - $site = new Site($idSite); - if (count($goals) == 0) { - $menu->add($mainGoalMenu, '', array('module' => 'Goals', - 'action' => ($site->isEcommerceEnabled() ? 'ecommerceReport' : 'addNewGoal'), - 'idGoal' => ($site->isEcommerceEnabled() ? Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER : null)), - true, - 25); - if ($site->isEcommerceEnabled()) { - $menu->add($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1); - } - $menu->add($mainGoalMenu, 'Goals_AddNewGoal', array('module' => 'Goals', 'action' => 'addNewGoal')); - } else { - $menu->add($mainGoalMenu, '', array('module' => 'Goals', - 'action' => ($site->isEcommerceEnabled() ? 'ecommerceReport' : 'index'), - 'idGoal' => ($site->isEcommerceEnabled() ? Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER : null)), - true, - 25); - - if ($site->isEcommerceEnabled()) { - $menu->add($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1); - } - $menu->add($mainGoalMenu, 'Goals_GoalsOverview', array('module' => 'Goals', 'action' => 'index'), true, 2); - foreach ($goals as $goal) { - $menu->add($mainGoalMenu, str_replace('%', '%%', Translate::clean($goal['name'])), array('module' => 'Goals', 'action' => 'goalReport', 'idGoal' => $goal['idgoal'])); - } - } - } - - protected function getGoalCategoryName($idSite) - { - $site = new Site($idSite); - return $site->isEcommerceEnabled() ? 'Goals_EcommerceAndGoalsMenu' : 'Goals_Goals'; - } - public function configureViewDataTable(ViewDataTable $view) { switch ($view->requestConfig->apiMethodToRequestDataTable) { diff --git a/plugins/Goals/Menu.php b/plugins/Goals/Menu.php new file mode 100644 index 0000000000..e31952c578 --- /dev/null +++ b/plugins/Goals/Menu.php @@ -0,0 +1,69 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Goals; + +use Piwik\Common; +use Piwik\Menu\MenuReporting; +use Piwik\Piwik; +use Piwik\Site; +use Piwik\Translate; + +/** + */ +class Menu extends \Piwik\Plugin\Menu +{ + + public function configureReportingMenu(MenuReporting $menu) + { + $idSite = Common::getRequestVar('idSite', null, 'int'); + $goals = API::getInstance()->getGoals($idSite); + $mainGoalMenu = $this->getGoalCategoryName($idSite); + + $site = new Site($idSite); + + if (count($goals) == 0) { + + $menu->add($mainGoalMenu, '', array('module' => 'Goals', + 'action' => ($site->isEcommerceEnabled() ? 'ecommerceReport' : 'addNewGoal'), + 'idGoal' => ($site->isEcommerceEnabled() ? Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER : null)), + true, + 25); + + if ($site->isEcommerceEnabled()) { + $menu->add($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1); + } + + $menu->add($mainGoalMenu, 'Goals_AddNewGoal', array('module' => 'Goals', 'action' => 'addNewGoal')); + + } else { + + $menu->add($mainGoalMenu, '', array('module' => 'Goals', + 'action' => ($site->isEcommerceEnabled() ? 'ecommerceReport' : 'index'), + 'idGoal' => ($site->isEcommerceEnabled() ? Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER : null)), + true, + 25); + + if ($site->isEcommerceEnabled()) { + $menu->add($mainGoalMenu, 'Goals_Ecommerce', array('module' => 'Goals', 'action' => 'ecommerceReport', 'idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER), true, 1); + } + + $menu->add($mainGoalMenu, 'Goals_GoalsOverview', array('module' => 'Goals', 'action' => 'index'), true, 2); + + foreach ($goals as $goal) { + $menu->add($mainGoalMenu, str_replace('%', '%%', Translate::clean($goal['name'])), array('module' => 'Goals', 'action' => 'goalReport', 'idGoal' => $goal['idgoal'])); + } + } + } + + private function getGoalCategoryName($idSite) + { + $site = new Site($idSite); + return $site->isEcommerceEnabled() ? 'Goals_EcommerceAndGoalsMenu' : 'Goals_Goals'; + } +} diff --git a/plugins/Installation/Installation.php b/plugins/Installation/Installation.php index 652d3b117f..8d704efc4c 100644 --- a/plugins/Installation/Installation.php +++ b/plugins/Installation/Installation.php @@ -31,7 +31,6 @@ class Installation extends \Piwik\Plugin 'Config.NoConfigurationFile' => 'dispatch', 'Config.badConfigurationFile' => 'dispatch', 'Request.dispatch' => 'dispatchIfNotInstalledYet', - 'Menu.Admin.addItems' => 'addMenu', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', ); return $hooks; @@ -93,17 +92,6 @@ class Installation extends \Piwik\Plugin } /** - * Adds the 'System Check' admin page if the user is the Super User. - */ - public function addMenu(MenuAbstract $menu) - { - $menu->add('General_Settings', 'Installation_SystemCheck', - array('module' => 'Installation', 'action' => 'systemCheckPage'), - Piwik::hasUserSuperUserAccess(), - $order = 15); - } - - /** * Adds CSS files to list of CSS files for asset manager. */ public function getStylesheetFiles(&$stylesheets) diff --git a/plugins/Installation/Menu.php b/plugins/Installation/Menu.php new file mode 100644 index 0000000000..6637a1774b --- /dev/null +++ b/plugins/Installation/Menu.php @@ -0,0 +1,23 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Installation; + +use Piwik\Menu\MenuAdmin; +use Piwik\Piwik; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureAdminMenu(MenuAdmin $menu) + { + $menu->add('General_Settings', 'Installation_SystemCheck', + array('module' => 'Installation', 'action' => 'systemCheckPage'), + Piwik::hasUserSuperUserAccess(), + $order = 15); + } +} diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php index 122a3eedcf..f914b1d1a6 100644 --- a/plugins/LanguagesManager/LanguagesManager.php +++ b/plugins/LanguagesManager/LanguagesManager.php @@ -15,9 +15,7 @@ use Piwik\Config; use Piwik\Cookie; use Piwik\Db; use Piwik\DbHelper; -use Piwik\Menu\MenuTop; use Piwik\Piwik; -use Piwik\SettingsPiwik; use Piwik\Translate; use Piwik\View; @@ -34,7 +32,6 @@ class LanguagesManager extends \Piwik\Plugin return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', - 'Menu.Top.addItems' => 'showLanguagesSelector', 'User.getLanguage' => 'getLanguageToLoad', 'UsersManager.deleteUser' => 'deleteUserLanguage', 'Template.topBar' => 'addLanguagesManagerToOtherTopBar', @@ -52,13 +49,6 @@ class LanguagesManager extends \Piwik\Plugin $jsFiles[] = "plugins/LanguagesManager/javascripts/languageSelector.js"; } - public function showLanguagesSelector(MenuTop $menu) - { - if (Piwik::isUserIsAnonymous() || !SettingsPiwik::isPiwikInstalled()) { - $menu->addHtml('LanguageSelector', $this->getLanguagesSelector(), true, $order = 30, false); - } - } - /** * Adds the languages drop-down list to topbars other than the main one rendered * in CoreHome/templates/top_bar.twig. The 'other' topbars are on the Installation @@ -88,7 +78,7 @@ class LanguagesManager extends \Piwik\Plugin * * @return string */ - private function getLanguagesSelector() + public function getLanguagesSelector() { $view = new View("@LanguagesManager/getLanguagesSelector"); $view->languages = API::getInstance()->getAvailableLanguageNames(); diff --git a/plugins/LanguagesManager/Menu.php b/plugins/LanguagesManager/Menu.php new file mode 100644 index 0000000000..06b82f1e93 --- /dev/null +++ b/plugins/LanguagesManager/Menu.php @@ -0,0 +1,24 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\LanguagesManager; + +use Piwik\Menu\MenuTop; +use Piwik\Piwik; +use Piwik\SettingsPiwik; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureTopMenu(MenuTop $menu) + { + if (Piwik::isUserIsAnonymous() || !SettingsPiwik::isPiwikInstalled()) { + $langManager = new LanguagesManager(); + $menu->addHtml('LanguageSelector', $langManager->getLanguagesSelector(), true, $order = 30, false); + } + } +} diff --git a/plugins/Live/Live.php b/plugins/Live/Live.php index e6c6b1c745..baec9fe3cc 100644 --- a/plugins/Live/Live.php +++ b/plugins/Live/Live.php @@ -30,7 +30,6 @@ class Live extends \Piwik\Plugin 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'WidgetsList.addWidgets' => 'addWidget', - 'Menu.Reporting.addItems' => 'addMenu', 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', 'ViewDataTable.getDefaultType' => 'getDefaultTypeViewDataTable' ); @@ -49,11 +48,6 @@ class Live extends \Piwik\Plugin $jsFiles[] = "plugins/Live/javascripts/visitorLog.js"; } - public function addMenu(MenuAbstract $menu) - { - $menu->add('General_Visitors', 'Live_VisitorLog', array('module' => 'Live', 'action' => 'indexVisitorLog'), true, $order = 5); - } - public function addWidget() { WidgetsList::add('Live!', 'Live_VisitorsInRealTime', 'Live', 'widget'); diff --git a/plugins/Live/Menu.php b/plugins/Live/Menu.php new file mode 100644 index 0000000000..7fbc3f4b78 --- /dev/null +++ b/plugins/Live/Menu.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Live; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('General_Visitors', 'Live_VisitorLog', array('module' => 'Live', 'action' => 'indexVisitorLog'), true, $order = 5); + } +} diff --git a/plugins/MobileMessaging/Menu.php b/plugins/MobileMessaging/Menu.php new file mode 100644 index 0000000000..fa38d0c791 --- /dev/null +++ b/plugins/MobileMessaging/Menu.php @@ -0,0 +1,25 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\MobileMessaging; + +use Piwik\Menu\MenuAdmin; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureAdminMenu(MenuAdmin $menu) + { + $menu->add( + 'General_Settings', + 'MobileMessaging_SettingsMenu', + array('module' => 'MobileMessaging', 'action' => 'index'), + true, + $order = 12 + ); + } +} diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php index d5a52417c7..591c19d732 100644 --- a/plugins/MobileMessaging/MobileMessaging.php +++ b/plugins/MobileMessaging/MobileMessaging.php @@ -8,7 +8,6 @@ */ namespace Piwik\Plugins\MobileMessaging; -use Piwik\Menu\MenuAbstract; use Piwik\Option; use Piwik\Piwik; use Piwik\Plugins\API\API as APIPlugins; @@ -66,7 +65,6 @@ class MobileMessaging extends \Piwik\Plugin public function getListHooksRegistered() { return array( - 'Menu.Admin.addItems' => 'addMenu', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'ScheduledReports.getReportParameters' => 'getReportParameters', @@ -82,15 +80,6 @@ class MobileMessaging extends \Piwik\Plugin ); } - function addMenu(MenuAbstract $menu) - { - $menu->add('General_Settings', 'MobileMessaging_SettingsMenu', - array('module' => 'MobileMessaging', 'action' => 'index'), - true, - $order = 12 - ); - } - /** * Get JavaScript files */ diff --git a/plugins/MultiSites/Menu.php b/plugins/MultiSites/Menu.php new file mode 100644 index 0000000000..c20fe8ded4 --- /dev/null +++ b/plugins/MultiSites/Menu.php @@ -0,0 +1,23 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\MultiSites; + +use Piwik\Menu\MenuTop; +use Piwik\Piwik; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureTopMenu(MenuTop $menu) + { + $urlParams = array('module' => 'MultiSites', 'action' => 'index', 'segment' => false); + $tooltip = Piwik::translate('MultiSites_TopLinkTooltip'); + + $menu->add('General_MultiSitesSummary', null, $urlParams, true, 3, $tooltip); + } +} diff --git a/plugins/MultiSites/MultiSites.php b/plugins/MultiSites/MultiSites.php index 6b4dc9d082..f735e1d432 100644 --- a/plugins/MultiSites/MultiSites.php +++ b/plugins/MultiSites/MultiSites.php @@ -7,7 +7,7 @@ * */ namespace Piwik\Plugins\MultiSites; -use Piwik\Menu\MenuTop; + use Piwik\Piwik; @@ -31,7 +31,6 @@ class MultiSites extends \Piwik\Plugin return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', - 'Menu.Top.addItems' => 'addTopMenu', 'API.getReportMetadata' => 'getReportMetadata', 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', ); @@ -93,13 +92,6 @@ class MultiSites extends \Piwik\Plugin ); } - public function addTopMenu(MenuTop $menu) - { - $urlParams = array('module' => 'MultiSites', 'action' => 'index', 'segment' => false); - $tooltip = Piwik::translate('MultiSites_TopLinkTooltip'); - $menu->add('General_MultiSitesSummary', null, $urlParams, true, 3, $tooltip); - } - public function getJsFiles(&$jsFiles) { $jsFiles[] = "plugins/MultiSites/angularjs/dashboard/dashboard-model.js"; diff --git a/plugins/PrivacyManager/Menu.php b/plugins/PrivacyManager/Menu.php new file mode 100644 index 0000000000..c8c38aec0a --- /dev/null +++ b/plugins/PrivacyManager/Menu.php @@ -0,0 +1,23 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\PrivacyManager; + +use Piwik\Menu\MenuAdmin; +use Piwik\Piwik; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureAdminMenu(MenuAdmin $menu) + { + $menu->add('General_Settings', 'PrivacyManager_MenuPrivacySettings', + array('module' => 'PrivacyManager', 'action' => 'privacySettings'), + Piwik::isUserHasSomeAdminAccess(), + $order = 7); + } +} diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php index a0cb2017b6..8f0995fb50 100644 --- a/plugins/PrivacyManager/PrivacyManager.php +++ b/plugins/PrivacyManager/PrivacyManager.php @@ -13,12 +13,10 @@ use Piwik\Config as PiwikConfig; use Piwik\DataTable\DataTableInterface; use Piwik\Date; use Piwik\Db; -use Piwik\Menu\MenuAbstract; use Piwik\Metrics; use Piwik\Option; use Piwik\Period; use Piwik\Period\Range; -use Piwik\Piwik; use Piwik\Plugins\Goals\Archiver; use Piwik\ScheduledTask; use Piwik\ScheduledTime; @@ -139,7 +137,6 @@ class PrivacyManager extends \Piwik\Plugin { return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', - 'Menu.Admin.addItems' => 'addMenu', 'TaskScheduler.getScheduledTasks' => 'getScheduledTasks', 'Tracker.setTrackerCacheGeneral' => 'setTrackerCacheGeneral', 'Tracker.isExcludedVisit' => array($this->dntChecker, 'checkHeaderInTracker'), @@ -174,14 +171,6 @@ class PrivacyManager extends \Piwik\Plugin $jsFiles[] = "plugins/PrivacyManager/javascripts/privacySettings.js"; } - function addMenu(MenuAbstract $menu) - { - $menu->add('General_Settings', 'PrivacyManager_MenuPrivacySettings', - array('module' => 'PrivacyManager', 'action' => 'privacySettings'), - Piwik::isUserHasSomeAdminAccess(), - $order = 7); - } - /** * Returns the settings for the data purging feature. * diff --git a/plugins/Provider/Menu.php b/plugins/Provider/Menu.php new file mode 100644 index 0000000000..77cbe89194 --- /dev/null +++ b/plugins/Provider/Menu.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Provider; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->rename('General_Visitors', 'UserCountry_SubmenuLocations', + 'General_Visitors', 'Provider_SubmenuLocationsProvider'); + } +} diff --git a/plugins/Provider/Provider.php b/plugins/Provider/Provider.php index 10c2fe5bde..9cac22e303 100644 --- a/plugins/Provider/Provider.php +++ b/plugins/Provider/Provider.php @@ -14,8 +14,6 @@ use Piwik\Common; use Piwik\Db; use Piwik\FrontController; use Piwik\IP; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\PrivacyManager\Config as PrivacyManagerConfig; @@ -34,7 +32,6 @@ class Provider extends \Piwik\Plugin $hooks = array( 'Tracker.newVisitorInformation' => 'enrichVisitWithProviderInfo', 'WidgetsList.addWidgets' => 'addWidget', - 'Menu.Reporting.addItems' => 'addMenu', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -94,12 +91,6 @@ class Provider extends \Piwik\Plugin WidgetsList::add('General_Visitors', 'Provider_WidgetProviders', 'Provider', 'getProvider'); } - public function addMenu(MenuAbstract $menu) - { - $menu->rename('General_Visitors', 'UserCountry_SubmenuLocations', - 'General_Visitors', 'Provider_SubmenuLocationsProvider'); - } - public function postLoad() { Piwik::addAction('Template.footerUserCountry', array('Piwik\Plugins\Provider\Provider', 'footerUserCountry')); diff --git a/plugins/Referrers/Menu.php b/plugins/Referrers/Menu.php new file mode 100644 index 0000000000..97efa7b44a --- /dev/null +++ b/plugins/Referrers/Menu.php @@ -0,0 +1,23 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('Referrers_Referrers', '', array('module' => 'Referrers', 'action' => 'index'), true, 20); + $menu->add('Referrers_Referrers', 'General_Overview', array('module' => 'Referrers', 'action' => 'index'), true, 1); + $menu->add('Referrers_Referrers', 'Referrers_SubmenuSearchEngines', array('module' => 'Referrers', 'action' => 'getSearchEnginesAndKeywords'), true, 2); + $menu->add('Referrers_Referrers', 'Referrers_SubmenuWebsites', array('module' => 'Referrers', 'action' => 'indexWebsites'), true, 3); + $menu->add('Referrers_Referrers', 'Referrers_Campaigns', array('module' => 'Referrers', 'action' => 'indexCampaigns'), true, 4); + } +} diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php index c24946e029..30b01bb21d 100644 --- a/plugins/Referrers/Referrers.php +++ b/plugins/Referrers/Referrers.php @@ -10,8 +10,6 @@ namespace Piwik\Plugins\Referrers; use Piwik\ArchiveProcessor; use Piwik\Common; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; @@ -36,7 +34,6 @@ class Referrers extends \Piwik\Plugin { $hooks = array( 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenus', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', @@ -247,18 +244,6 @@ class Referrers extends \Piwik\Plugin } /** - * Adds Web Analytics menus - */ - function addMenus(MenuAbstract $menu) - { - $menu->add('Referrers_Referrers', '', array('module' => 'Referrers', 'action' => 'index'), true, 20); - $menu->add('Referrers_Referrers', 'General_Overview', array('module' => 'Referrers', 'action' => 'index'), true, 1); - $menu->add('Referrers_Referrers', 'Referrers_SubmenuSearchEngines', array('module' => 'Referrers', 'action' => 'getSearchEnginesAndKeywords'), true, 2); - $menu->add('Referrers_Referrers', 'Referrers_SubmenuWebsites', array('module' => 'Referrers', 'action' => 'indexWebsites'), true, 3); - $menu->add('Referrers_Referrers', 'Referrers_Campaigns', array('module' => 'Referrers', 'action' => 'indexCampaigns'), true, 4); - } - - /** * Adds Goal dimensions, so that the dimensions are displayed in the UI Goal Overview page */ public function getReportsWithGoalMetrics(&$dimensions) diff --git a/plugins/ScheduledReports/Menu.php b/plugins/ScheduledReports/Menu.php index 7d9f180062..b70782ac63 100644 --- a/plugins/ScheduledReports/Menu.php +++ b/plugins/ScheduledReports/Menu.php @@ -15,6 +15,9 @@ use Piwik\Plugins\MobileMessaging\API as APIMobileMessaging; class Menu extends \Piwik\Plugin\Menu { + const MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY = 'MobileMessaging_TopMenu'; + const PDF_REPORTS_TOP_MENU_TRANSLATION_KEY = 'ScheduledReports_EmailReports'; + public function configureUserMenu(MenuUser $menu) { $tooltip = Piwik::translate( @@ -35,10 +38,10 @@ class Menu extends \Piwik\Plugin\Menu { // if MobileMessaging is not activated, display 'Email reports' if (!\Piwik\Plugin\Manager::getInstance()->isPluginActivated('MobileMessaging')) - return ScheduledReports::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; + return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; if (Piwik::isUserIsAnonymous()) { - return ScheduledReports::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; + return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; } try { @@ -50,13 +53,12 @@ class Menu extends \Piwik\Plugin\Menu // - configured: display 'Email & SMS reports' if ($reportCount == 0) { return APIMobileMessaging::getInstance()->areSMSAPICredentialProvided() ? - ScheduledReports::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY : ScheduledReports::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; + self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY : self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; } } catch(\Exception $e) { - return ScheduledReports::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; + return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; } - $anyMobileReport = false; foreach ($reports as $report) { if ($report['type'] == MobileMessaging::MOBILE_TYPE) { @@ -67,10 +69,10 @@ class Menu extends \Piwik\Plugin\Menu // if there is at least one sms report, display 'Email & SMS reports' if ($anyMobileReport) { - return ScheduledReports::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; + return self::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY; } - return ScheduledReports::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; + return self::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY; } } diff --git a/plugins/ScheduledReports/ScheduledReports.php b/plugins/ScheduledReports/ScheduledReports.php index afb0e7a22c..14f662724d 100644 --- a/plugins/ScheduledReports/ScheduledReports.php +++ b/plugins/ScheduledReports/ScheduledReports.php @@ -29,8 +29,6 @@ use Zend_Mime; */ class ScheduledReports extends \Piwik\Plugin { - const MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY = 'MobileMessaging_TopMenu'; - const PDF_REPORTS_TOP_MENU_TRANSLATION_KEY = 'ScheduledReports_EmailReports'; const DISPLAY_FORMAT_GRAPHS_ONLY_FOR_KEY_METRICS = 1; // Display Tables Only (Graphs only for key metrics) const DISPLAY_FORMAT_GRAPHS_ONLY = 2; // Display Graphs Only for all reports diff --git a/plugins/SitesManager/Menu.php b/plugins/SitesManager/Menu.php new file mode 100644 index 0000000000..0a991559f4 --- /dev/null +++ b/plugins/SitesManager/Menu.php @@ -0,0 +1,23 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\SitesManager; + +use Piwik\Menu\MenuAdmin; +use Piwik\Piwik; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureAdminMenu(MenuAdmin $menu) + { + $menu->add('CoreAdminHome_MenuManage', 'SitesManager_Sites', + array('module' => 'SitesManager', 'action' => 'index'), + Piwik::isUserHasSomeAdminAccess(), + $order = 1); + } +} diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php index 5417246b97..ac0d14a58e 100644 --- a/plugins/SitesManager/SitesManager.php +++ b/plugins/SitesManager/SitesManager.php @@ -8,9 +8,6 @@ */ namespace Piwik\Plugins\SitesManager; -use Piwik\Menu\MenuAbstract; -use Piwik\Piwik; - /** * */ @@ -28,20 +25,11 @@ class SitesManager extends \Piwik\Plugin return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', - 'Menu.Admin.addItems' => 'addMenu', 'Tracker.Cache.getSiteAttributes' => 'recordWebsiteDataInCache', 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', ); } - function addMenu(MenuAbstract $menu) - { - $menu->add('CoreAdminHome_MenuManage', 'SitesManager_Sites', - array('module' => 'SitesManager', 'action' => 'index'), - Piwik::isUserHasSomeAdminAccess(), - $order = 1); - } - /** * Get CSS files */ diff --git a/plugins/UserCountry/Menu.php b/plugins/UserCountry/Menu.php new file mode 100644 index 0000000000..ee0bf08e61 --- /dev/null +++ b/plugins/UserCountry/Menu.php @@ -0,0 +1,31 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\UserCountry; + +use Piwik\Menu\MenuAdmin; +use Piwik\Menu\MenuReporting; +use Piwik\Piwik; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureAdminMenu(MenuAdmin $menu) + { + if (UserCountry::isGeoLocationAdminEnabled()) { + $menu->add('General_Settings', 'UserCountry_Geolocation', + array('module' => 'UserCountry', 'action' => 'adminIndex'), + Piwik::hasUserSuperUserAccess(), + $order = 8); + } + } + + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('General_Visitors', 'UserCountry_SubmenuLocations', array('module' => 'UserCountry', 'action' => 'index')); + } +} diff --git a/plugins/UserCountry/UserCountry.php b/plugins/UserCountry/UserCountry.php index 0464cbfaf2..fae65284ac 100644 --- a/plugins/UserCountry/UserCountry.php +++ b/plugins/UserCountry/UserCountry.php @@ -12,7 +12,6 @@ use Piwik\ArchiveProcessor; use Piwik\Common; use Piwik\Config; use Piwik\IP; -use Piwik\Menu\MenuAbstract; use Piwik\Piwik; use Piwik\Plugin\Manager; use Piwik\Plugin\ViewDataTable; @@ -40,8 +39,6 @@ class UserCountry extends \Piwik\Plugin { $hooks = array( 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenu', - 'Menu.Admin.addItems' => 'addAdminMenu', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', @@ -193,24 +190,6 @@ class UserCountry extends \Piwik\Plugin WidgetsList::add('General_Visitors', $widgetCityLabel, 'UserCountry', 'getCity'); } - public function addMenu(MenuAbstract $menu) - { - $menu->add('General_Visitors', 'UserCountry_SubmenuLocations', array('module' => 'UserCountry', 'action' => 'index')); - } - - /** - * Event handler. Adds menu items to the MenuAdmin menu. - */ - public function addAdminMenu(MenuAbstract $menu) - { - if($this->isGeoLocationAdminEnabled()) { - $menu->add('General_Settings', 'UserCountry_Geolocation', - array('module' => 'UserCountry', 'action' => 'adminIndex'), - Piwik::hasUserSuperUserAccess(), - $order = 8); - } - } - public function getSegmentsMetadata(&$segments) { $segments[] = array( diff --git a/plugins/UserCountryMap/Menu.php b/plugins/UserCountryMap/Menu.php new file mode 100644 index 0000000000..63dd1801c3 --- /dev/null +++ b/plugins/UserCountryMap/Menu.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\UserCountryMap; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('General_Visitors', 'UserCountryMap_RealTimeMap', + array('module' => 'UserCountryMap', 'action' => 'realtimeWorldMap'), true, $order = 70); + } +} diff --git a/plugins/UserCountryMap/UserCountryMap.php b/plugins/UserCountryMap/UserCountryMap.php index eef7af7e84..dd1360de7f 100644 --- a/plugins/UserCountryMap/UserCountryMap.php +++ b/plugins/UserCountryMap/UserCountryMap.php @@ -9,8 +9,6 @@ namespace Piwik\Plugins\UserCountryMap; use Piwik\FrontController; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\Version; use Piwik\WidgetsList; @@ -52,18 +50,11 @@ class UserCountryMap extends \Piwik\Plugin { $hooks = array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', - 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', - 'Menu.Reporting.addItems' => 'addMenu' + 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles' ); return $hooks; } - public function addMenu(MenuAbstract $menu) - { - $menu->add('General_Visitors', 'UserCountryMap_RealTimeMap', - array('module' => 'UserCountryMap', 'action' => 'realtimeWorldMap'), true, $order = 70); - } - public function getJsFiles(&$jsFiles) { $jsFiles[] = "plugins/UserCountryMap/javascripts/vendor/raphael.min.js"; diff --git a/plugins/UserSettings/Menu.php b/plugins/UserSettings/Menu.php new file mode 100644 index 0000000000..e4b9309927 --- /dev/null +++ b/plugins/UserSettings/Menu.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\UserSettings; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('General_Visitors', 'General_Settings', array('module' => 'UserSettings', 'action' => 'index')); + } +} diff --git a/plugins/UserSettings/UserSettings.php b/plugins/UserSettings/UserSettings.php index 75da403f6e..13b3c4f66a 100644 --- a/plugins/UserSettings/UserSettings.php +++ b/plugins/UserSettings/UserSettings.php @@ -8,8 +8,6 @@ */ namespace Piwik\Plugins\UserSettings; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\Graph; @@ -167,7 +165,6 @@ class UserSettings extends \Piwik\Plugin { $hooks = array( 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenu', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -459,12 +456,4 @@ class UserSettings extends \Piwik\Plugin } } - /** - * Adds the User Settings menu - */ - function addMenu(MenuAbstract $menu) - { - $menu->add('General_Visitors', 'General_Settings', array('module' => 'UserSettings', 'action' => 'index')); - } - } diff --git a/plugins/UsersManager/Menu.php b/plugins/UsersManager/Menu.php new file mode 100644 index 0000000000..d663093852 --- /dev/null +++ b/plugins/UsersManager/Menu.php @@ -0,0 +1,27 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\UsersManager; + +use Piwik\Menu\MenuAdmin; +use Piwik\Piwik; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureAdminMenu(MenuAdmin $menu) + { + $menu->add('CoreAdminHome_MenuManage', 'UsersManager_MenuUsers', + array('module' => 'UsersManager', 'action' => 'index'), + Piwik::isUserHasSomeAdminAccess(), + $order = 2); + $menu->add('CoreAdminHome_MenuManage', 'UsersManager_MenuUserSettings', + array('module' => 'UsersManager', 'action' => 'userSettings'), + Piwik::isUserHasSomeViewAccess(), + $order = 3); + } +} diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php index 66e0765cd9..b860aeb186 100644 --- a/plugins/UsersManager/UsersManager.php +++ b/plugins/UsersManager/UsersManager.php @@ -10,7 +10,6 @@ namespace Piwik\Plugins\UsersManager; use Exception; use Piwik\Db; -use Piwik\Menu\MenuAbstract; use Piwik\Option; use Piwik\Piwik; use Piwik\SettingsPiwik; @@ -30,7 +29,6 @@ class UsersManager extends \Piwik\Plugin public function getListHooksRegistered() { return array( - 'Menu.Admin.addItems' => 'addMenu', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'SitesManager.deleteSite.end' => 'deleteSite', @@ -95,21 +93,6 @@ class UsersManager extends \Piwik\Plugin } /** - * Add admin menu items - */ - public function addMenu(MenuAbstract $menu) - { - $menu->add('CoreAdminHome_MenuManage', 'UsersManager_MenuUsers', - array('module' => 'UsersManager', 'action' => 'index'), - Piwik::isUserHasSomeAdminAccess(), - $order = 2); - $menu->add('CoreAdminHome_MenuManage', 'UsersManager_MenuUserSettings', - array('module' => 'UsersManager', 'action' => 'userSettings'), - Piwik::isUserHasSomeViewAccess(), - $order = 3); - } - - /** * Returns true if the password is complex enough (at least 6 characters and max 26 characters) * * @param $input string diff --git a/plugins/VisitFrequency/Menu.php b/plugins/VisitFrequency/Menu.php new file mode 100644 index 0000000000..1c8682d5a9 --- /dev/null +++ b/plugins/VisitFrequency/Menu.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitFrequency; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('General_Visitors', 'VisitFrequency_SubmenuFrequency', + array('module' => 'VisitFrequency', 'action' => 'index'), true, $order = 55); + } +} diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php index 6f1b27c48c..dbc2346d1c 100644 --- a/plugins/VisitFrequency/VisitFrequency.php +++ b/plugins/VisitFrequency/VisitFrequency.php @@ -8,8 +8,6 @@ */ namespace Piwik\Plugins\VisitFrequency; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\WidgetsList; @@ -25,7 +23,6 @@ class VisitFrequency extends \Piwik\Plugin { $hooks = array( 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenu', 'API.getReportMetadata' => 'getReportMetadata', ); return $hooks; @@ -62,10 +59,4 @@ class VisitFrequency extends \Piwik\Plugin WidgetsList::add('General_Visitors', 'VisitFrequency_WidgetGraphReturning', 'VisitFrequency', 'getEvolutionGraph', array('columns' => array('nb_visits_returning'))); } - - function addMenu(MenuAbstract $menu) - { - $menu->add('General_Visitors', 'VisitFrequency_SubmenuFrequency', - array('module' => 'VisitFrequency', 'action' => 'index'), true, $order = 55); - } } diff --git a/plugins/VisitTime/Menu.php b/plugins/VisitTime/Menu.php new file mode 100644 index 0000000000..b0cd93248c --- /dev/null +++ b/plugins/VisitTime/Menu.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitTime; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('General_Visitors', 'VisitTime_SubmenuTimes', + array('module' => 'VisitTime', 'action' => 'index'), true, $order = 65); + } +} diff --git a/plugins/VisitTime/VisitTime.php b/plugins/VisitTime/VisitTime.php index bb93f0903f..f675a2599f 100644 --- a/plugins/VisitTime/VisitTime.php +++ b/plugins/VisitTime/VisitTime.php @@ -11,8 +11,6 @@ namespace Piwik\Plugins\VisitTime; use Exception; use Piwik\ArchiveProcessor; use Piwik\Common; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Period; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; @@ -33,7 +31,6 @@ class VisitTime extends \Piwik\Plugin { $hooks = array( 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenu', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', @@ -86,12 +83,6 @@ class VisitTime extends \Piwik\Plugin WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitTime_VisitsByDayOfWeek', 'VisitTime', 'getByDayOfWeek'); } - function addMenu(MenuAbstract $menu) - { - $menu->add('General_Visitors', 'VisitTime_SubmenuTimes', - array('module' => 'VisitTime', 'action' => 'index'), true, $order = 65); - } - public function getReportsWithGoalMetrics(&$dimensions) { $dimensions[] = array('category' => Piwik::translate('VisitTime_ColumnServerTime'), diff --git a/plugins/VisitorInterest/Menu.php b/plugins/VisitorInterest/Menu.php new file mode 100644 index 0000000000..13b9c66111 --- /dev/null +++ b/plugins/VisitorInterest/Menu.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitorInterest; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->rename('General_Visitors', 'VisitFrequency_SubmenuFrequency', + 'General_Visitors', 'VisitorInterest_Engagement'); + } +} diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php index 4661b34437..67fea477e4 100644 --- a/plugins/VisitorInterest/VisitorInterest.php +++ b/plugins/VisitorInterest/VisitorInterest.php @@ -10,8 +10,6 @@ namespace Piwik\Plugins\VisitorInterest; use Piwik\ArchiveProcessor; use Piwik\FrontController; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Metrics; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; @@ -30,11 +28,10 @@ class VisitorInterest extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenu', - 'API.getReportMetadata' => 'getReportMetadata', - 'ViewDataTable.configure' => 'configureViewDataTable', - 'ViewDataTable.getDefaultType' => 'getDefaultTypeViewDataTable' + 'WidgetsList.addWidgets' => 'addWidgets', + 'API.getReportMetadata' => 'getReportMetadata', + 'ViewDataTable.configure' => 'configureViewDataTable', + 'ViewDataTable.getDefaultType' => 'getDefaultTypeViewDataTable' ); return $hooks; } @@ -108,12 +105,6 @@ class VisitorInterest extends \Piwik\Plugin WidgetsList::add('General_Visitors', 'VisitorInterest_WidgetVisitsByDaysSinceLast', 'VisitorInterest', 'getNumberOfVisitsByDaysSinceLast'); } - public function addMenu(MenuAbstract $menu) - { - $menu->rename('General_Visitors', 'VisitFrequency_SubmenuFrequency', - 'General_Visitors', 'VisitorInterest_Engagement'); - } - function postLoad() { Piwik::addAction('Template.headerVisitsFrequency', array('Piwik\Plugins\VisitorInterest\VisitorInterest', 'headerVisitsFrequency')); diff --git a/plugins/VisitsSummary/Menu.php b/plugins/VisitsSummary/Menu.php new file mode 100644 index 0000000000..3a9d26029b --- /dev/null +++ b/plugins/VisitsSummary/Menu.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitsSummary; + +use Piwik\Menu\MenuReporting; + +class Menu extends \Piwik\Plugin\Menu +{ + public function configureReportingMenu(MenuReporting $menu) + { + $menu->add('General_Visitors', '', array('module' => 'VisitsSummary', 'action' => 'index'), true, 10); + $menu->add('General_Visitors', 'General_Overview', array('module' => 'VisitsSummary', 'action' => 'index'), true, 1); + } +} diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php index dfa923e39d..11f8a3827c 100644 --- a/plugins/VisitsSummary/VisitsSummary.php +++ b/plugins/VisitsSummary/VisitsSummary.php @@ -8,8 +8,6 @@ */ namespace Piwik\Plugins\VisitsSummary; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\WidgetsList; @@ -30,7 +28,6 @@ class VisitsSummary extends \Piwik\Plugin return array( 'API.getReportMetadata' => 'getReportMetadata', 'WidgetsList.addWidgets' => 'addWidgets', - 'Menu.Reporting.addItems' => 'addMenu', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', ); } @@ -71,11 +68,6 @@ class VisitsSummary extends \Piwik\Plugin WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetOverviewGraph', 'VisitsSummary', 'index'); } - function addMenu(MenuAbstract $menu) - { - $menu->add('General_Visitors', '', array('module' => 'VisitsSummary', 'action' => 'index'), true, 10); - $menu->add('General_Visitors', 'General_Overview', array('module' => 'VisitsSummary', 'action' => 'index'), true, 1); - } } diff --git a/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php b/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php index 225a2ae4c4..d5fdeca1f5 100644 --- a/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php +++ b/tests/PHPUnit/Integration/Plugins/ScheduledReportsTest.php @@ -9,6 +9,7 @@ use Piwik\Access; use Piwik\Plugins\MobileMessaging\API as APIMobileMessaging; use Piwik\Plugins\MobileMessaging\MobileMessaging; use Piwik\Plugins\ScheduledReports\API as APIScheduledReports; +use Piwik\Plugins\ScheduledReports\Menu; use Piwik\Plugins\ScheduledReports\ScheduledReports; use Piwik\Plugins\SitesManager\API as APISitesManager; use Piwik\ScheduledTask; @@ -201,9 +202,9 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase // unload MobileMessaging plugin \Piwik\Plugin\Manager::getInstance()->loadPlugins(array('ScheduledReports')); - $pdfReportPlugin = new ScheduledReports(); + $pdfReportPlugin = new Menu(); $this->assertEquals( - ScheduledReports::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY, + Menu::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY, $pdfReportPlugin->getTopMenuTranslationKey() ); } @@ -217,9 +218,9 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase FakeAccess::$identity = 'anonymous'; Access::setSingletonInstance($anonymousAccess); - $pdfReportPlugin = new ScheduledReports(); + $pdfReportPlugin = new Menu(); $this->assertEquals( - ScheduledReports::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY, + Menu::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY, $pdfReportPlugin->getTopMenuTranslationKey() ); } @@ -236,9 +237,9 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase self::setSuperUser(); APIMobileMessaging::getInstance()->setSMSAPICredential('StubbedProvider', ''); - $pdfReportPlugin = new ScheduledReports(); + $pdfReportPlugin = new Menu(); $this->assertEquals( - ScheduledReports::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY, + Menu::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY, $pdfReportPlugin->getTopMenuTranslationKey() ); } @@ -251,9 +252,9 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase */ public function testGetTopMenuTranslationKeyNoReportMobileAccountKO() { - $pdfReportPlugin = new ScheduledReports(); + $pdfReportPlugin = new Menu(); $this->assertEquals( - ScheduledReports::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY, + Menu::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY, $pdfReportPlugin->getTopMenuTranslationKey() ); } @@ -279,9 +280,9 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase ) ); - $pdfReportPlugin = new ScheduledReports(); + $pdfReportPlugin = new Menu(); $this->assertEquals( - ScheduledReports::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY, + Menu::MOBILE_MESSAGING_TOP_MENU_TRANSLATION_KEY, $pdfReportPlugin->getTopMenuTranslationKey() ); } @@ -300,9 +301,9 @@ class Plugins_ScheduledReportsTest extends DatabaseTestCase self::addReport(self::getMonthlyEmailReportData($this->idSite)); - $pdfReportPlugin = new ScheduledReports(); + $pdfReportPlugin = new Menu(); $this->assertEquals( - ScheduledReports::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY, + Menu::PDF_REPORTS_TOP_MENU_TRANSLATION_KEY, $pdfReportPlugin->getTopMenuTranslationKey() ); } |