Skip to content

Commit

Permalink
refs #5192 introducing a user menu
Browse files Browse the repository at this point in the history
  • Loading branch information
tsteur committed May 20, 2014
1 parent b2cb622 commit 45ae10e
Show file tree
Hide file tree
Showing 32 changed files with 307 additions and 143 deletions.
5 changes: 0 additions & 5 deletions core/Menu/MenuAdmin.php
Expand Up @@ -49,11 +49,6 @@ public static function addEntry($adminMenuName, $url, $displayedForCurrentUser =
self::getInstance()->add('General_Settings', $adminMenuName, $url, $displayedForCurrentUser, $order);
}

public function add($adminMenuName, $url, $displayedForCurrentUser = true, $order = 20)
{
parent::add('General_Settings', $adminMenuName, $url, $displayedForCurrentUser, $order);
}

/**
* Triggers the Menu.MenuAdmin.addItems hook and returns the admin menu.
*
Expand Down
2 changes: 1 addition & 1 deletion core/Menu/MenuUser.php
Expand Up @@ -31,7 +31,7 @@
*
* @method static \Piwik\Menu\MenuUser getInstance()
*/
class MenuUser extends MenuTop
class MenuUser extends MenuAbstract
{

/**
Expand Down
4 changes: 3 additions & 1 deletion core/Plugin/Controller.php
Expand Up @@ -19,6 +19,7 @@
use Piwik\Date;
use Piwik\FrontController;
use Piwik\Menu\MenuTop;
use Piwik\Menu\MenuUser;
use Piwik\NoAccessException;
use Piwik\Notification\Manager as NotificationManager;
use Piwik\Period\Month;
Expand Down Expand Up @@ -563,7 +564,8 @@ protected function setGeneralVariablesView($view)

$this->setBasicVariablesView($view);

$view->topMenu = MenuTop::getInstance()->getMenu();
$view->topMenu = MenuTop::getInstance()->getMenu();
$view->userMenu = MenuUser::getInstance()->getMenu();

$notifications = $view->notifications;
if (empty($notifications)) {
Expand Down
4 changes: 3 additions & 1 deletion core/Plugin/ControllerAdmin.php
Expand Up @@ -12,6 +12,7 @@
use Piwik\Config;
use Piwik\Menu\MenuAdmin;
use Piwik\Menu\MenuTop;
use Piwik\Menu\MenuUser;
use Piwik\Notification;
use Piwik\Notification\Manager as NotificationManager;
use Piwik\Piwik;
Expand Down Expand Up @@ -160,7 +161,8 @@ static public function setBasicVariablesAdminView(View $view)
self::notifyWhenTrackingStatisticsDisabled();
self::notifyIfEAcceleratorIsUsed();

$view->topMenu = MenuTop::getInstance()->getMenu();
$view->topMenu = MenuTop::getInstance()->getMenu();
$view->userMenu = MenuUser::getInstance()->getMenu();
$view->currentAdminMenuName = MenuAdmin::getInstance()->getCurrentAdminMenuName();

$view->isDataPurgeSettingsEnabled = self::isDataPurgeSettingsEnabled();
Expand Down
14 changes: 8 additions & 6 deletions plugins/API/Menu.php
Expand Up @@ -9,24 +9,26 @@
namespace Piwik\Plugins\API;

use Piwik\Menu\MenuTop;
use Piwik\Menu\MenuUser;
use Piwik\Piwik;

/**
*/
class Menu extends \Piwik\Plugin\Menu
{

public function configureTopMenu(MenuTop $menu)
{
$this->addTopMenuMobileApp($menu);
}

public function configureUserMenu(MenuUser $menu)
{
$apiUrlParams = array('module' => 'API', 'action' => 'listAllAPI', 'segment' => false);
$tooltip = Piwik::translate('API_TopLinkTooltip');

$menu->add('General_API', null, $apiUrlParams, true, 7, $tooltip);

$this->addTopMenuMobileApp($menu);
$menu->add('CorePluginsAdmin_MenuPlatform', 'General_API', $apiUrlParams, true, 6, $tooltip);
}

protected function addTopMenuMobileApp(MenuTop $menu)
private function addTopMenuMobileApp(MenuTop $menu)
{
if (empty($_SERVER['HTTP_USER_AGENT'])) {
return;
Expand Down
8 changes: 0 additions & 8 deletions plugins/Actions/Menu.php
Expand Up @@ -8,16 +8,8 @@
*/
namespace Piwik\Plugins\Actions;

use Exception;
use Piwik\Common;
use Piwik\Db;
use Piwik\Menu\MenuAbstract;
use Piwik\Menu\MenuReporting;
use Piwik\Piwik;
use Piwik\Site;

/**
*/
class Menu extends \Piwik\Plugin\Menu
{
public function configureReportingMenu(MenuReporting $menu)
Expand Down
4 changes: 3 additions & 1 deletion plugins/CoreAdminHome/Controller.php
Expand Up @@ -15,6 +15,7 @@
use Piwik\Config;
use Piwik\DataTable\Renderer\Json;
use Piwik\Menu\MenuTop;
use Piwik\Menu\MenuUser;
use Piwik\Nonce;
use Piwik\Piwik;
use Piwik\Plugins\CorePluginsAdmin\UpdateCommunication;
Expand Down Expand Up @@ -202,7 +203,8 @@ public function trackingCodeGenerator()
{
$view = new View('@CoreAdminHome/trackingCodeGenerator');
$this->setBasicVariablesView($view);
$view->topMenu = MenuTop::getInstance()->getMenu();
$view->topMenu = MenuTop::getInstance()->getMenu();
$view->userMenu = MenuUser::getInstance()->getMenu();

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

Expand Down
3 changes: 3 additions & 0 deletions plugins/CoreHome/CoreHome.php
Expand Up @@ -56,6 +56,7 @@ public function getStylesheetFiles(&$stylesheets)
$stylesheets[] = "plugins/CoreHome/stylesheets/notification.less";
$stylesheets[] = "plugins/CoreHome/stylesheets/zen-mode.less";
$stylesheets[] = "plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline.less";
$stylesheets[] = "plugins/CoreHome/angularjs/menudropdown/menudropdown.less";
}

public function getJsFiles(&$jsFiles)
Expand Down Expand Up @@ -125,6 +126,8 @@ public function getJsFiles(&$jsFiles)
$jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector-controller.js";
$jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector-directive.js";

$jsFiles[] = "plugins/CoreHome/angularjs/menudropdown/menudropdown-directive.js";

$jsFiles[] = "plugins/CoreHome/angularjs/enrichedheadline/enrichedheadline-directive.js";
}

Expand Down
28 changes: 28 additions & 0 deletions plugins/CoreHome/angularjs/menudropdown/menudropdown-directive.js
@@ -0,0 +1,28 @@
/*!
* Piwik - Web Analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/

/**
* Usage:
* <div piwik-menudropdown title="MyMenuItem">
* <a class="item" href="/url"></a>
* <a class="item active">test</a>
* <a class="item disabled">-------</a>
* <a class="item" href="/url"></a>
* </div>
*/
angular.module('piwikApp').directive('piwikMenudropdown', function(){

return {
transclude: true,
replace: true,
restrict: 'A',
scope: {
title: '@'
},
templateUrl: 'plugins/CoreHome/angularjs/menudropdown/menudropdown.html?cb=' + piwik.cacheBuster
};
});
9 changes: 9 additions & 0 deletions plugins/CoreHome/angularjs/menudropdown/menudropdown.html
@@ -0,0 +1,9 @@
<div piwik-focus-anywhere-but-here="view.showItems=false" class="menuDropdown">

<span class="title"
ng-click="view.showItems=!view.showItems"
>{{ title }}</span>

<div class="items" ng-show="view.showItems" ng-transclude></div>

</div>
64 changes: 64 additions & 0 deletions plugins/CoreHome/angularjs/menudropdown/menudropdown.less
@@ -0,0 +1,64 @@

.menuDropdown {
display: inline-block;
padding-right: 14px;
color: @theme-color-link;

.title {
position: relative;
cursor: pointer;

&:after {
content: '';
position: absolute;
top: 5px;
right: -15px;
color: @theme-color-link;
display: inline;
content: " \25BC";
font-size: 1px;
height: 0px;
width: 0px;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 5px solid #1E93D1;
}
}

.items {
z-index: 21;
position: absolute;
max-width: 200px;
border: 1px solid @color-silver-l80 !important;
background: @theme-color-background-base;
max-height: 400px;
overflow-y: auto;
overflow-x: hidden;
padding: 0 !important;

.item {
display: block;
color: @theme-color-text !important;
text-decoration: none !important;
padding: 1px 25px 1px 3px !important;

&:hover {
background: @color-silver-l80;
}

&.active {
background-color: @color-silver-l80;
cursor: default;
}

&.disabled {
opacity: 0.5;
cursor: default;

&:hover {
background: @theme-color-background-base;
}
}
}
}
}
53 changes: 44 additions & 9 deletions plugins/CoreHome/templates/_topBarHelloMenu.twig
@@ -1,20 +1,55 @@
<div id="topRightBar">
{% set helloAlias %}
{% if userAlias is not empty %}
<strong>{{ userAlias }}</strong>
{{ userAlias }}
{% else %}
<strong>{{ userLogin }}</strong>
{{ userLogin }}
{% endif %}
{% endset %}
<span class="topBarElem">{{ 'General_HelloUser'|translate(helloAlias|trim)|raw }}</span>
{% if userLogin != 'anonymous' %}
|
{% if isAdminLayout is defined %}
<span class="topBarElem topBarElemActive">{{ 'General_Settings'|translate }}</span>

{% macro userMenuItem(label, menu, currentModule, currentAction) %}
{% if (menu._url.module == currentModule and (menu._url.action is empty or menu._url.action == currentAction)) %}
<a class="active item"
{% if menu._tooltip is defined %}title="{{ menu._tooltip }}"{% endif %}
>{{ label|translate }}</a>
{% else %}
<span class="topBarElem"><a href='index.php?module=CoreAdminHome'>{{ 'General_Settings'|translate }}</a></span>
<a class="item"
href="index.php{{ menu._url|urlRewriteWithParameters }}"
{% if menu._tooltip is defined %}title="{{ menu._tooltip }}"{% endif %}
>{{ label|translate }}</a>
{% endif %}
{% endif %}
{% endmacro %}

<span class="topBarElem">
<div title="{{ helloAlias|trim|raw }}"
piwik-menudropdown>

{% if userLogin != 'anonymous' %}
{% if isAdminLayout is defined %}
<a class="item active">{{ 'General_Settings'|translate }}</a>
{% else %}
<a class="item" href="index.php?module=CoreAdminHome">{{ 'General_Settings'|translate }}</a>
{% endif %}
{% endif %}

{% for lev1UserLabel,lev1UserMenu in userMenu if lev1UserLabel|slice(0,1) != '_' %}

{% if userLogin != 'anonymous' or not loop.first %}
<span class="item disabled">--------</span>
{% endif %}

{% if lev1UserMenu._hasSubmenu is defined and lev1UserMenu._hasSubmenu %}
{% for lev2Label,lev2Menu in lev1UserMenu if lev2Label|slice(0,1) != '_' %}
{{ _self.userMenuItem(lev2Label, lev2Menu, currentModule, currentAction) }}
{% endfor %}
{% else %}
{{ _self.userMenuItem(lev1UserLabel, lev1UserMenu, currentModule, currentAction) }}
{% endif %}

{% endfor %}
</div>
</span>

| <span class="topBarElem">
{% if userLogin == 'anonymous' %}
<a href='index.php?module={{ loginModule }}'>{{ 'Login_LogIn'|translate }}</a>
Expand Down
5 changes: 3 additions & 2 deletions plugins/CoreHome/templates/_topBarTopMenu.twig
Expand Up @@ -3,11 +3,12 @@
{% if menu._html is defined %}
{{ menu._html|raw }}
{% elseif (menu._url.module == currentModule and (menu._url.action is empty or menu._url.action == currentAction)) %}
<span class="topBarElem topBarElemActive"><strong>{{ label|translate }}</strong></span>{% if not loop.last %} |{% endif %}
<span class="topBarElem topBarElemActive"><strong>{{ label|translate }}</strong></span>
{% else %}
<span class="topBarElem" {% if menu._tooltip is defined %}title="{{ menu._tooltip }}"{% endif %}>
<a id="topmenu-{{ menu._url.module|lower }}" href="index.php{{ menu._url|urlRewriteWithParameters }}">{{ label|translate }}</a>
</span>{% if not loop.last %} | {% endif %}
</span>
{% endif %}
|
{% endfor %}
</div>
3 changes: 0 additions & 3 deletions plugins/CorePluginsAdmin/CorePluginsAdmin.php
Expand Up @@ -9,9 +9,6 @@
namespace Piwik\Plugins\CorePluginsAdmin;

use Piwik\Config;
use Piwik\Menu\MenuAbstract;
use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\ScheduledTask;
use Piwik\ScheduledTime;
Expand Down
2 changes: 0 additions & 2 deletions plugins/DBStats/DBStats.php
Expand Up @@ -9,8 +9,6 @@
namespace Piwik\Plugins\DBStats;

use Piwik\Date;
use Piwik\Menu\MenuAbstract;
use Piwik\Menu\MenuAdmin;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
Expand Down
7 changes: 0 additions & 7 deletions plugins/DBStats/Menu.php
Expand Up @@ -8,15 +8,8 @@
*/
namespace Piwik\Plugins\DBStats;

use Exception;
use Piwik\Common;
use Piwik\Db;
use Piwik\Menu\MenuAbstract;
use Piwik\Menu\MenuAdmin;
use Piwik\Menu\MenuReporting;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
use Piwik\Site;

/**
*/
Expand Down
3 changes: 0 additions & 3 deletions plugins/DevicesDetection/DevicesDetection.php
Expand Up @@ -15,9 +15,6 @@
use Piwik\CacheFile;
use Piwik\Common;
use Piwik\Db;
use Piwik\Menu\MenuAbstract;
use Piwik\Menu\MenuAdmin;
use Piwik\Menu\MenuMain;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\WidgetsList;
Expand Down
13 changes: 0 additions & 13 deletions plugins/Feedback/Feedback.php
Expand Up @@ -25,23 +25,10 @@ public function getListHooksRegistered()
return array(
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'Menu.Top.addItems' => 'addTopMenu',
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys'
);
}

public function addTopMenu(MenuTop $menu)
{
$menu->add(
'General_Help',
null,
array('module' => 'Feedback', 'action' => 'index', 'segment' => false),
true,
$order = 20,
$tooltip = Piwik::translate('Feedback_TopLinkTooltip')
);
}

public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/Feedback/stylesheets/feedback.less";
Expand Down

0 comments on commit 45ae10e

Please sign in to comment.