Skip to content

Commit

Permalink
Refs #4202 Menu refactor GO. This one is tricky...
Browse files Browse the repository at this point in the history
  • Loading branch information
mattab committed Oct 9, 2013
1 parent 88a1d58 commit 500373c
Show file tree
Hide file tree
Showing 48 changed files with 156 additions and 90 deletions.
2 changes: 0 additions & 2 deletions core/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@

use Exception;

require_once PIWIK_INCLUDE_PATH . '/core/functions.php';

/**
* For general performance (and specifically, the Tracker), we use deferred (lazy) initialization
* and cache sections. We also avoid any dependency on Zend Framework's Zend_Config.
Expand Down
3 changes: 2 additions & 1 deletion core/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use Exception;
use Piwik\API\Request;
use Piwik\DataTable\Filter\CalculateEvolutionFilter;
use Piwik\Menu\MenuTop;
use Piwik\Period\Month;
use Piwik\Period;
use Piwik\Period\Range;
Expand Down Expand Up @@ -423,7 +424,7 @@ protected function setGeneralVariablesView($view)

$this->setBasicVariablesView($view);

$view->topMenu = Piwik_GetTopMenu();
$view->topMenu = MenuTop::getInstance()->getMenu();
} catch (Exception $e) {
Piwik_ExitWithMessage($e->getMessage(), $e->getTraceAsString());
}
Expand Down
9 changes: 6 additions & 3 deletions core/Controller/Admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

use Piwik\Config;
use Piwik\Controller;
use Piwik\Menu\MenuAdmin;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
use Piwik\PluginsManager;
use Piwik\Url;
Expand Down Expand Up @@ -52,8 +54,8 @@ static public function setBasicVariablesAdminView(View $view)
$view->statisticsNotRecorded = true;
}

$view->topMenu = Piwik_GetTopMenu();
$view->currentAdminMenuName = \Piwik\Menu\Admin::getInstance()->getCurrentAdminMenuName();
$view->topMenu = MenuTop::getInstance()->getMenu();
$view->currentAdminMenuName = MenuAdmin::getInstance()->getCurrentAdminMenuName();

$view->enableFrames = Config::getInstance()->General['enable_framed_settings'];
if (!$view->enableFrames) {
Expand Down Expand Up @@ -83,7 +85,8 @@ static public function setBasicVariablesAdminView(View $view)

self::checkPhpVersion($view);

$view->menu = Piwik_GetAdminMenu();
$adminMenu = MenuAdmin::getInstance()->getMenu();
$view->adminMenu = $adminMenu;
}

static protected function getPiwikVersion()
Expand Down
10 changes: 10 additions & 0 deletions core/DataTable.php
Original file line number Diff line number Diff line change
Expand Up @@ -1509,3 +1509,13 @@ public static function fromSerializedArray($data)
return $result;
}
}


// Bridge for when serialized classes were not using namespaces yet (pre Piwik 2.0)
class Piwik_DataTable_Row_DataTableSummary extends DataTableSummaryRow
{
}

class Piwik_DataTable_Row extends Row
{
}
4 changes: 2 additions & 2 deletions core/Menu/MenuAbstract.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ abstract class MenuAbstract
*
* @return Array
*/
public function get()
public function getMenu()
{
$this->buildMenu();
$this->applyEdits();
Expand All @@ -55,7 +55,7 @@ public function get()
* @param int $order
* @param bool|string $tooltip Tooltip to display.
*/
public function add($menuName, $subMenuName, $url, $displayedForCurrentUser, $order = 50, $tooltip = false)
public function add($menuName, $subMenuName, $url, $displayedForCurrentUser = true, $order = 50, $tooltip = false)
{
if ($displayedForCurrentUser) {
// make sure the idSite value used is numeric (hack-y fix for #3426)
Expand Down
8 changes: 4 additions & 4 deletions core/Menu/MenuAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class MenuAdmin extends MenuAbstract
static private $instance = null;

/**
* @return \Piwik\Menu\MenuAdmin
* @return MenuAdmin
*/
static public function getInstance()
{
Expand Down Expand Up @@ -63,7 +63,7 @@ public function getMenu()
* ```
* public function addMenuItems()
* {
* \Piwik\Menu\MenuAdmin::getInstance()->add(
* MenuAdmin::getInstance()->add(
* 'MenuName',
* 'SubmenuName',
* array('module' => 'MyPlugin', 'action' => 'index'),
Expand All @@ -73,7 +73,7 @@ public function getMenu()
* }
* ```
*/
Piwik::postEvent('Menu.MenuAdmin.addItems');
Piwik::postEvent('Menu.Admin.addItems');
}
return parent::getMenu();
}
Expand All @@ -85,7 +85,7 @@ public function getMenu()
*/
function getCurrentAdminMenuName()
{
$menu = \Piwik\Menu\MenuAdmin::getInstance();
$menu = MenuAdmin::getInstance()->getMenu();
$currentModule = Piwik::getModule();
$currentAction = Piwik::getAction();
foreach ($menu as $submenu) {
Expand Down
30 changes: 26 additions & 4 deletions core/Menu/MenuTop.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class MenuTop extends MenuAbstract
static private $instance = null;

/**
* @return \Piwik\Menu\MenuTop
* @return MenuTop
*/
static public function getInstance()
{
Expand All @@ -30,6 +30,28 @@ static public function getInstance()
return self::$instance;
}


/**
* Adds a new entry to the TopMenu.
*
* @param string $topMenuName
* @param string $data
* @param boolean $displayedForCurrentUser
* @param int $order
* @param bool $isHTML
* @param bool|string $tooltip Tooltip to display.
* @api
*/
public static function addEntry($topMenuName, $data, $displayedForCurrentUser = true, $order = 10, $isHTML = false, $tooltip = false)
{
if ($isHTML) {
MenuTop::getInstance()->addHtml($topMenuName, $data, $displayedForCurrentUser, $order, $tooltip);
} else {
MenuTop::getInstance()->add($topMenuName, null, $data, $displayedForCurrentUser, $order, $tooltip);
}
}


/**
* Directly adds a menu entry containing html.
*
Expand All @@ -52,7 +74,7 @@ public function addHtml($menuName, $data, $displayedForCurrentUser, $order, $too
}

/**
* Triggers the Menu.MenuTop.addItems hook and returns the menu.
* Triggers the Menu.Top.addItems hook and returns the menu.
*
* @return Array
*/
Expand All @@ -71,7 +93,7 @@ public function getMenu()
* ```
* public function addMenuItems()
* {
* Piwik_AddTopMenu(
* MenuTop::addEntry(
* 'TopMenuName',
* array('module' => 'MyPlugin', 'action' => 'index'),
* Piwik::isUserIsSuperUser(),
Expand All @@ -80,7 +102,7 @@ public function getMenu()
* }
* ```
*/
Piwik::postEvent('Menu.MenuTop.addItems');
Piwik::postEvent('Menu.Top.addItems');
}
return parent::getMenu();
}
Expand Down
1 change: 1 addition & 0 deletions core/Url.php
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@ static function getArrayFromCurrentQueryString()
*/
static function getCurrentQueryStringWithParametersModified($params)
{
var_dump($params);
$urlValues = self::getArrayFromCurrentQueryString();
foreach ($params as $key => $value) {
$urlValues[$key] = $value;
Expand Down
1 change: 0 additions & 1 deletion index.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
@date_default_timezone_set('UTC');
require_once PIWIK_INCLUDE_PATH . '/vendor/autoload.php';
require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';
require_once PIWIK_INCLUDE_PATH . '/core/functions.php';

if(!defined('PIWIK_PRINT_ERROR_BACKTRACE')) {
define('PIWIK_PRINT_ERROR_BACKTRACE', false);
Expand Down
1 change: 0 additions & 1 deletion js/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
define('PIWIK_USER_PATH', '..');

require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
require_once PIWIK_INCLUDE_PATH . '/core/Loader.php';

$file = '../piwik.js';
Expand Down
1 change: 0 additions & 1 deletion piwik.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
@ignore_user_abort(true);

require_once PIWIK_INCLUDE_PATH . '/libs/upgradephp/upgrade.php';
require_once PIWIK_INCLUDE_PATH . '/core/functions.php';
require_once PIWIK_INCLUDE_PATH . '/core/PluginsManager.php';
require_once PIWIK_INCLUDE_PATH . '/core/Plugin.php';
require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
Expand Down
5 changes: 3 additions & 2 deletions plugins/API/API.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use Piwik\DataTable;
use Piwik\Date;
use Piwik\Filesystem;
use Piwik\Menu\MenuTop;
use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\SettingsPiwik;
Expand Down Expand Up @@ -666,7 +667,7 @@ public function addTopMenu()
$apiUrlParams = array('module' => 'API', 'action' => 'listAllAPI', 'segment' => false);
$tooltip = Piwik::translate('API_TopLinkTooltip');

Piwik_AddTopMenu('General_API', $apiUrlParams, true, 7, $isHTML = false, $tooltip);
MenuTop::addEntry('General_API', $apiUrlParams, true, 7, $isHTML = false, $tooltip);

$this->addTopMenuMobileApp();
}
Expand All @@ -679,7 +680,7 @@ protected function addTopMenuMobileApp()
require_once PIWIK_INCLUDE_PATH . '/libs/UserAgentParser/UserAgentParser.php';
$os = \UserAgentParser::getOperatingSystem($_SERVER['HTTP_USER_AGENT']);
if ($os && in_array($os['id'], array('AND', 'IPD', 'IPA', 'IPH'))) {
Piwik_AddTopMenu('Piwik Mobile App', array('module' => 'Proxy', 'action' => 'redirect', 'url' => 'http://piwik.org/mobile/'), true, 4);
MenuTop::addEntry('Piwik Mobile App', array('module' => 'Proxy', 'action' => 'redirect', 'url' => 'http://piwik.org/mobile/'), true, 4);
}
}

Expand Down
17 changes: 9 additions & 8 deletions plugins/Actions/Actions.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Piwik\ArchiveProcessor;
use Piwik\Common;
use Piwik\Db;
use Piwik\Menu\MenuMain;
use Piwik\MetricsFormatter;
use Piwik\Piwik;
use Piwik\SegmentExpression;
Expand Down Expand Up @@ -565,16 +566,16 @@ function addWidgets()

function addMenus()
{
Piwik_AddMenu('General_Actions', '', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 15);
Piwik_AddMenu('General_Actions', 'General_Pages', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 1);
Piwik_AddMenu('General_Actions', 'Actions_SubmenuPagesEntry', array('module' => 'Actions', 'action' => 'indexEntryPageUrls'), true, 2);
Piwik_AddMenu('General_Actions', 'Actions_SubmenuPagesExit', array('module' => 'Actions', 'action' => 'indexExitPageUrls'), true, 3);
Piwik_AddMenu('General_Actions', 'Actions_SubmenuPageTitles', array('module' => 'Actions', 'action' => 'indexPageTitles'), true, 4);
Piwik_AddMenu('General_Actions', 'General_Outlinks', array('module' => 'Actions', 'action' => 'indexOutlinks'), true, 6);
Piwik_AddMenu('General_Actions', 'General_Downloads', array('module' => 'Actions', 'action' => 'indexDownloads'), true, 7);
MenuMain::getInstance()->add('General_Actions', '', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 15);
MenuMain::getInstance()->add('General_Actions', 'General_Pages', array('module' => 'Actions', 'action' => 'indexPageUrls'), true, 1);
MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuPagesEntry', array('module' => 'Actions', 'action' => 'indexEntryPageUrls'), true, 2);
MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuPagesExit', array('module' => 'Actions', 'action' => 'indexExitPageUrls'), true, 3);
MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuPageTitles', array('module' => 'Actions', 'action' => 'indexPageTitles'), true, 4);
MenuMain::getInstance()->add('General_Actions', 'General_Outlinks', array('module' => 'Actions', 'action' => 'indexOutlinks'), true, 6);
MenuMain::getInstance()->add('General_Actions', 'General_Downloads', array('module' => 'Actions', 'action' => 'indexDownloads'), true, 7);

if ($this->isSiteSearchEnabled()) {
Piwik_AddMenu('General_Actions', 'Actions_SubmenuSitesearch', array('module' => 'Actions', 'action' => 'indexSiteSearch'), true, 5);
MenuMain::getInstance()->add('General_Actions', 'Actions_SubmenuSitesearch', array('module' => 'Actions', 'action' => 'indexSiteSearch'), true, 5);
}
}

Expand Down
3 changes: 2 additions & 1 deletion plugins/CoreAdminHome/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Config;
use Piwik\Menu\MenuTop;
use Piwik\Nonce;
use Piwik\Piwik;
use Piwik\Plugins\LanguagesManager\API as APILanguagesManager;
Expand Down Expand Up @@ -144,7 +145,7 @@ public function trackingCodeGenerator()
{
$view = new View('@CoreAdminHome/trackingCodeGenerator');
$this->setBasicVariablesView($view);
$view->topMenu = Piwik_GetTopMenu();
$view->topMenu = MenuTop::getInstance()->getMenu();

$viewableIdSites = APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess();

Expand Down
11 changes: 6 additions & 5 deletions plugins/CoreAdminHome/CoreAdminHome.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
use Piwik\Db;
use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
use Piwik\ScheduledTask;
use Piwik\ScheduledTime\Daily;
Expand Down Expand Up @@ -80,14 +81,14 @@ public function getJsFiles(&$jsFiles)

function addMenu()
{
Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 1);
Piwik_AddAdminSubMenu('CoreAdminHome_MenuDiagnostic', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 6);
Piwik_AddAdminSubMenu('General_Settings', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 5);
Piwik_AddAdminSubMenu('General_Settings', 'CoreAdminHome_MenuGeneralSettings',
MenuAdmin::getInstance()->add('CoreAdminHome_MenuManage', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 1);
MenuAdmin::getInstance()->add('CoreAdminHome_MenuDiagnostic', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 6);
MenuAdmin::getInstance()->add('General_Settings', null, "", Piwik::isUserHasSomeAdminAccess(), $order = 5);
MenuAdmin::getInstance()->add('General_Settings', 'CoreAdminHome_MenuGeneralSettings',
array('module' => 'CoreAdminHome', 'action' => 'generalSettings'),
Piwik::isUserHasSomeAdminAccess(),
$order = 6);
Piwik_AddAdminSubMenu('CoreAdminHome_MenuManage', 'CoreAdminHome_TrackingCode',
MenuAdmin::getInstance()->add('CoreAdminHome_MenuManage', 'CoreAdminHome_TrackingCode',
array('module' => 'CoreAdminHome', 'action' => 'trackingCodeGenerator'),
Piwik::isUserHasSomeAdminAccess(),
$order = 4);
Expand Down
4 changes: 2 additions & 2 deletions plugins/CoreAdminHome/templates/_menu.twig
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{% if menu|length > 1 %}
{% if adminMenu|length > 1 %}
<div class="Menu Menu--admin">
<ul class="Menu-tabList">
{% for name,submenu in menu %}
{% for name,submenu in adminMenu %}
{% if submenu._hasSubmenu %}
<li>
<span>{{ name|translate }}</span>
Expand Down
3 changes: 2 additions & 1 deletion plugins/CoreHome/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use Piwik\Common;
use Piwik\Date;
use Piwik\FrontController;
use Piwik\Menu\MenuMain;
use Piwik\Piwik;
use Piwik\Plugins\CoreHome\DataTableRowAction\MultiRowEvolution;
use Piwik\Plugins\CoreHome\DataTableRowAction\RowEvolution;
Expand Down Expand Up @@ -72,7 +73,7 @@ protected function getDefaultIndexView()
{
$view = new View('@CoreHome/getDefaultIndexView');
$this->setGeneralVariablesView($view);
$view->menu = Piwik_GetMenu();
$view->menu = MenuMain::getInstance()->getMenu();
$view->content = '';
return $view;
}
Expand Down
9 changes: 5 additions & 4 deletions plugins/CorePluginsAdmin/CorePluginsAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
*/
namespace Piwik\Plugins\CorePluginsAdmin;

use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
use Piwik\ScheduledTask;
use Piwik\ScheduledTime\Daily;
Expand Down Expand Up @@ -71,16 +72,16 @@ function addMenu()
}
}

Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', null, "", !Piwik::isUserIsAnonymous(), $order = 15);
Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', Piwik::translate('General_Plugins') . $pluginsUpdateMessage,
MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', null, "", !Piwik::isUserIsAnonymous(), $order = 15);
MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('General_Plugins') . $pluginsUpdateMessage,
array('module' => 'CorePluginsAdmin', 'action' => 'plugins', 'activated' => ''),
Piwik::isUserIsSuperUser(),
$order = 1);
Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage,
MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage,
array('module' => 'CorePluginsAdmin', 'action' => 'themes', 'activated' => ''),
Piwik::isUserIsSuperUser(),
$order = 3);
Piwik_AddAdminSubMenu('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_MenuExtend',
MenuAdmin::getInstance()->add('CorePluginsAdmin_MenuPlatform', 'CorePluginsAdmin_MenuExtend',
array('module' => 'CorePluginsAdmin', 'action' => 'extend', 'activated' => ''),
!Piwik::isUserIsAnonymous(),
$order = 5);
Expand Down
3 changes: 2 additions & 1 deletion plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Piwik\Common;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\Menu\MenuMain;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
use Piwik\Url;
use Piwik\ViewDataTable;
Expand Down Expand Up @@ -168,7 +169,7 @@ private function getQueryStringAsHash()
foreach ($piwikParameters as $parameter) {
unset($queryString[$parameter]);
}
if (\Piwik\Menu\Main::getInstance()->isUrlFound($queryString)) {
if (MenuMain::getInstance()->isUrlFound($queryString)) {
return $queryString;
}
return false;
Expand Down
Loading

0 comments on commit 500373c

Please sign in to comment.