diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-13 00:06:18 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-13 00:06:18 +0000 |
commit | 4689bac80c8ab86e2b37abf217cc9b3404c5255f (patch) | |
tree | b937709e651b6cc0fa7c768e8e930dc02fb5a564 /app | |
parent | 6e3880e2bb5a404467c64edc916d9edf7556d09d (diff) | |
download | gitlab-ce-4689bac80c8ab86e2b37abf217cc9b3404c5255f.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/concerns/metrics_dashboard.rb | 28 | ||||
-rw-r--r-- | app/services/metrics/dashboard/project_dashboard_service.rb | 3 | ||||
-rw-r--r-- | app/services/metrics/dashboard/system_dashboard_service.rb | 3 |
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 |