Move files search to gitlab_git
This commit is contained in:
parent
9fdcdb774f
commit
f1126f494c
6 changed files with 38 additions and 39 deletions
|
@ -12,12 +12,17 @@ class SearchContext
|
|||
|
||||
projects = Project.where(id: project_ids)
|
||||
result[:projects] = projects.search(query).limit(10)
|
||||
if projects.length == 1
|
||||
result[:snippets] = projects.first.files(query, params[:branch_ref])
|
||||
end
|
||||
|
||||
# Search inside singe project
|
||||
result[:project] = project = projects.first if projects.length == 1
|
||||
|
||||
if params[:search_code].present?
|
||||
result[:blobs] = project.repository.search_files(query, params[:repository_ref]) unless project.empty_repo?
|
||||
else
|
||||
result[:merge_requests] = MergeRequest.where(project_id: project_ids).search(query).limit(10)
|
||||
result[:issues] = Issue.where(project_id: project_ids).search(query).limit(10)
|
||||
result[:wiki_pages] = []
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
|
@ -27,8 +32,7 @@ class SearchContext
|
|||
merge_requests: [],
|
||||
issues: [],
|
||||
wiki_pages: [],
|
||||
snippets: []
|
||||
blobs: []
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -15,9 +15,10 @@ class SearchController < ApplicationController
|
|||
result = SearchContext.new(project_ids, params).execute
|
||||
|
||||
@projects = result[:projects]
|
||||
@project = result[:project]
|
||||
@merge_requests = result[:merge_requests]
|
||||
@issues = result[:issues]
|
||||
@wiki_pages = result[:wiki_pages]
|
||||
@snippets = result[:snippets]
|
||||
@blobs = result[:blobs]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -410,16 +410,4 @@ class Project < ActiveRecord::Base
|
|||
def forked?
|
||||
!(forked_project_link.nil? || forked_project_link.forked_from_project.nil?)
|
||||
end
|
||||
|
||||
def files(query, treeish)
|
||||
snippets = []
|
||||
tree = treeish.present? ? treeish : default_branch
|
||||
if repository && !tree.nil?
|
||||
greps = repository.repo.grep(query, 3, tree)
|
||||
greps.each do |g|
|
||||
snippets << Gitlab::BlobSnippet.new(self, tree, g.content, g.startline, g.filename)
|
||||
end
|
||||
end
|
||||
snippets
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,13 +3,6 @@
|
|||
= text_field_tag "search", nil, placeholder: "Search", class: "search-input"
|
||||
= hidden_field_tag :group_id, @group.try(:id)
|
||||
= hidden_field_tag :project_id, @project.try(:id)
|
||||
- if @ref
|
||||
- @branch_ref = @ref
|
||||
- else
|
||||
- @branch_ref = @project.try(:default_branch)
|
||||
- if @branch_ref.blank?
|
||||
- @branch_ref = 'master'
|
||||
= hidden_field_tag :branch_ref, @branch_ref
|
||||
- if ENV['RAILS_ENV'] == 'test'
|
||||
= submit_tag 'Go'
|
||||
= hidden_field_tag :repository_ref, @ref
|
||||
= submit_tag 'Go' if ENV['RAILS_ENV'] == 'test'
|
||||
.search-autocomplete-json.hide{:'data-autocomplete-opts' => search_autocomplete_source }
|
|
@ -1,9 +1,20 @@
|
|||
%fieldset
|
||||
%legend
|
||||
Search results
|
||||
%span.cgray (#{@projects.count + @merge_requests.count + @issues.count + @wiki_pages.count})
|
||||
%span.cgray (#{@projects.count + @merge_requests.count + @issues.count + @wiki_pages.count + @blobs.count})
|
||||
|
||||
- if @project
|
||||
%ul.nav.nav-pills
|
||||
%li{class: ("active" if params[:search_code].present?)}
|
||||
= link_to search_path(params.merge(search_code: true)) do
|
||||
Repository Code
|
||||
%li{class: ("active" if params[:search_code].blank?)}
|
||||
= link_to search_path(params.merge(search_code: nil)) do
|
||||
Everything else
|
||||
|
||||
|
||||
.search_results
|
||||
%ul.well-list
|
||||
%ul.bordered-list
|
||||
- @projects.each do |project|
|
||||
%li
|
||||
project:
|
||||
|
@ -32,16 +43,17 @@
|
|||
%strong.term
|
||||
= truncate wiki_page.title, length: 50
|
||||
%span.light (#{wiki_page.project.name_with_namespace})
|
||||
- @snippets.each do |snippet|
|
||||
- @blobs.each do |file|
|
||||
%li
|
||||
code:
|
||||
= link_to project_blob_path(snippet.project, tree_join(snippet.tree, snippet.filename), :anchor => "L" + snippet.startline.to_s) do
|
||||
%strong.term
|
||||
= snippet.filename
|
||||
.file_holder
|
||||
.file_content.code
|
||||
.file_title
|
||||
= link_to project_blob_path(@project, tree_join(file.ref, file.filename), :anchor => "L" + file.startline.to_s) do
|
||||
%i.icon-file
|
||||
%strong
|
||||
= file.filename
|
||||
.file_content.code.term
|
||||
%div{class: user_color_scheme_class}
|
||||
= raw snippet.colorize( formatter: :gitlab, options: { first_line_number: snippet.startline } )
|
||||
= raw file.colorize( formatter: :gitlab, options: { first_line_number: file.startline } )
|
||||
|
||||
:javascript
|
||||
$(function() {
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
%span Looking for
|
||||
.input
|
||||
= search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search"
|
||||
= hidden_field_tag :search_code, params[:search_code]
|
||||
= submit_tag 'Search', class: "btn btn-primary wide"
|
||||
.clearfix
|
||||
.row
|
||||
|
|
Loading…
Reference in a new issue