Commit f1126f49 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Move files search to gitlab_git

parent 9fdcdb77
...@@ -12,12 +12,17 @@ class SearchContext ...@@ -12,12 +12,17 @@ class SearchContext
projects = Project.where(id: project_ids) projects = Project.where(id: project_ids)
result[:projects] = projects.search(query).limit(10) result[:projects] = projects.search(query).limit(10)
if projects.length == 1
result[:snippets] = projects.first.files(query, params[:branch_ref]) # Search inside singe project
end 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[: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[:issues] = Issue.where(project_id: project_ids).search(query).limit(10)
result[:wiki_pages] = [] result[:wiki_pages] = []
end
result result
end end
...@@ -27,8 +32,7 @@ class SearchContext ...@@ -27,8 +32,7 @@ class SearchContext
merge_requests: [], merge_requests: [],
issues: [], issues: [],
wiki_pages: [], wiki_pages: [],
snippets: [] blobs: []
} }
end end
end end
...@@ -15,9 +15,10 @@ class SearchController < ApplicationController ...@@ -15,9 +15,10 @@ class SearchController < ApplicationController
result = SearchContext.new(project_ids, params).execute result = SearchContext.new(project_ids, params).execute
@projects = result[:projects] @projects = result[:projects]
@project = result[:project]
@merge_requests = result[:merge_requests] @merge_requests = result[:merge_requests]
@issues = result[:issues] @issues = result[:issues]
@wiki_pages = result[:wiki_pages] @wiki_pages = result[:wiki_pages]
@snippets = result[:snippets] @blobs = result[:blobs]
end end
end end
...@@ -410,16 +410,4 @@ class Project < ActiveRecord::Base ...@@ -410,16 +410,4 @@ class Project < ActiveRecord::Base
def forked? def forked?
!(forked_project_link.nil? || forked_project_link.forked_from_project.nil?) !(forked_project_link.nil? || forked_project_link.forked_from_project.nil?)
end 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 end
...@@ -3,13 +3,6 @@ ...@@ -3,13 +3,6 @@
= text_field_tag "search", nil, placeholder: "Search", class: "search-input" = text_field_tag "search", nil, placeholder: "Search", class: "search-input"
= hidden_field_tag :group_id, @group.try(:id) = hidden_field_tag :group_id, @group.try(:id)
= hidden_field_tag :project_id, @project.try(:id) = hidden_field_tag :project_id, @project.try(:id)
- if @ref = hidden_field_tag :repository_ref, @ref
- @branch_ref = @ref = submit_tag 'Go' if ENV['RAILS_ENV'] == 'test'
- 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'
.search-autocomplete-json.hide{:'data-autocomplete-opts' => search_autocomplete_source } .search-autocomplete-json.hide{:'data-autocomplete-opts' => search_autocomplete_source }
%fieldset %fieldset
%legend %legend
Search results 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 .search_results
%ul.well-list %ul.bordered-list
- @projects.each do |project| - @projects.each do |project|
%li %li
project: project:
...@@ -32,16 +43,17 @@ ...@@ -32,16 +43,17 @@
%strong.term %strong.term
= truncate wiki_page.title, length: 50 = truncate wiki_page.title, length: 50
%span.light (#{wiki_page.project.name_with_namespace}) %span.light (#{wiki_page.project.name_with_namespace})
- @snippets.each do |snippet| - @blobs.each do |file|
%li %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_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} %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 :javascript
$(function() { $(function() {
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
%span Looking for %span Looking for
.input .input
= search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search" = 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" = submit_tag 'Search', class: "btn btn-primary wide"
.clearfix .clearfix
.row .row
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment