From f6d87baf3833a00c3747cd590d83d0e499d7c94e Mon Sep 17 00:00:00 2001
From: Thomas Steur <thomas.steur@googlemail.com>
Date: Tue, 22 Jul 2014 08:49:54 +0200
Subject: [PATCH] refs #5192 simplified admin menu since it is very confusing
 for developers to find the correct translation key to use for menuName.
 Results in lots of dulicated code as well (same translation keys are
 mentioned everywhere). Also removed the $displayedForCurrentUsers in those
 methods since boolean parameters are bad practice and it did result in
 duplicated code as well as you had to call the same function or pass the same
 variable in each add() call. Moved the VisitorGenerator in a development
 section since it is not really diagnostic. There will be another development
 menu item with the next commit. Need to update ui tests

---
 core/Menu/MenuAdmin.php           | 65 +++++++++++++++++++++++++++++++
 plugins/CoreAdminHome/Menu.php    | 34 +++++++++-------
 plugins/CorePluginsAdmin/Menu.php | 32 ++++++++-------
 plugins/DBStats/Menu.php          |  9 +++--
 plugins/DevicesDetection/Menu.php | 11 +++---
 plugins/ExamplePlugin/Menu.php    |  6 +++
 plugins/Installation/Menu.php     |  9 +++--
 plugins/MobileMessaging/Menu.php  |  4 +-
 plugins/PrivacyManager/Menu.php   |  9 +++--
 plugins/SitesManager/Menu.php     |  9 +++--
 plugins/UserCountry/Menu.php      |  9 ++---
 plugins/UsersManager/Menu.php     | 16 ++++----
 12 files changed, 145 insertions(+), 68 deletions(-)

diff --git a/core/Menu/MenuAdmin.php b/core/Menu/MenuAdmin.php
index 106420b712..ad4c6c4108 100644
--- a/core/Menu/MenuAdmin.php
+++ b/core/Menu/MenuAdmin.php
@@ -48,6 +48,71 @@ class MenuAdmin extends MenuAbstract
         self::getInstance()->add('General_Settings', $adminMenuName, $url, $displayedForCurrentUser, $order);
     }
 
