From f2698e05ebaefc8eb14ce9326c97a6367ee5e33c Mon Sep 17 00:00:00 2001 From: Mario de la Ossa Date: Tue, 21 May 2019 22:04:19 -0600 Subject: Backport of 10854-elasticsearch_avoid_db --- app/controllers/search_controller.rb | 1 + app/models/project_feature.rb | 2 ++ app/services/search_service.rb | 4 ++++ app/views/search/_results.html.haml | 2 +- app/views/search/results/_issue.html.haml | 2 +- app/views/search/results/_merge_request.html.haml | 2 +- app/views/search/results/_milestone.html.haml | 2 +- lib/gitlab/search_results.rb | 4 ++++ 8 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index a80ab3bcd28..cb25548c83f 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -25,6 +25,7 @@ class SearchController < ApplicationController @show_snippets = search_service.show_snippets? @search_results = search_service.search_results @search_objects = search_service.search_objects + @display_options = search_service.display_options render_commits if @scope == 'commits' eager_load_user_status if @scope == 'users' diff --git a/app/models/project_feature.rb b/app/models/project_feature.rb index 0542581c6e0..6bcb051bff6 100644 --- a/app/models/project_feature.rb +++ b/app/models/project_feature.rb @@ -72,6 +72,8 @@ class ProjectFeature < ApplicationRecord default_value_for :wiki_access_level, value: ENABLED, allows_nil: false default_value_for :repository_access_level, value: ENABLED, allows_nil: false + scope :for_project_id, -> (project) { where(project: project) } + def feature_available?(feature, user) # This feature might not be behind a feature flag at all, so default to true return false unless ::Feature.enabled?(feature, user, default_enabled: true) diff --git a/app/services/search_service.rb b/app/services/search_service.rb index e0cbfac2420..302510341ac 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -52,6 +52,10 @@ class SearchService @search_objects ||= search_results.objects(scope, params[:page]) end + def display_options + @display_options ||= search_results.display_options(scope) + end + private def search_service diff --git a/app/views/search/_results.html.haml b/app/views/search/_results.html.haml index cb8a8a24be8..12eb8d7fa81 100644 --- a/app/views/search/_results.html.haml +++ b/app/views/search/_results.html.haml @@ -21,7 +21,7 @@ .search-results - if @scope == 'projects' .term - = render 'shared/projects/list', projects: @search_objects, pipeline_status: false + = render 'shared/projects/list', { projects: @search_objects, pipeline_status: false }.merge(@display_options) - else - locals = { projects: blob_projects(@search_objects) } if %w[blobs wiki_blobs].include?(@scope) = render partial: "search/results/#{@scope.singularize}", collection: @search_objects, locals: locals diff --git a/app/views/search/results/_issue.html.haml b/app/views/search/results/_issue.html.haml index 796782035f2..1f055cdfa31 100644 --- a/app/views/search/results/_issue.html.haml +++ b/app/views/search/results/_issue.html.haml @@ -1,7 +1,7 @@ .search-result-row %h4 = confidential_icon(issue) - = link_to [issue.project.namespace.becomes(Namespace), issue.project, issue] do + = link_to namespace_project_issue_path(issue.project.namespace.becomes(Namespace), issue.project, issue) do %span.term.str-truncated= issue.title - if issue.closed? %span.badge.badge-danger.prepend-left-5= _("Closed") diff --git a/app/views/search/results/_merge_request.html.haml b/app/views/search/results/_merge_request.html.haml index f0e0af11f27..074bb9bce8d 100644 --- a/app/views/search/results/_merge_request.html.haml +++ b/app/views/search/results/_merge_request.html.haml @@ -1,6 +1,6 @@ .search-result-row %h4 - = link_to [merge_request.target_project.namespace.becomes(Namespace), merge_request.target_project, merge_request] do + = link_to namespace_project_merge_request_path(merge_request.target_project.namespace.becomes(Namespace), merge_request.target_project, merge_request) do %span.term.str-truncated= merge_request.title - if merge_request.merged? %span.badge.badge-primary.prepend-left-5= _("Merged") diff --git a/app/views/search/results/_milestone.html.haml b/app/views/search/results/_milestone.html.haml index 2daa96e34d1..3201f1a7815 100644 --- a/app/views/search/results/_milestone.html.haml +++ b/app/views/search/results/_milestone.html.haml @@ -1,6 +1,6 @@ .search-result-row %h4 - = link_to [milestone.project.namespace.becomes(Namespace), milestone.project, milestone] do + = link_to namespace_project_milestone_path(milestone.project.namespace.becomes(Namespace), milestone.project, milestone) do %span.term.str-truncated= milestone.title - if milestone.description.present? diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb index 7c1e6b1baff..3daa03d01d6 100644 --- a/lib/gitlab/search_results.rb +++ b/lib/gitlab/search_results.rb @@ -85,6 +85,10 @@ module Gitlab UsersFinder.new(current_user, search: query).execute end + def display_options(_scope) + {} + end + private def projects -- cgit v1.2.1