Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Steur <thomas.steur@gmail.com>2015-12-10 00:50:07 +0300
committerThomas Steur <thomas.steur@gmail.com>2015-12-10 00:50:07 +0300
commitebced800c0184f5ce93663afab6b0337c3755cbb (patch)
treefb26c2506d37586ff0d38fb902d63d17701bd883 /plugins/CoreHome
parent3d26af780d8fe0e4f7c5824a88b95c4a0d0d25d7 (diff)
parentdb36ca384809ea36457a465a3b6d1ecf951b0e26 (diff)
Merge master into "3.0"
Conflicts: .travis.yml CHANGELOG.md core/Plugin/ControllerAdmin.php core/Version.php core/testMinimumPhpVersion.php plugins/API/API.php plugins/Actions/Reports/GetPageUrls.php plugins/AnonymousPiwikUsageMeasurement plugins/CoreHome/CoreHome.php plugins/CoreHome/templates/_menu.twig plugins/CoreVisualizations/javascripts/jqplotEvolutionGraph.js plugins/CustomVariables/tests/System/expected/test_CustomVariablesSystemTest__CustomVariables.getCustomVariables_day.xml plugins/Goals/Controller.php tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php tests/PHPUnit/Integration/Plugin/ManagerTest.php tests/PHPUnit/System/expected/test_FlattenReports__CustomVariables.getCustomVariables_day.xml tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_month.original.html tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml tests/PHPUnit/System/expected/test_ecommerceOrderWithItems_scheduled_report_in_html_tables_only__ScheduledReports.generateReport_week.original.html tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__CustomVariables.getCustomVariables_range.xml tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__CustomVariables.getCustomVariables_range.xml tests/PHPUnit/System/expected/test_reportLimiting__CustomVariables.getCustomVariables_day.xml tests/PHPUnit/System/expected/test_reportLimiting_rankingQuery__CustomVariables.getCustomVariables_day.xml tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_segmentMatchALL_noGoalData__CustomVariables.getCustomVariables_day.xml tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_segmentMatchALL_noGoalData__CustomVariables.getCustomVariables_week.xml tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_segmentMatchVisitorType__CustomVariables.getCustomVariables_day.xml tests/PHPUnit/System/expected/test_twoVisitsWithCustomVariables_segmentMatchVisitorType__CustomVariables.getCustomVariables_week.xml tests/UI/expected-ui-screenshots tests/UI/specs/Overlay_spec.js tests/UI/specs/UIIntegration_spec.js
Diffstat (limited to 'plugins/CoreHome')
-rw-r--r--plugins/CoreHome/Columns/UserId.php10
-rw-r--r--plugins/CoreHome/CoreHome.php5
-rw-r--r--plugins/CoreHome/DataTableRowAction/RowEvolution.php2
-rw-r--r--plugins/CoreHome/Menu.php7
-rw-r--r--plugins/CoreHome/angularjs/common/filters/htmldecode.js26
-rw-r--r--plugins/CoreHome/angularjs/common/filters/ucfirst.js21
-rw-r--r--plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html6
-rw-r--r--plugins/CoreHome/angularjs/siteselector/siteselector.directive.html3
-rw-r--r--plugins/CoreHome/config/config.php6
-rw-r--r--plugins/CoreHome/javascripts/broadcast.js7
-rw-r--r--plugins/CoreHome/javascripts/dataTable.js23
-rw-r--r--plugins/CoreHome/javascripts/dataTable_rowactions.js11
-rw-r--r--plugins/CoreHome/javascripts/notification.js10
-rw-r--r--plugins/CoreHome/javascripts/popover.js10
-rw-r--r--plugins/CoreHome/lang/cs.json9
-rw-r--r--plugins/CoreHome/lang/de.json3
-rw-r--r--plugins/CoreHome/lang/el.json3
-rw-r--r--plugins/CoreHome/lang/en.json3
-rw-r--r--plugins/CoreHome/lang/fr.json3
-rw-r--r--plugins/CoreHome/lang/it.json3
-rw-r--r--plugins/CoreHome/lang/ja.json7
-rw-r--r--plugins/CoreHome/lang/ko.json14
-rw-r--r--plugins/CoreHome/lang/lt.json1
-rw-r--r--plugins/CoreHome/lang/nb.json21
-rw-r--r--plugins/CoreHome/lang/pt-br.json3
-rw-r--r--plugins/CoreHome/lang/tr.json2
-rw-r--r--plugins/CoreHome/stylesheets/coreHome.less10
-rw-r--r--plugins/CoreHome/stylesheets/layout.less14
-rw-r--r--plugins/CoreHome/templates/_dataTable.twig2
-rw-r--r--plugins/CoreHome/templates/_menu.twig11
-rw-r--r--plugins/CoreHome/templates/_siteSelectHeader.twig2
-rw-r--r--plugins/CoreHome/templates/_topBar.twig4
-rw-r--r--plugins/CoreHome/tests/Integration/Column/UserIdTest.php12
33 files changed, 212 insertions, 62 deletions
diff --git a/plugins/CoreHome/Columns/UserId.php b/plugins/CoreHome/Columns/UserId.php
index bbe7e44c8f..a611ca8def 100644
--- a/plugins/CoreHome/Columns/UserId.php
+++ b/plugins/CoreHome/Columns/UserId.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Cache;
use Piwik\DataTable;
use Piwik\DataTable\Map;
+use Piwik\Metrics;
use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
@@ -124,7 +125,14 @@ class UserId extends VisitDimension
return false;
}
- $numUsers = $result->getColumn('nb_users');
+ $firstRow = $result->getFirstRow();
+ if ($firstRow instanceof DataTable\Row && $firstRow->hasColumn(Metrics::INDEX_NB_USERS)) {
+ $metric = Metrics::INDEX_NB_USERS;
+ } else {
+ $metric = 'nb_users';
+ }
+
+ $numUsers = $result->getColumn($metric);
$numUsers = array_sum($numUsers);
return !empty($numUsers);
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index 519891acb0..c1f88e035c 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -143,6 +143,8 @@ class CoreHome extends \Piwik\Plugin
$jsFiles[] = "plugins/CoreHome/angularjs/common/filters/trim.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/filters/pretty-url.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/filters/escape.js";
+ $jsFiles[] = "plugins/CoreHome/angularjs/common/filters/htmldecode.js";
+ $jsFiles[] = "plugins/CoreHome/angularjs/common/filters/ucfirst.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/directive.module.js";
$jsFiles[] = "plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js";
@@ -207,7 +209,6 @@ class CoreHome extends \Piwik\Plugin
$translationKeys[] = 'General_Show';
$translationKeys[] = 'General_Hide';
$translationKeys[] = 'General_Website';
- $translationKeys[] = 'General_ChooseWebsite';
$translationKeys[] = 'Intl_Year_Short';
$translationKeys[] = 'General_MultiSitesSummary';
$translationKeys[] = 'General_SearchNoResults';
@@ -278,6 +279,7 @@ class CoreHome extends \Piwik\Plugin
$translationKeys[] = 'Intl_Day_Min_StandAlone_6';
$translationKeys[] = 'Intl_Day_Min_StandAlone_7';
$translationKeys[] = 'General_And';
+ $translationKeys[] = 'General_All';
$translationKeys[] = 'General_Search';
$translationKeys[] = 'General_Clear';
$translationKeys[] = 'General_MoreDetails';
@@ -304,5 +306,6 @@ class CoreHome extends \Piwik\Plugin
$translationKeys[] = 'CoreHome_Segments';
$translationKeys[] = 'CoreHome_MenuEntries';
$translationKeys[] = 'SitesManager_Sites';
+ $translationKeys[] = 'CoreHome_ChangeCurrentWebsite';
}
}
diff --git a/plugins/CoreHome/DataTableRowAction/RowEvolution.php b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
index d73c5c2158..106685edf7 100644
--- a/plugins/CoreHome/DataTableRowAction/RowEvolution.php
+++ b/plugins/CoreHome/DataTableRowAction/RowEvolution.php
@@ -91,7 +91,7 @@ class RowEvolution
if (!is_array($this->label)) {
throw new Exception("Expected label to be an array, got instead: " . $this->label);
}
- $this->label = $this->label[0];
+ $this->label = Common::unsanitizeInputValue($this->label[0]);
if ($this->label === '') throw new Exception("Parameter label not set.");
diff --git a/plugins/CoreHome/Menu.php b/plugins/CoreHome/Menu.php
index 20d9ac8eb8..c9331e4470 100644
--- a/plugins/CoreHome/Menu.php
+++ b/plugins/CoreHome/Menu.php
@@ -35,12 +35,13 @@ class Menu extends \Piwik\Plugin\Menu
if (Piwik::isUserIsAnonymous()) {
if (Plugin\Manager::getInstance()->isPluginActivated('ScheduledReports')) {
- $menu->addItem($login, null, array('module' => 'ScheduledReports', 'action' => 'index'), 970, $login);
+ $menu->addItem($login, null, array('module' => 'ScheduledReports', 'action' => 'index'), 970, Piwik::translate('ScheduledReports_PersonalEmailReports'));
} else {
- $menu->addItem($login, null, array('module' => 'API', 'action' => 'listAllAPI'), 970, $login);
+ $menu->addItem($login, null, array('module' => 'API', 'action' => 'listAllAPI'), 970, Piwik::translate('API_ReportingApiReference'));
}
} else {
- $menu->addItem($login, null, array('module' => 'UsersManager', 'action' => 'userSettings'), 970, $login);
+ $tooltip = sprintf('%s: %s', Piwik::translate('UsersManager_PersonalSettings'), $login);
+ $menu->addItem($login, null, array('module' => 'UsersManager', 'action' => 'userSettings'), 970, $tooltip);
}
$module = $this->getLoginModule();
diff --git a/plugins/CoreHome/angularjs/common/filters/htmldecode.js b/plugins/CoreHome/angularjs/common/filters/htmldecode.js
new file mode 100644
index 0000000000..c3e8107931
--- /dev/null
+++ b/plugins/CoreHome/angularjs/common/filters/htmldecode.js
@@ -0,0 +1,26 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+(function () {
+ angular.module('piwikApp.filter').filter('htmldecode', htmldecode);
+
+ htmldecode.$inject = ['piwik'];
+
+ /**
+ * Be aware that this filter can cause XSS so only use it when you're sure it is safe.
+ * Eg it should be safe when it is afterwards escaped by angular sanitize again.
+ */
+ function htmldecode(piwik) {
+
+ return function(text) {
+ if (text && text.length) {
+ return piwik.helper.htmlDecode(text);
+ }
+
+ return text;
+ };
+ }
+})();
diff --git a/plugins/CoreHome/angularjs/common/filters/ucfirst.js b/plugins/CoreHome/angularjs/common/filters/ucfirst.js
new file mode 100644
index 0000000000..34b3460be8
--- /dev/null
+++ b/plugins/CoreHome/angularjs/common/filters/ucfirst.js
@@ -0,0 +1,21 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+(function () {
+ angular.module('piwikApp.filter').filter('ucfirst', ucfirst);
+
+ function ucfirst() {
+
+ return function(value) {
+ if (!value) {
+ return value;
+ }
+
+ var firstLetter = (value + '').charAt(0).toUpperCase();
+ return firstLetter + value.substr(1);
+ };
+ }
+})();
diff --git a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html
index 8cf6a9a67b..93371a03bf 100644
--- a/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html
+++ b/plugins/CoreHome/angularjs/reporting-menu/reportingmenu.directive.html
@@ -1,6 +1,7 @@
-<ul class="navbar">
+<ul class="navbar"role="menu">
<li ng-repeat="category in menuModel.menu"
class="menuTab"
+ role="menuitem"
ng-class="{'active': category.active}">
<a class="item"
href=""
@@ -10,8 +11,9 @@
{{ 'CoreHome_Menu'|translate }}
</span>
</a>
- <ul>
+ <ul role="menu">
<li ng-repeat="subcategory in category.subcategories"
+ role="menuitem"
ng-class="{'active': subcategory.active}">
<div ng-if="subcategory.isGroup" piwik-menudropdown show-search="true" menu-title="{{ subcategory.name|escape }}">
<a class="item"
diff --git a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html
index 9ee4932163..e4e46a676a 100644
--- a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html
+++ b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.html
@@ -16,7 +16,7 @@
<a ng-click="view.showSitesList=!view.showSitesList; view.showSitesList && !model.isLoading && model.loadInitialSites();"
piwik-onenter="view.showSitesList=!view.showSitesList; view.showSitesList && !model.isLoading && model.loadInitialSites();"
href="javascript:void(0)"
- title="{{ 'General_ChooseWebsite'|translate }}"
+ title="{{ 'CoreHome_ChangeCurrentWebsite'|translate:((selectedSite.name || model.firstSiteName)|htmldecode) }}"
ng-class="{'loading': model.isLoading}"
class="title">
<span class="icon icon-arrow-bottom"
@@ -37,6 +37,7 @@
ng-hide="!showSelectedSite && activeSiteId==site.idsite">
<a piwik-ignore-click href="{{ getUrlForSiteId(site.idsite) }}"
piwik-autocomplete-matched="view.searchTerm"
+ title="{{ site.name|htmldecode }}"
ng-bind-html="site.name"></a>
</li>
</ul>
diff --git a/plugins/CoreHome/config/config.php b/plugins/CoreHome/config/config.php
index 3c646cbd88..39236b62c5 100644
--- a/plugins/CoreHome/config/config.php
+++ b/plugins/CoreHome/config/config.php
@@ -3,10 +3,6 @@
return array(
'Piwik\Plugins\CoreHome\Tracker\VisitRequestProcessor' => DI\object()
- ->constructorParameter('visitStandardLength', DI\get('ini.Tracker.visit_standard_length')),
-
- 'tracker.request.processors' => DI\add(array(
- DI\get('Piwik\Plugins\CoreHome\Tracker\VisitRequestProcessor'),
- )),
+ ->constructorParameter('visitStandardLength', DI\get('ini.Tracker.visit_standard_length'))
);
diff --git a/plugins/CoreHome/javascripts/broadcast.js b/plugins/CoreHome/javascripts/broadcast.js
index 3d5fb0432c..30b21f46af 100644
--- a/plugins/CoreHome/javascripts/broadcast.js
+++ b/plugins/CoreHome/javascripts/broadcast.js
@@ -214,6 +214,10 @@ var broadcast = {
currentHashStr = broadcast.updateParamValue('idDashboard=', currentHashStr);
}
+ if (module != 'CustomDimensions') {
+ currentHashStr = broadcast.updateParamValue('idDimension=', currentHashStr);
+ }
+
if (disableHistory) {
var newLocation = window.location.href.split('#')[0] + '#?' + currentHashStr;
// window.location.replace changes the current url without pushing it on the browser's history stack
@@ -451,7 +455,8 @@ var broadcast = {
broadcast.getParamValue('action', urlAjax),
{
idGoal: broadcast.getParamValue('idGoal', urlAjax),
- idDashboard: broadcast.getParamValue('idDashboard', urlAjax)
+ idDashboard: broadcast.getParamValue('idDashboard', urlAjax),
+ idDimension: broadcast.getParamValue('idDimension', urlAjax)
}
);
});
diff --git a/plugins/CoreHome/javascripts/dataTable.js b/plugins/CoreHome/javascripts/dataTable.js
index 9a7f34cd4c..2ec3fb16d8 100644
--- a/plugins/CoreHome/javascripts/dataTable.js
+++ b/plugins/CoreHome/javascripts/dataTable.js
@@ -508,13 +508,20 @@ $.extend(DataTable.prototype, UIControl.prototype, {
};
}
+ function getFilterLimitAsString(limit) {
+ if (limit == '-1') {
+ return _pk_translate('General_All').toLowerCase();
+ }
+ return limit;
+ }
+
// setup limit control
- $('.limitSelection', domElem).append('<div><span>' + self.param[limitParamName] + '</span></div><ul></ul>');
+ $('.limitSelection', domElem).append('<div><span value="'+ self.param[limitParamName] +'">' + getFilterLimitAsString(self.param[limitParamName]) + '</span></div><ul></ul>');
if (self.props.show_limit_control) {
$('.limitSelection ul', domElem).hide();
for (var i = 0; i < numbers.length; i++) {
- $('.limitSelection ul', domElem).append('<li value="' + numbers[i] + '"><span>' + numbers[i] + '</span></li>');
+ $('.limitSelection ul', domElem).append('<li value="' + numbers[i] + '"><span>' + getFilterLimitAsString(numbers[i]) + '</span></li>');
}
$('.limitSelection ul li:last', domElem).addClass('last');
@@ -537,12 +544,12 @@ $.extend(DataTable.prototype, UIControl.prototype, {
$('.limitSelection', domElem).is('.visible') ? hide() : show();
});
$('.limitSelection ul li', domElem).on('click', function (event) {
- var limit = parseInt($(event.target).text());
+ var limit = parseInt($(event.target).closest('li').attr('value'));
hide();
if (limit != self.param[limitParamName]) {
setLimitValue(self.param, limit);
- $('.limitSelection>div>span', domElem).text(limit);
+ $('.limitSelection>div>span', domElem).text( getFilterLimitAsString(limit)).attr('value', limit);
self.reloadAjaxDataTable();
var data = {};
@@ -1047,7 +1054,7 @@ $.extend(DataTable.prototype, UIControl.prototype, {
$(this).attr('href', function () {
var url = $(this).attr('href') + '&token_auth=' + piwik.token_auth;
- var limit = $('.limitSelection>div>span', domElem).text();
+ var limit = $('.limitSelection>div>span', domElem).attr('value');
var defaultLimit = $(this).attr('filter_limit');
if (!limit || 'undefined' === limit || defaultLimit == -1) {
limit = defaultLimit;
@@ -1071,6 +1078,7 @@ $.extend(DataTable.prototype, UIControl.prototype, {
var segment = self.param.segment;
var label = self.param.label;
var idGoal = self.param.idGoal;
+ var idDimension = self.param.idDimension;
var param_date = self.param.date;
var date = $(this).attr('date');
if (typeof date != 'undefined') {
@@ -1139,6 +1147,11 @@ $.extend(DataTable.prototype, UIControl.prototype, {
&& idGoal != '-1') {
str += '&idGoal=' + idGoal;
}
+ // Export Dimension specific reports
+ if (typeof idDimension != 'undefined'
+ && idDimension != '-1') {
+ str += '&idDimension=' + idDimension;
+ }
if (label) {
label = label.split(',');
diff --git a/plugins/CoreHome/javascripts/dataTable_rowactions.js b/plugins/CoreHome/javascripts/dataTable_rowactions.js
index 004e27e3b6..e7308fb93f 100644
--- a/plugins/CoreHome/javascripts/dataTable_rowactions.js
+++ b/plugins/CoreHome/javascripts/dataTable_rowactions.js
@@ -386,6 +386,17 @@ DataTable_RowActions_RowEvolution.prototype.showRowEvolution = function (apiMeth
requestParams.action = 'getRowEvolutionPopover';
requestParams.colors = JSON.stringify(piwik.getSparklineColors());
+ var idDimension;
+ if (broadcast.getValueFromUrl('module') === 'Widgetize') {
+ idDimension = broadcast.getValueFromUrl('idDimension');
+ } else {
+ idDimension = broadcast.getValueFromHash('idDimension');
+ }
+
+ if (idDimension) {
+ requestParams.idDimension = parseInt(idDimension, 10);
+ }
+
$.extend(requestParams, extraParams);
var ajaxRequest = new ajaxHelper();
diff --git a/plugins/CoreHome/javascripts/notification.js b/plugins/CoreHome/javascripts/notification.js
index e6c3f017f2..527c845d87 100644
--- a/plugins/CoreHome/javascripts/notification.js
+++ b/plugins/CoreHome/javascripts/notification.js
@@ -54,6 +54,16 @@
this.$node = placeNotification(template, options);
};
+ /**
+ * Removes a previously shown notification having the given notification id.
+ *
+ *
+ * @param {string} notificationId The id of a notification that was previously registered.
+ */
+ Notification.prototype.remove = function (notificationId) {
+ $('[piwik-notification][notification-id=' + notificationId + ']').remove();
+ };
+
Notification.prototype.scrollToNotification = function () {
if (this.$node) {
piwikHelper.lazyScrollTo(this.$node, 250);
diff --git a/plugins/CoreHome/javascripts/popover.js b/plugins/CoreHome/javascripts/popover.js
index aff7ed7ff9..f694769821 100644
--- a/plugins/CoreHome/javascripts/popover.js
+++ b/plugins/CoreHome/javascripts/popover.js
@@ -142,7 +142,17 @@ var Piwik_Popover = (function () {
/** Set the title of the popover */
setTitle: function (titleHtml) {
+ var titleText = piwikHelper.htmlDecode(titleHtml);
+ if (titleText.length > 60) {
+ titleHtml = $('<span>').attr('class', 'tooltip').attr('title', titleText).html(titleHtml);
+ }
container.dialog('option', 'title', titleHtml);
+ try {
+ $('.tooltip', container.parentNode).tooltip('destroy');
+ } catch (e) {}
+ if (titleText.length > 60) {
+ $('.tooltip', container.parentNode).tooltip({track: true, items: '.tooltip'});
+ }
},
/** Set inner HTML of the popover */
diff --git a/plugins/CoreHome/lang/cs.json b/plugins/CoreHome/lang/cs.json
index b2a02bb644..aba489871a 100644
--- a/plugins/CoreHome/lang/cs.json
+++ b/plugins/CoreHome/lang/cs.json
@@ -20,7 +20,7 @@
"IncludeRowsWithLowPopulation": "Řádky s nízkou populací jsou skryty %s Zobrazit všechny řádky",
"InjectedHostEmailBody": "Ahoj. Dnes jsem se snažil dostat do \\Piwiku a dostal jsem varování o neznámém ménu hostitele.",
"InjectedHostEmailSubject": "K piwiku bylo přistupováno s neznámým jménem hostitele %s",
- "InjectedHostNonSuperUserWarning": "%1$sKlikněte zde pro bezpečný přístup k Piwiku%2$s a odstranění tohoto varování. Pokud chcete upozornit administrátora na tento problém, %3$sklikněte zde pro odeslání e-mailu%4$s.",
+ "InjectedHostNonSuperUserWarning": "%1$sKlikněte zde pro bezpečný přístup k Piwiku%2$s a odstranění tohoto varování. Pokud chcete upozornit administrátora na tento problém, %3$sklikněte zde pro odeslání emailu%4$s.",
"InjectedHostSuperUserWarning": "Piwik může být špatně nakonfigurován, například pokud byl přesunut na nový server nebo URL. Můžete %1$skliknout zde a přidat %2$s jako platné jméno hostitele Piwiku (pokud mu důvěřujete)%3$s, nebo %4$s klikněte zde%5$s pro bezpečný přístup k Piwiku%6$s.",
"InjectedHostWarningIntro": "Nyní přistupujete k Piwiku z %1$s, ale byl nakonfigurován, aby naslouchal na následující adrese: %2$s.",
"JavascriptDisabled": "Musíte mít zapnutý JavaScript, jinak Piwik nezobrazíte.<br \/> Nebo jen není Váš prohlížeč mezi podporovanými.<br \/>Pro běžné zobrazení zapněte JavaScript ve svém prohlížeči, poté %1$szkuste znovu%2$s.<br \/>",
@@ -48,6 +48,11 @@
"YouAreUsingTheLatestVersion": "Používáte nejnovější verzi Piwiku.",
"ClickRowToExpandOrContract": "Klikněte na tento řádek pro rozbalení nebo zbalení podtabulky.",
"UndoPivotBySubtable": "Toto hlášení bylo zaměřeno %s Vrátit zpět",
- "PivotBySubtable": "Toto hlášení není zaměřené %s Zaměřit na %s"
+ "PivotBySubtable": "Toto hlášení není zaměřené %s Zaměřit na %s",
+ "QuickAccessTitle": "Najít zástupce %s: Pro hledání stiskněte 'f'.",
+ "MenuEntries": "Položky menu",
+ "Segments": "Segmenty",
+ "AdblockIsMaybeUsed": "Pokud používáte blokovač reklam, zakažte ho pro tyto stránky, aby Piwik správně fungoval.",
+ "ChangeCurrentWebsite": "Vybrat webovou stránku, aktuálně vybraná stránka: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/de.json b/plugins/CoreHome/lang/de.json
index 4c744998eb..a80015d88d 100644
--- a/plugins/CoreHome/lang/de.json
+++ b/plugins/CoreHome/lang/de.json
@@ -52,6 +52,7 @@
"QuickAccessTitle": "Suche nach %s. Tastenkürzel: Drücken Sie 'f' um zu suchen.",
"MenuEntries": "Menüeinträge",
"Segments": "Segmente",
- "AdblockIsMaybeUsed": "Für den Fall, dass Sie einen Ad-Blocker verwenden, deaktivieren Sie diesen bitte für diese Seite um sicherzustellen, dass Piwik problemlos läuft."
+ "AdblockIsMaybeUsed": "Für den Fall, dass Sie einen Ad-Blocker verwenden, deaktivieren Sie diesen bitte für diese Seite um sicherzustellen, dass Piwik problemlos läuft.",
+ "ChangeCurrentWebsite": "Wählen Sie eine Webseite, aktuell gewählte Webseite: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/el.json b/plugins/CoreHome/lang/el.json
index 242a7af9e6..ed3ae34bb2 100644
--- a/plugins/CoreHome/lang/el.json
+++ b/plugins/CoreHome/lang/el.json
@@ -52,6 +52,7 @@
"QuickAccessTitle": "Αναζήτηση για το %s. Πλήκτρο συντόμευσης: Πατήστε 'f' για αναζήτηση.",
"MenuEntries": "Καταχωρήσεις μενού",
"Segments": "Τμήματα",
- "AdblockIsMaybeUsed": "Σε περίπτωση που χρησιμοποιείτε κάποια πρόγραμμα που μπλοκάρει τις διαφημίσεις, παρακαλούμε απενεργοποιήστε το για αυτόν τον ιστοτόπο για να είστε σίγουροι ότι το Piwik δουλεύει σωστά."
+ "AdblockIsMaybeUsed": "Σε περίπτωση που χρησιμοποιείτε κάποια πρόγραμμα που μπλοκάρει τις διαφημίσεις, παρακαλούμε απενεργοποιήστε το για αυτόν τον ιστοτόπο για να είστε σίγουροι ότι το Piwik δουλεύει σωστά.",
+ "ChangeCurrentWebsite": "Επιλέξτε ένα ιστοτόπο, επιλεγμένος ιστοτόπος αυτή τη στιγμή: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/en.json b/plugins/CoreHome/lang/en.json
index 6e38e1d0f2..75566a08f2 100644
--- a/plugins/CoreHome/lang/en.json
+++ b/plugins/CoreHome/lang/en.json
@@ -53,6 +53,7 @@
"QuickAccessTitle": "Search for %s. Shortcut: Press 'f' to search.",
"MenuEntries": "Menu entries",
"Segments": "Segments",
- "AdblockIsMaybeUsed": "In case you are using an ad blocker, please disable it for this site to make sure Piwik works without any issues."
+ "AdblockIsMaybeUsed": "In case you are using an ad blocker, please disable it for this site to make sure Piwik works without any issues.",
+ "ChangeCurrentWebsite": "Choose a website, currently selected website: %s"
}
}
diff --git a/plugins/CoreHome/lang/fr.json b/plugins/CoreHome/lang/fr.json
index dc5980c335..c63eb35c23 100644
--- a/plugins/CoreHome/lang/fr.json
+++ b/plugins/CoreHome/lang/fr.json
@@ -48,6 +48,7 @@
"YouAreUsingTheLatestVersion": "Vous utilisez la dernière version de Piwik!",
"ClickRowToExpandOrContract": "Cliquez sur cette rangée pour afficher ou masquer le sous-tableau",
"UndoPivotBySubtable": "Ce rapport a été pivoté %s Annuler le pivot",
- "PivotBySubtable": "Ce rapport n'a pas été pivoté %s Pivoter par %s"
+ "PivotBySubtable": "Ce rapport n'a pas été pivoté %s Pivoter par %s",
+ "Segments": "Segments"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/it.json b/plugins/CoreHome/lang/it.json
index 1d1513c8de..37c9c5fc1a 100644
--- a/plugins/CoreHome/lang/it.json
+++ b/plugins/CoreHome/lang/it.json
@@ -52,6 +52,7 @@
"QuickAccessTitle": "Cerca %s. Shortcut: Premi 'f' per la ricerca.",
"MenuEntries": "Ingressi da menù",
"Segments": "Segmenti",
- "AdblockIsMaybeUsed": "Se stai utilizzando un plugin di blocco della pubblicità, disabilitalo per questo sito, per essere sicuro che Piwik lavori senza problemi."
+ "AdblockIsMaybeUsed": "Se stai utilizzando un plugin di blocco della pubblicità, disabilitalo per questo sito, per essere sicuro che Piwik lavori senza problemi.",
+ "ChangeCurrentWebsite": "Scegli un sito, attualmente è selezionato: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/ja.json b/plugins/CoreHome/lang/ja.json
index 6efb5237e9..d328182c53 100644
--- a/plugins/CoreHome/lang/ja.json
+++ b/plugins/CoreHome/lang/ja.json
@@ -48,6 +48,11 @@
"YouAreUsingTheLatestVersion": "Piwik の最新バージョンを使用しています !",
"ClickRowToExpandOrContract": "サブテーブルを拡大または縮小するには、この列をクリックしてください。",
"UndoPivotBySubtable": "このレポートは、%s 元に戻すピボットを旋回しました。",
- "PivotBySubtable": "このレポートは、%s が %s ピボット を旋回していません。"
+ "PivotBySubtable": "このレポートは、%s が %s ピボット を旋回していません。",
+ "QuickAccessTitle": "%s を検索。ショートカット: ' f' キーを押して検索します。",
+ "MenuEntries": "メニュー エントリー",
+ "Segments": "セグメント",
+ "AdblockIsMaybeUsed": "広告ブロッカーを使用している場合には、Piwik が問題なく動作することを確認するために、このサイトでそれを無効にしてください。",
+ "ChangeCurrentWebsite": "ウェブサイトを選ぶ 現在選択されているWebサイト:%s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/ko.json b/plugins/CoreHome/lang/ko.json
index f43ee7f5ae..aee10161d2 100644
--- a/plugins/CoreHome/lang/ko.json
+++ b/plugins/CoreHome/lang/ko.json
@@ -3,6 +3,7 @@
"CategoryNoData": "이 카테고리 안에 데이터가 없습니다. \"모든 집단 포함\"을 시도해보세요.",
"CheckForUpdates": "업데이트 확인",
"CheckPiwikOut": "Piwik 출시 확인!",
+ "ClickToEditX": "%s 수정하기",
"CloseWidgetDirections": "위젯의 상단에있는 'X'아이콘을 클릭하여 이 위젯을 닫을 수 있습니다.",
"DataForThisReportHasBeenPurged": "이 보고서의 데이터는 %s 개월 이상 되었기 때문에 제거되었습니다.",
"DataTableExcludeAggregateRows": "요약 행 표시 %s 숨기기",
@@ -13,6 +14,7 @@
"DonateCall3": "Piwik이 당신의 업무나 시도하는 일에 특별한 가치를 더해준다고 느끼신다면, %1$s기부해 주세요!%2$s",
"DonateFormInstructions": "슬라이더를 클릭하여 금액을 선택하고, 기부에 기명을 클릭합니다.",
"ExcludeRowsWithLowPopulation": "모든 행을 표시 %s 적은 량의 항목은 제외",
+ "ExternalHelp": "도움말 (새로운 탭에 열기)",
"FlattenDataTable": "이 보고서는 계층형입니다. %s 펼치기",
"HowMuchIsPiwikWorth": "당신에게 Piwik의 가치는 얼마인가요?",
"IncludeRowsWithLowPopulation": "수가 적은 줄 숨기기 %s 모든 행을 표시",
@@ -24,7 +26,9 @@
"JavascriptDisabled": "Piwik의 표준보기를 이용하려면 JavaScript가가 활성화되어 있어야 합니다.<br \/>하지만, 당신의 브라우저는 활성화되어있지 않거나 지원되지 않는 것 같습니다.<br \/>표준보기를 이용하려면 브라우저 옵션을 변경하여 JavaScript를 활성화하고 <br \/> %1$s다시 시도하세요%2$s.<br \/>",
"MakeADifference": "개발 지원: Piwik 2.0에 %1$s기부해 주세요%2$s!",
"MakeOneTimeDonation": "또는, 한 번만 기부합니다.",
+ "Menu": "메뉴",
"NoPrivilegesAskPiwikAdmin": "'%s'로 로그인되었지만 권한이 설정되어 있지 않습니다. %s Piwik 관리자(클릭 이메일) %s에 '보기'권한을 부여 받으세요.",
+ "OnlyForSuperUserAccess": "해당 위젯은 유저가 수퍼 유저일 경우에만 나타납니다.",
"PageOf": "%1$s \/ %2$s",
"PeriodRange": "기간",
"ReportGeneratedOn": "%s에 생성된 보고서",
@@ -33,12 +37,20 @@
"SharePiwikShort": "Piwik은 오픈소스기반 무료 웹 분석 도구입니다. 이제 소중한 정보를 소유하세요!",
"ShareThis": "공유하기",
"ShowJSCode": "삽입할 자바스크립트 코드 보기",
+ "SkipToContent": "내용 건너뛰기",
"SubscribeAndBecomePiwikSupporter": "Piwik의 후원자가 되기 위해서 보안 신용카드 결제 페이지 (페이팔)로 이동합니다!",
"SupportPiwik": "Piwik 지원!",
+ "TableNoData": "이 테이블에 데이터가 없습니다.",
"ThereIsNoDataForThisReport": "이 보고서에는 데이터가 없습니다.",
"UnFlattenDataTable": "보고서가 펼쳐져 있습니다 %s 계층으로 표시하기",
"ViewAllPiwikVideoTutorials": "모든 비디오 튜토리얼 보기",
"WebAnalyticsReports": "웹 분석 보고서",
- "YouAreUsingTheLatestVersion": "Piwik 최신 버전을 사용하고 있습니다!"
+ "YouAreUsingTheLatestVersion": "Piwik 최신 버전을 사용하고 있습니다!",
+ "ClickRowToExpandOrContract": "하위 테이블의 행을 확장하거나 축소하기 위해 클릭하세요.",
+ "QuickAccessTitle": "%s 검색하기. 단축키: 검색을 하려면 'f'를 누르세요.",
+ "MenuEntries": "메뉴",
+ "Segments": "세그멘트",
+ "AdblockIsMaybeUsed": "Piwik가 문제 없이 동작하기 위해서 광고 차단기능이 있는 플러그인을 꺼주시길 바랍니다.",
+ "ChangeCurrentWebsite": "웹사이트를 선택하세요, 현재 선택된 웹사이트: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/lt.json b/plugins/CoreHome/lang/lt.json
index f0b88807bf..907f1bf178 100644
--- a/plugins/CoreHome/lang/lt.json
+++ b/plugins/CoreHome/lang/lt.json
@@ -3,6 +3,7 @@
"CategoryNoData": "Šioje kategorijoje duomenų nėra. Pabandykite \"Įtraukti visą populiaciją\"",
"JavascriptDisabled": "JavaScript turi būti įjungta, kad būtų galima naudoti standartinę Piwik išvaizdą.<br \/>Tačiau panašu, kad JavaScript yra arba išjungta, arba nepalaikoma Jūsų naršyklės.<br \/>Norėdami matyti standartinę išvaizdą, įjunkite JavaScript keisdami savo naršyklės nustatymus, tada %1$sbandykite dar kartą%2$s.<br \/>",
"PageOf": "%1$s iš %2$s",
+ "SharePiwikShort": "Piwik! Nemokama\/laisva saityno analitika. Būkite savo duomenų savininkais.",
"ShowJSCode": "Parodyti JavaScript kodą įvedimui",
"ThereIsNoDataForThisReport": "Nėra duomenų šiai ataskaitai.",
"WebAnalyticsReports": "Žiniatinklio analizės sprendimo ataskaitos"
diff --git a/plugins/CoreHome/lang/nb.json b/plugins/CoreHome/lang/nb.json
index 91308236ff..33cc4649d0 100644
--- a/plugins/CoreHome/lang/nb.json
+++ b/plugins/CoreHome/lang/nb.json
@@ -1,12 +1,12 @@
{
"CoreHome": {
- "CategoryNoData": "Ingen data i denne kategorien. Prøv å velge \"Inkluder hele populasjon\".",
+ "CategoryNoData": "Ingen data i denne kategorien. Prøv å velge «Inkluder hele populasjonen».",
"CheckForUpdates": "Se etter oppdateringer",
"CheckPiwikOut": "Sjekk ut Piwik!",
"ClickToEditX": "Klikk for å redigere %s",
- "CloseWidgetDirections": "Du kan lukke dette elementet ved å klikke på X-ikonet på toppen av elementet.",
+ "CloseWidgetDirections": "Du kan lukke dette elementet ved å klikke på X-ikonet over widgeten.",
"DataForThisReportHasBeenPurged": "Dataene for denne rapporten er mer enn %s måneder gamle og har blitt fjernet.",
- "DataTableExcludeAggregateRows": "Aggregerte rader er vist som %s Skjul dem",
+ "DataTableExcludeAggregateRows": "Aggregerte rader vises %s Skjul dem",
"DataTableIncludeAggregateRows": "Aggregerte rader er skjult %s Vi dem",
"Default": "standard",
"DonateCall1": "Det vil aldri koste noe å bruke Piwik, men det betyr ikke at det ikke koster oss noe å lage.",
@@ -20,7 +20,7 @@
"IncludeRowsWithLowPopulation": "Rader med lav populasjon er skjult %s Vis alle rader",
"InjectedHostEmailBody": "Hei, jeg prøvde å få tilgang til Piwik i dag og ble møtt av «ukjent vertsnavn»-advarselen.",
"InjectedHostEmailSubject": "Piwik ble åpnet med et ukjent vertsnavn: %s",
- "InjectedHostNonSuperUserWarning": "%1$sKlikk her for å få sikker tilgang til Piwik%2$s og for å fjerne denne advarselen. Du ømsker kanskje også å kontakte din Piwik-administrator for å varsle dem om dette problemet (%3$sklikk her for å sende epost%4$s).",
+ "InjectedHostNonSuperUserWarning": "%1$sKlikk her for å få sikker tilgang til Piwik%2$s og for å fjerne denne advarselen. Du vil kanskje også kontakte din Piwik-administrator for å varsle dem om dette problemet (%3$sklikk her for å sende e-post%4$s).",
"InjectedHostSuperUserWarning": "Piwik kan være feilkonfigurert (for eksempel hvis Piwik nylig var flyttet til en ny tjener eller ny URL). Du kan enten %1$sklikke her og legge til %2$s som et gyldig Piwik-vertsnavn (hvis du stoler på det)%3$s eller %4$sklikk her og gå til %5$s for sikker tilgang til Piwik%6$s.",
"InjectedHostWarningIntro": "Du har tilgang til Piwik fra %1$s, men Piwik er konfigurert til å kjøre på adressen: %2$s",
"JavascriptDisabled": "JavaScript må være aktivert for at du skal kunne bruke Piwik i standardvisning.<br \/>Det ser ut til at JavaScript enten er deaktivert eller ikke støttet av din nettleser.<br \/>For å bruke standardvisning, må du aktivere JavaScript i nettleserinnstillingene og deretter %1$sprøve igjen%2$s.<br \/>",
@@ -28,13 +28,13 @@
"MakeOneTimeDonation": "Bidra med en engangsdonasjon i stedet.",
"Menu": "Meny",
"NoPrivilegesAskPiwikAdmin": "Du er logget inn som «%s», men det ser ut til at du ikke har noen rettigheter satt i Piwik. %s Be din Piwik-administrator (klikk for å sende e-post)%s å gi deg «vis»-tilgang til et nettsted.",
- "OnlyForSuperUserAccess": "Dette elementet er vises kun til brukere som har superbruker-tilgang.",
+ "OnlyForSuperUserAccess": "Denne widgeten vises kun til brukere som har superbruker-tilgang.",
"PageOf": "%1$s av %2$s",
- "PeriodRange": "Område",
+ "PeriodRange": "Periode",
"ReportGeneratedOn": "Rapport generert %s",
"ReportGeneratedXAgo": "Rapport generert %s siden",
"SharePiwikLong": "Hei! Jeg har nettopp funnet et bra stykke fri programvare: Piwik!\n\nPiwik lar deg spore besøkende på ditt nettsted gratis. Du bør definitivt prøve det ut.",
- "SharePiwikShort": "Piwik! Gratis og åpen kildekode web analyse. Du eier dataene.",
+ "SharePiwikShort": "Piwik! Gratis og åpen kildekode for nettstatistikk. Du eier dataene.",
"ShareThis": "Del dette",
"ShowJSCode": "Vis JavaScript-koden til å sette inn på din nettside.",
"SkipToContent": "Hopp til innhold",
@@ -48,6 +48,11 @@
"YouAreUsingTheLatestVersion": "Du bruker den nyeste versjonen av Piwik!",
"ClickRowToExpandOrContract": "Klikk denne raden for utvide eller slå sammen undertabellen.",
"UndoPivotBySubtable": "Denne rapporten er pivotert %s Angre pivot",
- "PivotBySubtable": "Denne rapporten er ikke pivotert %s Pivot etter %s"
+ "PivotBySubtable": "Denne rapporten er ikke pivotert %s Pivot etter %s",
+ "QuickAccessTitle": "Søk etter %s. Snarvei: Trykk «f» for å søke.",
+ "MenuEntries": "Menyvalg",
+ "Segments": "Segmenter",
+ "AdblockIsMaybeUsed": "Hvis du bruker en ad-blocker, vennligst deaktiver den for dette nettstedet for å forsikre deg om at Piwik fungerer som det skal.",
+ "ChangeCurrentWebsite": "Velg et nettsted. Nettstedet som nå er valgt er: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/pt-br.json b/plugins/CoreHome/lang/pt-br.json
index 69f02cb1ad..b7522980e0 100644
--- a/plugins/CoreHome/lang/pt-br.json
+++ b/plugins/CoreHome/lang/pt-br.json
@@ -52,6 +52,7 @@
"QuickAccessTitle": "Buscar por %s. Atalho: Tecle 'f' para buscar.",
"MenuEntries": "Itens do menu",
"Segments": "Segmentos",
- "AdblockIsMaybeUsed": "Caso você esteja usando um bloqueador de anúncios, por favor desative-o para este site, pois assim poderá certificar-se de que o Piwik funciona sem qualquer problema."
+ "AdblockIsMaybeUsed": "Caso você esteja usando um bloqueador de anúncios, por favor desative-o para este site, pois assim poderá certificar-se de que o Piwik funciona sem qualquer problema.",
+ "ChangeCurrentWebsite": "Escolha um website; website atualmente selecionado: %s"
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/lang/tr.json b/plugins/CoreHome/lang/tr.json
index 572a8f8459..eddff9951e 100644
--- a/plugins/CoreHome/lang/tr.json
+++ b/plugins/CoreHome/lang/tr.json
@@ -31,7 +31,7 @@
"ShowJSCode": "Eklenecek JavaScript kodu göster",
"SubscribeAndBecomePiwikSupporter": "Piwik Destekçisi olmak için güvenli bir kredi kartı ödeme sayfasına (Paypal) geçin!",
"SupportPiwik": "Piwike destek ol",
- "TableNoData": "Bu tablo için bir data yok.",
+ "TableNoData": "Bu tablo için bir veri yok.",
"ThereIsNoDataForThisReport": "Bu rapor için veri yok.",
"ViewAllPiwikVideoTutorials": "Tüm Piwik Yardım Videolarına Bak",
"WebAnalyticsReports": "Web Analiz Raporları",
diff --git a/plugins/CoreHome/stylesheets/coreHome.less b/plugins/CoreHome/stylesheets/coreHome.less
index 9be7d14879..ab4b749b02 100644
--- a/plugins/CoreHome/stylesheets/coreHome.less
+++ b/plugins/CoreHome/stylesheets/coreHome.less
@@ -177,28 +177,24 @@ div.pk-emptyGraph {
}
.Piwik_Popover_Error_Title {
- color: @theme-color-link;
- font-weight: bold;
font-size: 16px;
}
.Piwik_Popover_Error_Title span {
- color: #222;
font-weight: normal;
font-size: 16px;
}
.Piwik_Popover_Error_Message {
- color: #7e7363;
padding: 20px 0 0 0;
- font-size: 14px;
+ font-size: 13px;
}
a.Piwik_Popover_Error_Back {
display: block;
margin: 20px 0 0 0;
- color: #1D3256;
- font-size: 14px;
+ font-size: 13px;
+ text-decoration: underline;
}
#alert.ui-confirm input {
diff --git a/plugins/CoreHome/stylesheets/layout.less b/plugins/CoreHome/stylesheets/layout.less
index 5cffdf3be8..a398657c7c 100644
--- a/plugins/CoreHome/stylesheets/layout.less
+++ b/plugins/CoreHome/stylesheets/layout.less
@@ -30,7 +30,7 @@
height: 100%;
transition: background-color 150ms linear;
- &:hover {
+ &:hover, &:focus {
background-color: @theme-color-menu-contrast-background;
}
@@ -59,7 +59,7 @@
.navbar {
a {
text-decoration: none;
- &:hover, &:focus, &:active {
+ &:hover, &:focus {
text-decoration: none;
}
}
@@ -244,7 +244,7 @@
> .item {
cursor: default;
font-weight: bold;
- &:hover {
+ &:hover, &:focus {
text-decoration: none;
}
}
@@ -257,7 +257,7 @@
padding: 11px 22px 11px 45px;
decoration: none;
transition: background-color 200ms linear;
- &:hover {
+ &:hover, &:focus {
text-decoration: none;
color: @theme-color-menu-contrast-textActive;
}
@@ -300,7 +300,7 @@
font-size: 13px;
font-weight: normal;
- &:hover {
+ &:hover, &:focus {
color: @theme-color-menu-contrast-textActive;
}
@@ -325,7 +325,7 @@
> .item {
cursor: pointer;
- &:hover {
+ &:hover, &:focus {
color: @theme-color-menu-contrast-textActive;
}
}
@@ -388,7 +388,7 @@
border: 1px solid @theme-color-background-tinyContrast;
transition: box-shadow 150ms linear;
&.expanded,
- &:hover {
+ &:hover, &:focus {
box-shadow: 0 1px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);
}
}
diff --git a/plugins/CoreHome/templates/_dataTable.twig b/plugins/CoreHome/templates/_dataTable.twig
index 6bc35bca9e..697af2c9b6 100644
--- a/plugins/CoreHome/templates/_dataTable.twig
+++ b/plugins/CoreHome/templates/_dataTable.twig
@@ -12,7 +12,7 @@
data-params="{% if clientSideParameters is empty %}{}{% else %}{{ clientSideParameters|json_encode }}{% endif %}">
<div class="reportDocumentation">
{% if properties.documentation|default is not empty %}<p>{{ properties.documentation|raw }}</p>{% endif %}
- {% if reportLastUpdatedMessage is defined %}<span class='helpDate'>{{ reportLastUpdatedMessage }}</span>{% endif %}
+ {% if reportLastUpdatedMessage is defined %}<span class='helpDate'>{{ reportLastUpdatedMessage|raw }}</span>{% endif %}
</div>
<div class="dataTableWrapper">
{% if error is defined %}
diff --git a/plugins/CoreHome/templates/_menu.twig b/plugins/CoreHome/templates/_menu.twig
index 51b87bc301..94321a033f 100644
--- a/plugins/CoreHome/templates/_menu.twig
+++ b/plugins/CoreHome/templates/_menu.twig
@@ -1,10 +1,9 @@
-
{% macro menu(menu, anchorlink, cssClass, currentModule, currentAction) %}
<div id="secondNavBar" class="{{ cssClass }}">
<div id="search" ng-cloak>
<div piwik-quick-access class="borderedControl"></div>
</div>
- <ul class="navbar">
+ <ul class="navbar" role="menu">
{% for level1,level2 in menu %}
{% set hasSubmenuItem = false %}
@@ -15,7 +14,7 @@
{% endfor %}
{% if hasSubmenuItem %}
- <li class="menuTab">
+ <li class="menuTab" role="menuitem">
<a class="item">
<span class="menu-icon {{ level2._icon|default('icon-arrow-right') }}"></span>{{ level1|translate }}
@@ -23,12 +22,14 @@
{{ 'CoreHome_Menu'|translate }}
</span>
</a>
- <ul>
+ <ul role="menu">
{% for name,urlParameters in level2 %}
{% if name|slice(0,1) != '_' %}
<li {% if urlParameters._url.module is defined and urlParameters._url.module == currentModule and urlParameters._url.action is defined and urlParameters._url.action == currentAction %}class="active"{% endif %}
- >
+ role="menuitem"
+ >
<a class="item"
+ title="{{ urlParameters._tooltip|default(name)|translate|e('html_attr') }}"
href="index.php?{{ urlParameters._url|urlRewriteWithParameters|slice(1) }}">
{{ name|translate }}
</a>
diff --git a/plugins/CoreHome/templates/_siteSelectHeader.twig b/plugins/CoreHome/templates/_siteSelectHeader.twig
index 7353e2e07a..beacabd849 100644
--- a/plugins/CoreHome/templates/_siteSelectHeader.twig
+++ b/plugins/CoreHome/templates/_siteSelectHeader.twig
@@ -1,3 +1,3 @@
<div class="top_bar_sites_selector piwikTopControl">
- <div piwik-siteselector class="sites_autocomplete"></div>
+ <div piwik-siteselector show-selected-site="true" class="sites_autocomplete"></div>
</div> \ No newline at end of file
diff --git a/plugins/CoreHome/templates/_topBar.twig b/plugins/CoreHome/templates/_topBar.twig
index e69e9c1978..c1158f46bb 100644
--- a/plugins/CoreHome/templates/_topBar.twig
+++ b/plugins/CoreHome/templates/_topBar.twig
@@ -1,5 +1,5 @@
{{ postEvent("Template.beforeTopBar", userAlias, userLogin, topMenu, userMenu) }}
-<ul class="navbar-right">
+<ul role="menubar" class="navbar-right">
{% macro menuItemLabel(label, icon) %}
{% if icon is defined and icon and icon starts with 'icon-' %}
@@ -27,7 +27,7 @@
{% spaceless %}
{% for label,menu in topMenu %}
- <li>{{ _self.topMenuItem(label, menu, topMenuModule, topMenuAction) }}</li>
+ <li role="menuitem">{{ _self.topMenuItem(label, menu, topMenuModule, topMenuAction) }}</li>
{% endfor %}
{% endspaceless %}
diff --git a/plugins/CoreHome/tests/Integration/Column/UserIdTest.php b/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
index 33c268afae..70715a4dc2 100644
--- a/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
+++ b/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
@@ -12,6 +12,7 @@ use Piwik\Access;
use Piwik\Cache;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Db;
+use Piwik\Metrics;
use Piwik\Plugin\Manager;
use Piwik\Plugins\CoreHome\Columns\UserId;
use Piwik\Tests\Framework\Fixture;
@@ -164,6 +165,17 @@ class UserIdTest extends IntegrationTestCase
$this->assertDataTableHasUsers($this->getDataTableWithUsers());
}
+ public function test_hasDataTableUsers_shouldBeAbleToDetectIfNbUsersMetricIdIsused()
+ {
+ $table = $this->getDataTableWithZeroUsers();
+ $table->renameColumn('nb_users', Metrics::INDEX_NB_USERS);
+ $this->assertNotDataTableHasUsers($table);
+
+ $table = $this->getDataTableWithUsers();
+ $table->renameColumn('nb_users', Metrics::INDEX_NB_USERS);
+ $this->assertDataTableHasUsers($this->getDataTableWithUsers());
+ }
+
private function getDataTableWithoutUsersColumn()
{
$tableWithoutUsers = new DataTable();