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-10-15 16:43:35 +0300
committerThomas Steur <thomas.steur@gmail.com>2015-10-15 16:43:35 +0300
commitbb80b8f831e10f037c8d2722c9967943defef95e (patch)
tree3ce0a28cb1d15148cd15d48b83a39e0c92bf38b8 /plugins/Dashboard
parent713a124cc2c118697f3f2801679bc0e2bb5c5dc3 (diff)
parent1e139be2c8c3c6f974e740dd1c9f905e8f673f98 (diff)
Merge branch 'master' into 3.0
Conflicts: CHANGELOG.md core/Plugin/Controller.php core/Version.php plugins/API/ProcessedReport.php plugins/CoreHome/CoreHome.php plugins/CoreHome/javascripts/corehome.js plugins/CoreHome/javascripts/menu.js plugins/CoreHome/javascripts/menu_init.js plugins/CoreHome/lang/en.json plugins/CoreHome/stylesheets/zen-mode.less plugins/CoreHome/templates/ReportsByDimension/_reportsByDimension.twig plugins/CoreHome/templates/_indexContent.twig plugins/CoreHome/templates/getDefaultIndexView.twig plugins/Dashboard/Menu.php plugins/Dashboard/javascripts/dashboard.js plugins/Dashboard/javascripts/dashboardObject.js plugins/Goals/templates/_titleAndEvolutionGraph.twig plugins/Goals/templates/getOverviewView.twig plugins/Morpheus/javascripts/piwikHelper.js plugins/Referrers/templates/index.twig plugins/UserCountry/templates/index.twig plugins/VisitFrequency/templates/_sparklines.twig plugins/ZenMode/ZenMode.php plugins/ZenMode/javascripts/zen-mode.js tests/PHPUnit/Fixtures/UITestFixture.php tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml tests/UI/expected-ui-screenshots tests/UI/specs/Dashboard_spec.js tests/UI/specs/Menus_spec.js tests/UI/specs/UIIntegration_spec.js
Diffstat (limited to 'plugins/Dashboard')
-rw-r--r--plugins/Dashboard/Categories/DashboardCategory.php1
-rw-r--r--plugins/Dashboard/Dashboard.php81
-rw-r--r--plugins/Dashboard/DashboardManagerControl.php2
-rw-r--r--plugins/Dashboard/DashboardSettingsControlBase.php3
-rw-r--r--plugins/Dashboard/javascripts/dashboard.js10
-rw-r--r--plugins/Dashboard/javascripts/dashboardObject.js10
-rw-r--r--plugins/Dashboard/javascripts/widgetMenu.js9
-rw-r--r--plugins/Dashboard/lang/ko.json3
-rw-r--r--plugins/Dashboard/stylesheets/dashboard.less47
-rw-r--r--plugins/Dashboard/stylesheets/standalone.css9
-rw-r--r--plugins/Dashboard/stylesheets/widget.less2
-rw-r--r--plugins/Dashboard/templates/_dashboardSettings.twig8
-rw-r--r--plugins/Dashboard/templates/index.twig5
13 files changed, 106 insertions, 84 deletions
diff --git a/plugins/Dashboard/Categories/DashboardCategory.php b/plugins/Dashboard/Categories/DashboardCategory.php
index 99a3785c84..4fb9952385 100644
--- a/plugins/Dashboard/Categories/DashboardCategory.php
+++ b/plugins/Dashboard/Categories/DashboardCategory.php
@@ -14,4 +14,5 @@ class DashboardCategory extends Category
{
protected $id = 'Dashboard_Dashboard';
protected $order = 0;
+ protected $icon = 'icon-reporting-dashboard';
}
diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php
index 5a0a7cc0ec..f46bf1526f 100644
--- a/plugins/Dashboard/Dashboard.php
+++ b/plugins/Dashboard/Dashboard.php
@@ -35,35 +35,73 @@ class Dashboard extends \Piwik\Plugin
public function addWidgetConfigs(&$widgets)
{
- $dashboards = API::getInstance()->getDashboards();
-
- foreach ($dashboards as $dashboard) {
- $config = new WidgetConfig();
- $config->setIsNotWidgetizable();
- $config->setModule('Dashboard');
- $config->setAction('embeddedIndex');
- $config->setCategoryId('Dashboard_Dashboard');
- $config->setSubcategoryId($dashboard['id']);
- $config->setParameters(array('idDashboard' => $dashboard['id']));
- $widgets[] = $config;
+ if (Piwik::isUserIsAnonymous()) {
+ $this->addDefaultDashboard($widgets);
+ } else {
+ $dashboards = API::getInstance()->getDashboards();
+
+ if (empty($dashboards)) {
+ $this->addDefaultDashboard($widgets);
+ } else {
+ foreach ($dashboards as $dashboard) {
+ $config = new WidgetConfig();
+ $config->setIsNotWidgetizable();
+ $config->setModule('Dashboard');
+ $config->setAction('embeddedIndex');
+ $config->setCategoryId('Dashboard_Dashboard');
+ $config->setSubcategoryId($dashboard['id']);
+ $config->setParameters(array('idDashboard' => $dashboard['id']));
+ $widgets[] = $config;
+ }
+ }
}
}
+ private function addDefaultDashboard(&$widgets)
+ {
+ $config = new WidgetConfig();
+ $config->setIsNotWidgetizable();
+ $config->setModule('Dashboard');
+ $config->setAction('embeddedIndex');
+ $config->setCategoryId('Dashboard_Dashboard');
+ $config->setSubcategoryId('1');
+ $config->setParameters(array('idDashboard' => 1));
+ $widgets[] = $config;
+ }
+
public function addSubcategories(&$subcategories)
{
- $dashboards = API::getInstance()->getDashboards();
-
- $order = 0;
- foreach ($dashboards as $dashboard) {
- $subcategory = new Subcategory();
- $subcategory->setName($dashboard['name']);
- $subcategory->setCategoryId('Dashboard_Dashboard');
- $subcategory->setId($dashboard['id']);
- $subcategory->setOrder($order++);
- $subcategories[] = $subcategory;
+ if (Piwik::isUserIsAnonymous()) {
+ $this->addDefaultSubcategory($subcategories);
+ } else {
+ $dashboards = API::getInstance()->getDashboards();
+
+ if (empty($dashboards)) {
+ $this->addDefaultSubcategory($subcategories);
+ } else {
+ $order = 0;
+ foreach ($dashboards as $dashboard) {
+ $subcategory = new Subcategory();
+ $subcategory->setName($dashboard['name']);
+ $subcategory->setCategoryId('Dashboard_Dashboard');
+ $subcategory->setId($dashboard['id']);
+ $subcategory->setOrder($order++);
+ $subcategories[] = $subcategory;
+ }
+ }
}
}
+ private function addDefaultSubcategory(&$subcategories)
+ {
+ $subcategory = new Subcategory();
+ $subcategory->setName('Dashboard_Dashboard');
+ $subcategory->setCategoryId('Dashboard_Dashboard');
+ $subcategory->setId('1');
+ $subcategory->setOrder(1);
+ $subcategories[] = $subcategory;
+ }
+
/**
* Returns the layout in the DB for the given user, or false if the layout has not been set yet.
* Parameters must be checked BEFORE this function call
@@ -258,6 +296,7 @@ class Dashboard extends \Piwik\Plugin
$translationKeys[] = 'Dashboard_LoadingWidget';
$translationKeys[] = 'Dashboard_WidgetNotFound';
$translationKeys[] = 'Dashboard_DashboardCopied';
+ $translationKeys[] = 'Dashboard_Dashboard';
$translationKeys[] = 'General_Close';
$translationKeys[] = 'General_Refresh';
}
diff --git a/plugins/Dashboard/DashboardManagerControl.php b/plugins/Dashboard/DashboardManagerControl.php
index fb119e0083..df573903b3 100644
--- a/plugins/Dashboard/DashboardManagerControl.php
+++ b/plugins/Dashboard/DashboardManagerControl.php
@@ -20,7 +20,7 @@ class DashboardManagerControl extends DashboardSettingsControlBase
parent::__construct();
$this->jsClass = "DashboardManagerControl";
- $this->cssIdentifier = "dashboard-manager";
+ $this->cssIdentifier = "dashboard-manager piwikSelector";
$this->addDashboardActions();
$this->addGeneralActions();
diff --git a/plugins/Dashboard/DashboardSettingsControlBase.php b/plugins/Dashboard/DashboardSettingsControlBase.php
index 7275224082..c47ece211a 100644
--- a/plugins/Dashboard/DashboardSettingsControlBase.php
+++ b/plugins/Dashboard/DashboardSettingsControlBase.php
@@ -23,7 +23,8 @@ abstract class DashboardSettingsControlBase extends UIControl
{
parent::__construct();
- $this->cssClass = "piwikTopControl dashboardSettings";
+ $this->cssClass = "borderedControl piwikTopControl dashboardSettings";
+ $this->htmlAttributes = array('piwik-expand-on-click' => '');
$this->dashboardActions = array();
$this->generalActions = array();
}
diff --git a/plugins/Dashboard/javascripts/dashboard.js b/plugins/Dashboard/javascripts/dashboard.js
index 039f243c42..5a0396e6b3 100644
--- a/plugins/Dashboard/javascripts/dashboard.js
+++ b/plugins/Dashboard/javascripts/dashboard.js
@@ -161,7 +161,7 @@ function copyDashboardToUser() {
// on menu item click, trigger action event on this
var self = this;
this.$element.on('click', 'ul.submenu li[data-action]', function (e) {
- self.$element.toggleClass('visible');
+ self.$element.toggleClass('expanded');
$(self).trigger($(this).attr('data-action'));
});
@@ -169,7 +169,7 @@ function copyDashboardToUser() {
// open manager on open
this.$element.on('click', function (e) {
if ($(e.target).is('.dashboardSettings,.dashboardSettings>span')) {
- self.$element.toggleClass('visible');
+ self.$element.toggleClass('expanded');
// fix position
self.$element
@@ -186,7 +186,7 @@ function copyDashboardToUser() {
&& !$(e.target).is('.dashboardSettings')
) {
self.$element.widgetPreview('reset');
- self.$element.removeClass('visible');
+ self.$element.removeClass('expanded');
}
};
@@ -199,7 +199,7 @@ function copyDashboardToUser() {
},
onSelect: function (widgetUniqueId) {
var widget = widgetsHelper.getWidgetObjectFromUniqueId(widgetUniqueId);
- self.$element.removeClass('visible');
+ self.$element.removeClass('expanded');
self.widgetSelected(widget);
},
@@ -280,7 +280,7 @@ function copyDashboardToUser() {
},
hide: function () {
- this.$element.removeClass('visible');
+ this.$element.removeClass('expanded');
},
isWidgetAvailable: function (widgetUniqueId) {
diff --git a/plugins/Dashboard/javascripts/dashboardObject.js b/plugins/Dashboard/javascripts/dashboardObject.js
index 32c6c01a94..beb590c4f6 100644
--- a/plugins/Dashboard/javascripts/dashboardObject.js
+++ b/plugins/Dashboard/javascripts/dashboardObject.js
@@ -509,24 +509,26 @@
return $(this).attr('id').indexOf('Dashboard_embeddedIndex') == 0;
}).remove();
+ if (dashboards.length === 0) {
+ dashboards = [{iddashboard: 1, name: _pk_translate('Dashboard_Dashboard')}];
+ }
+
if (dashboards.length > 1
|| dashboardMenuListItems.length >= 1
) {
var items = [];
for (var i = 0; i < dashboards.length; i++) {
- var $link = $('<a/>').attr('data-idDashboard', dashboards[i].iddashboard).text(dashboards[i].name);
+ var $link = $('<a/>').attr('data-idDashboard', dashboards[i].iddashboard).text(dashboards[i].name).addClass('item title');
var $li = $('<li/>').attr('id', 'Dashboard_embeddedIndex_' + dashboards[i].iddashboard)
.addClass('dashboardMenuItem').append($link);
items.push($li);
if (dashboards[i].iddashboard == dashboardId) {
dashboardName = dashboards[i].name;
- $li.addClass('sfHover');
+ $li.addClass('active');
}
}
dashboardMenuList.prepend(items);
- } else {
- dashboardMenuList.hide();
}
dashboardMenuList.find('a[data-idDashboard]').click(function (e) {
diff --git a/plugins/Dashboard/javascripts/widgetMenu.js b/plugins/Dashboard/javascripts/widgetMenu.js
index 169768eb03..7190f342a5 100644
--- a/plugins/Dashboard/javascripts/widgetMenu.js
+++ b/plugins/Dashboard/javascripts/widgetMenu.js
@@ -288,7 +288,12 @@ widgetsHelper.loadWidgetAjax = function (widgetUniqueId, widgetParameters, onWid
if ($('.' + settings.categorylistClass + ' .' + settings.choosenClass, widgetPreview).length) {
var position = $('.' + settings.categorylistClass + ' .' + settings.choosenClass, widgetPreview).position().top -
- $('.' + settings.categorylistClass, widgetPreview).position().top;
+ $('.' + settings.categorylistClass, widgetPreview).position().top +
+ $('.dashboard-manager .addWidget').outerHeight();
+
+ if (!$('#content.admin').length) {
+ position += 10; // + padding defined in dashboard view
+ }
$('.' + settings.widgetlistClass, widgetPreview).css('top', position);
$('.' + settings.widgetlistClass, widgetPreview).css('marginBottom', position);
@@ -344,6 +349,7 @@ widgetsHelper.loadWidgetAjax = function (widgetUniqueId, widgetParameters, onWid
$('li', widgetList).on('click', function () {
if (!$('.widgetLoading', widgetPreview).length) {
settings.onSelect($(this).attr('uniqueid'));
+ $(widgetPreview).closest('.dashboard-manager').removeClass('expanded');
if (settings.resetOnSelect) {
resetWidgetPreview(widgetPreview);
}
@@ -405,6 +411,7 @@ widgetsHelper.loadWidgetAjax = function (widgetUniqueId, widgetParameters, onWid
settings.onPreviewLoaded(widgetUniqueId, widgetElement);
$('.' + settings.widgetpreviewClass + ' .widgetTop', widgetPreview).on('click', function () {
settings.onSelect(widgetUniqueId);
+ $(widgetPreview).closest('.dashboard-manager').removeClass('expanded');
if (settings.resetOnSelect) {
resetWidgetPreview(widgetPreview);
}
diff --git a/plugins/Dashboard/lang/ko.json b/plugins/Dashboard/lang/ko.json
index 995d08d2f3..535fe10319 100644
--- a/plugins/Dashboard/lang/ko.json
+++ b/plugins/Dashboard/lang/ko.json
@@ -10,7 +10,7 @@
"DashboardEmptyNotification": "대시보드에 위젯이 하나도 없습니다. 대시 보드 위젯을 추가하거나 대시 보드를 기본 위젯으로 재설정하세요.",
"DashboardName": "대시보드 이름:",
"DashboardOf": "%s의 대시보드",
- "DefaultDashboard": "기본 대시보드 - 기본 위젯과 열로 구성된 레이아웃을 사용합니다",
+ "DefaultDashboard": "기본 대시보드 - 기본 위젯으로 구성된 레이아웃을 사용합니다",
"DeleteWidgetConfirm": "대시보드에서 이 위젯을 삭제하시겠습니까?",
"EmptyDashboard": "빈 대시보드 - 원하는 위젯을 선택하세요",
"LoadingWidget": "위젯 로딩중, 잠시만 기다리세요...",
@@ -18,6 +18,7 @@
"Maximise": "최대화",
"Minimise": "최소화",
"NotUndo": "이 작업은 취소할 수 없습니다.",
+ "PluginDescription": "당신의 사이트를 분석한 대시보드입니다. 드래그 앤 드롭으로 새로운 위젯을 추가하거나 대시보드 레이아웃을 바꾸는 기능을 통해 당신만의 대시보드를 꾸며보세요. 모든 사용자들은 자신만의 대시보드를 가질 수 있습니다.",
"RemoveDashboard": "대시보드 삭제",
"RemoveDashboardConfirm": "정말 대시보드 \"%s\"를 삭제 하시겠습니까?",
"RenameDashboard": "대시보드 이름 변경",
diff --git a/plugins/Dashboard/stylesheets/dashboard.less b/plugins/Dashboard/stylesheets/dashboard.less
index fad10183e7..39ad2e3ed7 100644
--- a/plugins/Dashboard/stylesheets/dashboard.less
+++ b/plugins/Dashboard/stylesheets/dashboard.less
@@ -1,40 +1,21 @@
#dashboard {
- margin: 0 -7px;
+ margin: 0 -6px;
}
-#root>.top_controls {
- margin-left:15px;
- margin-right:15px;
+#standalone #dashboard {
+ margin: -10px -6px 0;
}
-.top_controls {
- position: relative;
- height: 32px;
- clear: left;
-}
-
-@media all and (max-width: 749px) {
- .top_controls {
- height: auto;
- }
- .top_controls #periodString,
- .top_controls .dashboardSettings,
- .top_controls .segmentEditorPanel {
- position: static !important;
- margin: 0 0 10px;
- float: none;
- }
-}
#dashboard {
.col {
min-height: 100px;
// Customize Bootstrap gutter between columns
- padding-right: 7px;
- padding-left: 7px;
+ padding-right: 6px;
+ padding-left: 6px;
>.sortable {
- padding: 5px 0 10px 0;
+ padding: 5px 0 8px 0;
}
}
}
@@ -152,10 +133,8 @@
z-index: 120;
background: #f7f7f7;
border: 1px solid #e4e5e4;
- padding: 5px 10px 6px 10px;
border-radius: 4px;
color: @theme-color-text-light;
- font-size: 14px;
cursor: pointer;
overflow: hidden;
}
@@ -165,9 +144,9 @@
border-color: #a9a399;
}
-.dashboardSettings.visible {
+.dashboardSettings.expanded {
z-index: 1020; /* More than .jqplot-seriespicker-popover (1010) */
- min-width: 700px;
+ min-width: 800px;
}
.dashboardSettings > span {
@@ -182,10 +161,9 @@
float: left;
}
-.dashboardSettings.visible ul.submenu {
+.dashboardSettings.expanded ul.submenu {
display: block;
list-style: square outside none;
- margin-left: 15px;
}
.dashboardSettings > ul.submenu > li {
@@ -328,7 +306,6 @@ div.widgetpreview-preview {
min-height: 0;
height: auto;
margin-right: 10px;
- min-width: 180px;
}
.dashboardSettings .submenu {
@@ -372,8 +349,8 @@ div.widgetpreview-preview {
display: none;
}
-.dashboardSettings.visible .widgetpreview-widgetlist,
-.dashboardSettings.visible .widgetpreview-preview {
+.dashboardSettings.expanded .widgetpreview-widgetlist,
+.dashboardSettings.expanded .widgetpreview-preview {
display: block;
}
@@ -416,7 +393,7 @@ div.widgetpreview-preview {
}
#dashboardWidgetsArea {
- margin-top: 5px;
+ margin-top: -5px;
}
@media all and (max-width: 749px) {
diff --git a/plugins/Dashboard/stylesheets/standalone.css b/plugins/Dashboard/stylesheets/standalone.css
index 5a2b0d90d9..292d3e63c0 100644
--- a/plugins/Dashboard/stylesheets/standalone.css
+++ b/plugins/Dashboard/stylesheets/standalone.css
@@ -45,17 +45,10 @@ body {
}
#Dashboard > ul > li:hover,
-#Dashboard > ul > li:hover a,
-#Dashboard > ul > li.sfHover,
-#Dashboard > ul > li.sfHover a {
+#Dashboard > ul > li:hover a {
color: #e87500;
}
-#Dashboard > ul > li.sfHover,
-#Dashboard > ul > li.sfHover a {
- font-weight: bold;
-}
-
.top_controls > #Dashboard,
.top_controls > #periodString,
.top_controls > .dashboardSettings {
diff --git a/plugins/Dashboard/stylesheets/widget.less b/plugins/Dashboard/stylesheets/widget.less
index a06564f033..558da41ab9 100644
--- a/plugins/Dashboard/stylesheets/widget.less
+++ b/plugins/Dashboard/stylesheets/widget.less
@@ -16,7 +16,7 @@
font-weight: normal;
font-size: 15px;
margin: 0;
- color: #0D0D0D;
+ color: @theme-color-text;
text-shadow: none;
padding: 15px 15px 10px 12px;
}
diff --git a/plugins/Dashboard/templates/_dashboardSettings.twig b/plugins/Dashboard/templates/_dashboardSettings.twig
index dc05a6dae1..b82e913743 100644
--- a/plugins/Dashboard/templates/_dashboardSettings.twig
+++ b/plugins/Dashboard/templates/_dashboardSettings.twig
@@ -1,12 +1,12 @@
-<span>{{ 'Dashboard_Dashboard'|translate }}</span>
-<ul class="submenu">
+<a class="title" title="{{ 'Dashboard_ManageDashboard'|translate|e('html_attr') }}"><span class="icon icon-arrow-bottom"></span>{{ 'Dashboard_Dashboard'|translate }} </a>
+<ul class="dropdown submenu">
<li>
- <div class="addWidget">{{ 'Dashboard_AddAWidget'|translate }} &darr;</div>
+ <div class="addWidget">{{ 'Dashboard_AddAWidget'|translate }}</div>
<ul class="widgetpreview-categorylist"></ul>
</li>
{% if dashboardActions|length > 0 %}
<li>
- <div class="manageDashboard">{{ 'Dashboard_ManageDashboard'|translate }} &darr;</div>
+ <div class="manageDashboard">{{ 'Dashboard_ManageDashboard'|translate }}</div>
<ul>
{% for action, title in dashboardActions %}
<li data-action="{{ action }}">{{ title|translate }}</li>
diff --git a/plugins/Dashboard/templates/index.twig b/plugins/Dashboard/templates/index.twig
index 0a8831fe3f..ddaac2428c 100644
--- a/plugins/Dashboard/templates/index.twig
+++ b/plugins/Dashboard/templates/index.twig
@@ -3,11 +3,12 @@
{% include "@CoreHome/_periodSelect.twig" %}
{{ postEvent("Template.nextToCalendar") }}
{% render dashboardSettingsControl %}
- <div id="Dashboard" class="piwikTopControl">
+ <div id="Dashboard" class="piwikTopControl borderedControl piwikSelector">
<ul>
{% for dashboard in dashboards %}
<li class="dashboardMenuItem" id="Dashboard_embeddedIndex_{{ dashboard.iddashboard }}">
- <a href="javascript:$('#dashboardWidgetsArea').dashboard('loadDashboard', {{ dashboard.iddashboard }});">{{ dashboard.name|escape }}</a>
+ <a href="javascript:$('#dashboardWidgetsArea').dashboard('loadDashboard', {{ dashboard.iddashboard }});"
+ class="title">{{ dashboard.name|escape }}</a>
</li>
{% endfor %}
</ul>