+    /**
+     * See {@link add()}. Adds a new menu item to the development section.
+     * @param string $menuName
+     * @param array $url
+     * @param int $order
+     * @param bool $tooltip
+     * @api
+     */
+    public function addDevelopmentItem($menuName, $url, $order = 50, $tooltip = false)
+    {
+        $this->add('CoreAdminHome_MenuDevelopment', $menuName, $url, true, $order, $tooltip);
+    }
+
+    /**
+     * See {@link add()}. Adds a new menu item to the development section.
+     * @param string $menuName
+     * @param array $url
+     * @param int $order
+     * @param bool $tooltip
+     * @api
+     */
+    public function addDiagnosticItem($menuName, $url, $order = 50, $tooltip = false)
+    {
+        $this->add('CoreAdminHome_MenuDiagnostic', $menuName, $url, true, $order, $tooltip);
+    }
+
+    /**
+     * See {@link add()}. Adds a new menu item to the development section.
+     * @param string $menuName
+     * @param array $url
+     * @param int $order
+     * @param bool $tooltip
+     * @api
+     */
+    public function addPlatformItem($menuName, $url, $order = 50, $tooltip = false)
+    {
+        $this->add('CorePluginsAdmin_MenuPlatform', $menuName, $url, true, $order, $tooltip);
+    }
+
+    /**
+     * See {@link add()}. Adds a new menu item to the development section.
+     * @param string $menuName
+     * @param array $url
+     * @param int $order
+     * @param bool $tooltip
+     * @api
+     */
+    public function addSettingsItem($menuName, $url, $order = 50, $tooltip = false)
+    {
+        $this->add('General_Settings', $menuName, $url, true, $order, $tooltip);
+    }
+
+    /**
+     * See {@link add()}. Adds a new menu item to the development section.
+     * @param string $menuName
+     * @param array $url
+     * @param int $order
+     * @param bool $tooltip
+     * @api
+     */
+    public function addManageItem($menuName, $url, $order = 50, $tooltip = false)
+    {
+        $this->add('CoreAdminHome_MenuManage', $menuName, $url, true, $order, $tooltip);
+    }
+
     /**
      * Triggers the Menu.MenuAdmin.addItems hook and returns the admin menu.
      *
diff --git a/plugins/CoreAdminHome/Menu.php b/plugins/CoreAdminHome/Menu.php
index 0d9560569d..368a470fff 100644
--- a/plugins/CoreAdminHome/Menu.php
+++ b/plugins/CoreAdminHome/Menu.php
@@ -20,21 +20,25 @@ class Menu extends \Piwik\Plugin\Menu
     {
         $hasAdminAccess = Piwik::isUserHasSomeAdminAccess();
 
-        $menu->add('CoreAdminHome_MenuManage', null, "", $hasAdminAccess, $order = 1);
-        $menu->add('CoreAdminHome_MenuDiagnostic', null, "", $hasAdminAccess, $order = 10);
-        $menu->add('General_Settings', null, "", $hasAdminAccess, $order = 5);
-        $menu->add('General_Settings', 'CoreAdminHome_MenuGeneralSettings',
-                   array('module' => 'CoreAdminHome', 'action' => 'generalSettings'),
-                   $hasAdminAccess,
-                   $order = 6);
-        $menu->add('CoreAdminHome_MenuManage', 'CoreAdminHome_TrackingCode',
-                   array('module' => 'CoreAdminHome', 'action' => 'trackingCodeGenerator'),
-                   $hasAdminAccess,
-                   $order = 4);
-        $menu->add('General_Settings', 'CoreAdminHome_PluginSettings',
-                   array('module' => 'CoreAdminHome', 'action' => 'pluginSettings'),
-                   SettingsManager::hasPluginsSettingsForCurrentUser(),
-                   $order = 7);
+        if ($hasAdminAccess) {
+            $menu->addManageItem(null, "", $order = 1);
+            $menu->addSettingsItem(null, "", $order = 5);
+            $menu->addDiagnosticItem(null, "", $order = 10);
+            $menu->addDevelopmentItem(null, "", $order = 15);
+
+            $menu->addSettingsItem('CoreAdminHome_MenuGeneralSettings',
+                                   array('module' => 'CoreAdminHome', 'action' => 'generalSettings'),
+                                   $order = 6);
+            $menu->addManageItem('CoreAdminHome_TrackingCode',
+                                 array('module' => 'CoreAdminHome', 'action' => 'trackingCodeGenerator'),
+                                 $order = 4);
+        }
+
+        if (SettingsManager::hasPluginsSettingsForCurrentUser()) {
+            $menu->addSettingsItem('CoreAdminHome_PluginSettings',
+                                   array('module' => 'CoreAdminHome', 'action' => 'pluginSettings'),
+                                   $order = 7);
+        }
     }
 
 }
diff --git a/plugins/CorePluginsAdmin/Menu.php b/plugins/CorePluginsAdmin/Menu.php
index 326596989b..3cd9dea086 100644
--- a/plugins/CorePluginsAdmin/Menu.php
+++ b/plugins/CorePluginsAdmin/Menu.php
@@ -39,21 +39,23 @@ class Menu extends \Piwik\Plugin\Menu
             }
         }
 
-        $menu->add('CorePluginsAdmin_MenuPlatform', null, "", !$isAnonymous, $order = 7);
-        $menu->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('General_Plugins') . $pluginsUpdateMessage,
-                   array('module' => 'CorePluginsAdmin', 'action' => 'plugins', 'activated' => ''),
-                   $hasSuperUserAcess,
-                   $order = 1);
-        $menu->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage,
-                   array('module' => 'CorePluginsAdmin', 'action' => 'themes', 'activated' => ''),
-                   $hasSuperUserAcess,
-                   $order = 3);
-
-        if ($isMarketplaceEnabled) {
-            $menu->add('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_Marketplace',
-                       array('module' => 'CorePluginsAdmin', 'action' => 'extend', 'activated' => ''),
-                       !$isAnonymous,
-                       $order = 5);
+        if (!$isAnonymous) {
+            $menu->addPlatformItem(null, "", $order = 7);
+        }
+
+        if ($hasSuperUserAcess) {
+            $menu->addPlatformItem(Piwik::translate('General_Plugins') . $pluginsUpdateMessage,
+                                   array('module' => 'CorePluginsAdmin', 'action' => 'plugins', 'activated' => ''),
+                                   $order = 1);
+            $menu->addPlatformItem(Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage,
+                                   array('module' => 'CorePluginsAdmin', 'action' => 'themes', 'activated' => ''),
+                                   $order = 3);
+        }
+
+        if ($isMarketplaceEnabled && !$isAnonymous) {
+            $menu->addPlatformItem('CorePluginsAdmin_Marketplace',
+                                   array('module' => 'CorePluginsAdmin', 'action' => 'extend', 'activated' => ''),
+                                   $order = 5);
 
         }
     }
diff --git a/plugins/DBStats/Menu.php b/plugins/DBStats/Menu.php
index b39ff59ae5..50f7b8a047 100644
--- a/plugins/DBStats/Menu.php
+++ b/plugins/DBStats/Menu.php
@@ -17,9 +17,10 @@ class Menu extends \Piwik\Plugin\Menu
 {
     public function configureAdminMenu(MenuAdmin $menu)
     {
-        $menu->add('CoreAdminHome_MenuDiagnostic', 'DBStats_DatabaseUsage',
-                   array('module' => 'DBStats', 'action' => 'index'),
-                   Piwik::hasUserSuperUserAccess(),
-                   $order = 6);
+        if (Piwik::hasUserSuperUserAccess()) {
+            $menu->addDiagnosticItem('DBStats_DatabaseUsage',
+                                     array('module' => 'DBStats', 'action' => 'index'),
+                                     $order = 6);
+        }
     }
 }
diff --git a/plugins/DevicesDetection/Menu.php b/plugins/DevicesDetection/Menu.php
index c7ce8434b9..b956942d52 100644
--- a/plugins/DevicesDetection/Menu.php
+++ b/plugins/DevicesDetection/Menu.php
@@ -18,12 +18,11 @@ class Menu extends \Piwik\Plugin\Menu
 {
     public function configureAdminMenu(MenuAdmin $menu)
     {
-        $menu->add(
-            'CoreAdminHome_MenuDiagnostic', 'DevicesDetection_DeviceDetection',
-            array('module' => 'DevicesDetection', 'action' => 'deviceDetection'),
-            Piwik::isUserHasSomeAdminAccess(),
-            $order = 40
-        );
+        if (Piwik::isUserHasSomeAdminAccess()) {
+            $menu->addDiagnosticItem('DevicesDetection_DeviceDetection',
+                                     array('module' => 'DevicesDetection', 'action' => 'deviceDetection'),
+                                     $order = 40);
+        }
     }
 
     public function configureReportingMenu(MenuReporting $menu)
diff --git a/plugins/ExamplePlugin/Menu.php b/plugins/ExamplePlugin/Menu.php
index ccebbdf4e3..1a4ed8300f 100644
--- a/plugins/ExamplePlugin/Menu.php
+++ b/plugins/ExamplePlugin/Menu.php
@@ -29,6 +29,12 @@ class Menu extends \Piwik\Plugin\Menu
     public function configureAdminMenu(MenuAdmin $menu)
     {
         // $menu->add('General_Settings', 'My Admin Item', array('module' => 'ExamplePlugin', 'action' => ''), true, $orderId = 30);
+        // or
+        // $menu->addSettingsItem('My Admin Item', array('module' => 'ExamplePlugin', 'action' => ''), $orderId = 30);
+        // $menu->addManageItem('My Admin Item', array('module' => 'ExamplePlugin', 'action' => ''), $orderId = 30);
+        // $menu->addPlatformItem('My Admin Item', array('module' => 'ExamplePlugin', 'action' => ''), $orderId = 30);
+        // $menu->addDiagnosticItem('My Admin Item', array('module' => 'ExamplePlugin', 'action' => ''), $orderId = 30);
+        // $menu->addDevelopmentItem('My Admin Item', array('module' => 'ExamplePlugin', 'action' => ''), $orderId = 30);
     }
 
     public function configureTopMenu(MenuTop $menu)
diff --git a/plugins/Installation/Menu.php b/plugins/Installation/Menu.php
index 606f9da50c..7ae25c8d79 100644
--- a/plugins/Installation/Menu.php
+++ b/plugins/Installation/Menu.php
@@ -15,9 +15,10 @@ 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);
+        if (Piwik::hasUserSuperUserAccess()) {
+            $menu->addSettingsItem('Installation_SystemCheck',
+                                   array('module' => 'Installation', 'action' => 'systemCheckPage'),
+                                   $order = 15);
+        }
     }
 }
diff --git a/plugins/MobileMessaging/Menu.php b/plugins/MobileMessaging/Menu.php
index 6a2ca2e1ff..4dea3c329d 100644
--- a/plugins/MobileMessaging/Menu.php
+++ b/plugins/MobileMessaging/Menu.php
@@ -14,11 +14,9 @@ class Menu extends \Piwik\Plugin\Menu
 {
     public function configureAdminMenu(MenuAdmin $menu)
     {
-        $menu->add(
-            'General_Settings',
+        $menu->addSettingsItem(
             'MobileMessaging_SettingsMenu',
             array('module' => 'MobileMessaging', 'action' => 'index'),
-            true,
             $order = 12
         );
     }
diff --git a/plugins/PrivacyManager/Menu.php b/plugins/PrivacyManager/Menu.php
index 3750dfaa61..5eee77622c 100644
--- a/plugins/PrivacyManager/Menu.php
+++ b/plugins/PrivacyManager/Menu.php
@@ -15,9 +15,10 @@ 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);
+        if (Piwik::isUserHasSomeAdminAccess()) {
+            $menu->addSettingsItem('PrivacyManager_MenuPrivacySettings',
+                                   array('module' => 'PrivacyManager', 'action' => 'privacySettings'),
+                                   $order = 7);
+        }
     }
 }
diff --git a/plugins/SitesManager/Menu.php b/plugins/SitesManager/Menu.php
index a2573d1f3e..017690f442 100644
--- a/plugins/SitesManager/Menu.php
+++ b/plugins/SitesManager/Menu.php
@@ -15,9 +15,10 @@ 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);
+        if (Piwik::isUserHasSomeAdminAccess()) {
+            $menu->addManageItem('SitesManager_Sites',
+                                 array('module' => 'SitesManager', 'action' => 'index'),
+                                 $order = 1);
+        }
     }
 }
diff --git a/plugins/UserCountry/Menu.php b/plugins/UserCountry/Menu.php
index dca2245723..505ae68c97 100644
--- a/plugins/UserCountry/Menu.php
+++ b/plugins/UserCountry/Menu.php
@@ -16,11 +16,10 @@ 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);
+        if (UserCountry::isGeoLocationAdminEnabled() && Piwik::hasUserSuperUserAccess()) {
+            $menu->addSettingsItem('UserCountry_Geolocation',
+                                   array('module' => 'UserCountry', 'action' => 'adminIndex'),
+                                   $order = 8);
         }
     }
 
diff --git a/plugins/UsersManager/Menu.php b/plugins/UsersManager/Menu.php
index 32ad96f4fb..494d09542c 100644
--- a/plugins/UsersManager/Menu.php
+++ b/plugins/UsersManager/Menu.php
@@ -15,13 +15,13 @@ 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);
+        if (Piwik::isUserHasSomeAdminAccess()) {
+            $menu->addManageItem('UsersManager_MenuUsers',
+                                 array('module' => 'UsersManager', 'action' => 'index'),
+                                 $order = 2);
+            $menu->addManageItem('UsersManager_MenuUserSettings',
+                                 array('module' => 'UsersManager', 'action' => 'userSettings'),
+                                 $order = 3);
+        }
     }
 }
-- 
GitLab