summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <valery@gitlab.com>2017-05-29 16:52:02 +0300
committerValery Sizov <valery@gitlab.com>2017-05-29 19:59:24 +0300
commitbe9ffbafbba1b105bba3102cf7b5d93296478223 (patch)
treee155d29d88257cb4b57ab13b96dc57d497053175
parent1a424a9bc9cf1fbabd70ac2384978ae94674e6d7 (diff)
downloadgitlab-ce-30917-wiki-is-not-searchable-with-guest-permissions.tar.gz
Create a separate helper to check if we show particular tab on a search page30917-wiki-is-not-searchable-with-guest-permissions
-rw-r--r--app/helpers/projects_helper.rb33
-rw-r--r--app/helpers/search_helper.rb6
-rw-r--r--app/views/search/_category.html.haml14
3 files changed, 32 insertions, 21 deletions
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 98bbcfaaba5..835473430c8 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -85,6 +85,12 @@ module ProjectsHelper
@nav_tabs ||= get_project_nav_tabs(@project, current_user)
end
+ def project_search_tabs?(tab)
+ abilities = Array(search_tab_ability_map[tab])
+
+ abilities.any? { |ability| can?(current_user, ability, @project) }
+ end
+
def project_nav_tab?(name)
project_nav_tabs.include? name
end
@@ -203,7 +209,17 @@ module ProjectsHelper
nav_tabs << :container_registry
end
- tab_ability_map = {
+ tab_ability_map.each do |tab, ability|
+ if can?(current_user, ability, project)
+ nav_tabs << tab
+ end
+ end
+
+ nav_tabs.flatten
+ end
+
+ def tab_ability_map
+ {
environments: :read_environment,
milestones: :read_milestone,
pipelines: :read_pipeline,
@@ -215,14 +231,15 @@ module ProjectsHelper
team: :read_project_member,
wiki: :read_wiki
}
+ end
- tab_ability_map.each do |tab, ability|
- if can?(current_user, ability, project)
- nav_tabs << tab
- end
- end
-
- nav_tabs.flatten
+ def search_tab_ability_map
+ @search_tab_ability_map ||= tab_ability_map.merge(
+ blobs: :download_code,
+ commits: :download_code,
+ merge_requests: :read_merge_request,
+ notes: [:read_merge_request, :download_code, :read_issue, :read_project_snippet]
+ )
end
def project_lfs_status(project)
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index 9021525784d..9c46035057f 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -33,12 +33,6 @@ module SearchHelper
def parse_search_result(result)
Gitlab::ProjectSearchResults.parse_search_result(result)
end
-
- def show_notes_tab?
- [:read_merge_request, :download_code, :read_issue, :read_project_snippet].all? do |ability|
- can?(current_user, :read_merge_request, @project)
- end
- end
private
diff --git a/app/views/search/_category.html.haml b/app/views/search/_category.html.haml
index df73fb173a8..314d8e9cb25 100644
--- a/app/views/search/_category.html.haml
+++ b/app/views/search/_category.html.haml
@@ -3,43 +3,43 @@
.fade-right= icon('angle-right')
%ul.nav-links.search-filter.scrolling-tabs
- if @project
- - if can?(current_user, :download_code, @project)
+ - if project_search_tabs?(:blobs)
%li{ class: active_when(@scope == 'blobs') }
= link_to search_filter_path(scope: 'blobs') do
Code
%span.badge
= @search_results.blobs_count
- - if can?(current_user, :read_issue, @project)
+ - if project_search_tabs?(:issues)
%li{ class: active_when(@scope == 'issues') }
= link_to search_filter_path(scope: 'issues') do
Issues
%span.badge
= @search_results.issues_count
- - if can?(current_user, :read_merge_request, @project)
+ - if project_search_tabs?(:merge_requests)
%li{ class: active_when(@scope == 'merge_requests') }
= link_to search_filter_path(scope: 'merge_requests') do
Merge requests
%span.badge
= @search_results.merge_requests_count
- - if can?(current_user, :read_milestone, @project)
+ - if project_search_tabs?(:milestones)
%li{ class: active_when(@scope == 'milestones') }
= link_to search_filter_path(scope: 'milestones') do
Milestones
%span.badge
= @search_results.milestones_count
- - if show_notes_tab?
+ - if project_search_tabs?(:notes)
%li{ class: active_when(@scope == 'notes') }
= link_to search_filter_path(scope: 'notes') do
Comments
%span.badge
= @search_results.notes_count
- - if can?(current_user, :read_wiki, @project)
+ - if project_search_tabs?(:wiki)
%li{ class: active_when(@scope == 'wiki_blobs') }
= link_to search_filter_path(scope: 'wiki_blobs') do
Wiki
%span.badge
= @search_results.wiki_blobs_count
- - if can?(current_user, :download_code, @project)
+ - if project_search_tabs?(:commits)
%li{ class: active_when(@scope == 'commits') }
= link_to search_filter_path(scope: 'commits') do
Commits