summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/metrics_dashboard.rb
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/controllers/concerns/metrics_dashboard.rb
parent6e3880e2bb5a404467c64edc916d9edf7556d09d (diff)
downloadgitlab-ce-4689bac80c8ab86e2b37abf217cc9b3404c5255f.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/controllers/concerns/metrics_dashboard.rb')
-rw-r--r--app/controllers/concerns/metrics_dashboard.rb28
1 files changed, 27 insertions, 1 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
{}