summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-13 00:06:18 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-13 00:06:18 +0000
commit4689bac80c8ab86e2b37abf217cc9b3404c5255f (patch)
treeb937709e651b6cc0fa7c768e8e930dc02fb5a564 /app
parent6e3880e2bb5a404467c64edc916d9edf7556d09d (diff)
downloadgitlab-ce-4689bac80c8ab86e2b37abf217cc9b3404c5255f.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/controllers/concerns/metrics_dashboard.rb28
-rw-r--r--app/services/metrics/dashboard/project_dashboard_service.rb3
-rw-r--r--app/services/metrics/dashboard/system_dashboard_service.rb3
3 files changed, 31 insertions, 3 deletions
diff --git a/app/controllers/concerns/metrics_dashboard.rb b/app/controllers/concerns/metrics_dashboard.rb
index b06b5d5a30c..dc392147cb8 100644
--- a/app/controllers/concerns/metrics_dashboard.rb
+++ b/app/controllers/concerns/metrics_dashboard.rb
@@ -4,6 +4,8 @@
# to the parameters specified by the controller.
module MetricsDashboard
include RenderServiceResults
+ include ChecksCollaboration
+
extend ActiveSupport::Concern
def metrics_dashboard
@@ -14,7 +16,7 @@ module MetricsDashboard
)
if include_all_dashboards? && result
- result[:all_dashboards] = dashboard_finder.find_all_paths(project_for_dashboard)
+ result[:all_dashboards] = all_dashboards
end
respond_to do |format|
@@ -30,6 +32,30 @@ module MetricsDashboard
private
+ def all_dashboards
+ dashboards = dashboard_finder.find_all_paths(project_for_dashboard)
+ dashboards.map do |dashboard|
+ amend_dashboard(dashboard)
+ end
+ end
+
+ def amend_dashboard(dashboard)
+ project_dashboard = project_for_dashboard && !dashboard[:system_dashboard]
+
+ dashboard[:can_edit] = project_dashboard ? can_edit?(dashboard) : false
+ dashboard[:project_blob_path] = project_dashboard ? dashboard_project_blob_path(dashboard) : nil
+
+ dashboard
+ end
+
+ def dashboard_project_blob_path(dashboard)
+ project_blob_path(project_for_dashboard, File.join(project_for_dashboard.default_branch, dashboard.fetch(:path, "")))
+ end
+
+ def can_edit?(dashboard)
+ can_collaborate_with_project?(project_for_dashboard, ref: project_for_dashboard.default_branch)
+ end
+
# Override in class to provide arguments to the finder.
def metrics_dashboard_params
{}
diff --git a/app/services/metrics/dashboard/project_dashboard_service.rb b/app/services/metrics/dashboard/project_dashboard_service.rb
index 756d387c0e6..b0d54ee9347 100644
--- a/app/services/metrics/dashboard/project_dashboard_service.rb
+++ b/app/services/metrics/dashboard/project_dashboard_service.rb
@@ -16,7 +16,8 @@ module Metrics
{
path: filepath,
display_name: name_for_path(filepath),
- default: false
+ default: false,
+ system_dashboard: false
}
end
end
diff --git a/app/services/metrics/dashboard/system_dashboard_service.rb b/app/services/metrics/dashboard/system_dashboard_service.rb
index ccfd9db8746..f8dbb8a705c 100644
--- a/app/services/metrics/dashboard/system_dashboard_service.rb
+++ b/app/services/metrics/dashboard/system_dashboard_service.rb
@@ -20,7 +20,8 @@ module Metrics
[{
path: SYSTEM_DASHBOARD_PATH,
display_name: SYSTEM_DASHBOARD_NAME,
- default: true
+ default: true,
+ system_dashboard: true
}]
end