diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 01:45:44 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 01:45:44 +0000 |
commit | 85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch) | |
tree | 9160f299afd8c80c038f08e1545be119f5e3f1e1 /app/helpers/search_helper.rb | |
parent | 15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff) | |
download | gitlab-ce-85dc423f7090da0a52c73eb66faf22ddb20efff9.tar.gz |
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'app/helpers/search_helper.rb')
-rw-r--r-- | app/helpers/search_helper.rb | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index 377aee1ae9e..d55ad878b92 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -1,12 +1,14 @@ # frozen_string_literal: true module SearchHelper - SEARCH_PERMITTED_PARAMS = [:search, :scope, :project_id, :group_id, :repository_ref, :snippets].freeze + SEARCH_PERMITTED_PARAMS = [:search, :scope, :project_id, :group_id, :repository_ref, :snippets, :state].freeze def search_autocomplete_opts(term) return unless current_user resources_results = [ + recent_merge_requests_autocomplete(term), + recent_issues_autocomplete(term), groups_autocomplete(term), projects_autocomplete(term) ].flatten @@ -178,6 +180,34 @@ module SearchHelper } end end + + def recent_merge_requests_autocomplete(term, limit = 5) + return [] unless current_user + + ::Gitlab::Search::RecentMergeRequests.new(user: current_user).search(term).limit(limit).map do |mr| + { + category: "Recent merge requests", + id: mr.id, + label: search_result_sanitize(mr.title), + url: merge_request_path(mr), + avatar_url: mr.project.avatar_url || '' + } + end + end + + def recent_issues_autocomplete(term, limit = 5) + return [] unless current_user + + ::Gitlab::Search::RecentIssues.new(user: current_user).search(term).limit(limit).map do |i| + { + category: "Recent issues", + id: i.id, + label: search_result_sanitize(i.title), + url: issue_path(i), + avatar_url: i.project.avatar_url || '' + } + end + end # rubocop: enable CodeReuse/ActiveRecord def search_result_sanitize(str) @@ -250,15 +280,16 @@ module SearchHelper # Sanitize a HTML field for search display. Most tags are stripped out and the # maximum length is set to 200 characters. - def search_md_sanitize(object, field) - html = markdown_field(object, field) - html = Truncato.truncate( - html, + def search_md_sanitize(source) + source = Truncato.truncate( + source, count_tags: false, count_tail: false, max_length: 200 ) + html = markdown(source) + # Truncato's filtered_tags and filtered_attributes are not quite the same sanitize(html, tags: %w(a p ol ul li pre code)) end |