summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-09 16:50:43 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-09 16:50:43 +0300
commit0e78d00bcb8fd0214fb6c592c7b2814f7a70cd42 (patch)
tree0ea5b75d650fc92b82c9da193c5ce8d9e2d98ddd
parent04cf074552a047c1b50c54d38a1fd18c7b64c784 (diff)
parent9edf6d4dd08d3bd74df22645a919dbf26d22faf7 (diff)
downloadgitlab-ce-0e78d00bcb8fd0214fb6c592c7b2814f7a70cd42.tar.gz
Merge pull request #7695 from coverer/search_wiki
Added search wiki feature
-rw-r--r--app/controllers/search_controller.rb3
-rw-r--r--app/views/search/_project_filter.html.haml6
-rw-r--r--app/views/search/results/_wiki_blob.html.haml9
-rw-r--r--lib/gitlab/project_search_results.rb18
4 files changed, 34 insertions, 2 deletions
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 58ec8e75d7a..55926a1ed22 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -10,7 +10,8 @@ class SearchController < ApplicationController
@search_results = if @project
return access_denied! unless can?(current_user, :download_code, @project)
- unless %w(blobs notes issues merge_requests).include?(@scope)
+ unless %w(blobs notes issues merge_requests wiki_blobs).
+ include?(@scope)
@scope = 'blobs'
end
diff --git a/app/views/search/_project_filter.html.haml b/app/views/search/_project_filter.html.haml
index 36947675d18..57a45c9acb6 100644
--- a/app/views/search/_project_filter.html.haml
+++ b/app/views/search/_project_filter.html.haml
@@ -23,3 +23,9 @@
Comments
.pull-right
= @search_results.notes_count
+ %li{class: ("active" if @scope == 'wiki_blobs')}
+ = link_to search_filter_path(scope: 'wiki_blobs') do
+ Wiki
+ .pull-right
+ = @search_results.wiki_blobs_count
+
diff --git a/app/views/search/results/_wiki_blob.html.haml b/app/views/search/results/_wiki_blob.html.haml
new file mode 100644
index 00000000000..75414d73b0c
--- /dev/null
+++ b/app/views/search/results/_wiki_blob.html.haml
@@ -0,0 +1,9 @@
+.blob-result
+ .file-holder
+ .file-title
+ = link_to project_wiki_path(@project, wiki_blob.filename) do
+ %i.icon-file
+ %strong
+ = wiki_blob.filename
+ .file-content.code.term
+ = render 'shared/file_hljs', blob: wiki_blob, first_line_number: wiki_blob.startline
diff --git a/lib/gitlab/project_search_results.rb b/lib/gitlab/project_search_results.rb
index 90511662b20..409177cb8bd 100644
--- a/lib/gitlab/project_search_results.rb
+++ b/lib/gitlab/project_search_results.rb
@@ -14,13 +14,16 @@ module Gitlab
notes.page(page).per(per_page)
when 'blobs'
Kaminari.paginate_array(blobs).page(page).per(per_page)
+ when 'wiki_blobs'
+ Kaminari.paginate_array(wiki_blobs).page(page).per(per_page)
else
super
end
end
def total_count
- @total_count ||= issues_count + merge_requests_count + blobs_count + notes_count
+ @total_count ||= issues_count + merge_requests_count + blobs_count +
+ notes_count + wiki_blobs_count
end
def blobs_count
@@ -31,6 +34,10 @@ module Gitlab
@notes_count ||= notes.count
end
+ def wiki_blobs_count
+ @wiki_blobs_count ||= wiki_blobs.count
+ end
+
private
def blobs
@@ -41,6 +48,15 @@ module Gitlab
end
end
+ def wiki_blobs
+ if !project.wiki_enabled?
+ []
+ else
+ Repository.new(ProjectWiki.new(project).path_with_namespace).
+ search_files(query)
+ end
+ end
+
def notes
Note.where(project_id: limit_project_ids).search(query).order('updated_at DESC')
end