From 48aff82709769b098321c738f3444b9bdaa694c6 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 21 Oct 2020 07:08:36 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-5-stable-ee --- app/helpers/search_helper.rb | 51 +++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 12 deletions(-) (limited to 'app/helpers/search_helper.rb') diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index d55ad878b92..3467f6e9a44 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -1,14 +1,13 @@ # frozen_string_literal: true module SearchHelper - SEARCH_PERMITTED_PARAMS = [:search, :scope, :project_id, :group_id, :repository_ref, :snippets, :state].freeze + SEARCH_PERMITTED_PARAMS = [:search, :scope, :project_id, :group_id, :repository_ref, :snippets, :sort, :state, :confidential].freeze def search_autocomplete_opts(term) return unless current_user resources_results = [ - recent_merge_requests_autocomplete(term), - recent_issues_autocomplete(term), + recent_items_autocomplete(term), groups_autocomplete(term), projects_autocomplete(term) ].flatten @@ -27,6 +26,10 @@ module SearchHelper end end + def recent_items_autocomplete(term) + recent_merge_requests_autocomplete(term) + recent_issues_autocomplete(term) + end + def search_entries_info(collection, scope, term) return if collection.to_a.empty? @@ -86,13 +89,18 @@ module SearchHelper }).html_safe end + def repository_ref(project) + # Always #to_s the repository_ref param in case the value is also a number + params[:repository_ref].to_s.presence || project.default_branch + end + # Overridden in EE def search_blob_title(project, path) path end def search_service - @search_service ||= ::SearchService.new(current_user, params) + @search_service ||= ::SearchService.new(current_user, params.merge(confidential: Gitlab::Utils.to_boolean(params[:confidential]))) end private @@ -123,8 +131,7 @@ module SearchHelper { category: "Help", label: _("Rake Tasks Help"), url: help_page_path("raketasks/README") }, { category: "Help", label: _("SSH Keys Help"), url: help_page_path("ssh/README") }, { category: "Help", label: _("System Hooks Help"), url: help_page_path("system_hooks/system_hooks") }, - { category: "Help", label: _("Webhooks Help"), url: help_page_path("user/project/integrations/webhooks") }, - { category: "Help", label: _("Workflow Help"), url: help_page_path("workflow/README") } + { category: "Help", label: _("Webhooks Help"), url: help_page_path("user/project/integrations/webhooks") } ] end @@ -181,10 +188,10 @@ module SearchHelper end end - def recent_merge_requests_autocomplete(term, limit = 5) + def recent_merge_requests_autocomplete(term) return [] unless current_user - ::Gitlab::Search::RecentMergeRequests.new(user: current_user).search(term).limit(limit).map do |mr| + ::Gitlab::Search::RecentMergeRequests.new(user: current_user).search(term).map do |mr| { category: "Recent merge requests", id: mr.id, @@ -195,10 +202,10 @@ module SearchHelper end end - def recent_issues_autocomplete(term, limit = 5) + def recent_issues_autocomplete(term) return [] unless current_user - ::Gitlab::Search::RecentIssues.new(user: current_user).search(term).limit(limit).map do |i| + ::Gitlab::Search::RecentIssues.new(user: current_user).search(term).map do |i| { category: "Recent issues", id: i.id, @@ -255,11 +262,15 @@ module SearchHelper opts[:data]['labels-endpoint'] = project_labels_path(@project) opts[:data]['milestones-endpoint'] = project_milestones_path(@project) opts[:data]['releases-endpoint'] = project_releases_path(@project) + opts[:data]['environments-endpoint'] = + unfoldered_environment_names_project_path(@project) elsif @group.present? opts[:data]['group-id'] = @group.id opts[:data]['labels-endpoint'] = group_labels_path(@group) opts[:data]['milestones-endpoint'] = group_milestones_path(@group) opts[:data]['releases-endpoint'] = group_releases_path(@group) + opts[:data]['environments-endpoint'] = + unfoldered_environment_names_group_path(@group) else opts[:data]['labels-endpoint'] = dashboard_labels_path opts[:data]['milestones-endpoint'] = dashboard_milestones_path @@ -294,9 +305,25 @@ module SearchHelper sanitize(html, tags: %w(a p ol ul li pre code)) end - def show_user_search_tab? - return false if Feature.disabled?(:users_search, default_enabled: true) + def simple_search_highlight_and_truncate(text, phrase, options = {}) + text = Truncato.truncate( + text, + count_tags: false, + count_tail: false, + max_length: options.delete(:length) { 200 } + ) + + highlight(text, phrase.split, options) + end + + # _search_highlight is used in EE override + def highlight_and_truncate_issue(issue, search_term, _search_highlight) + return unless issue.description.present? + simple_search_highlight_and_truncate(issue.description, search_term, highlighter: '\1') + end + + def show_user_search_tab? if @project project_search_tabs?(:members) else -- cgit v1.2.3