FEATURE: topic:TOPIC_ID to search within topic

This commit is contained in:
Sam 2015-06-26 17:36:28 +10:00
parent 9e4080d825
commit 9a23a0bbbd
1 changed files with 15 additions and 6 deletions

View File

@ -95,18 +95,18 @@ class Search
end end
def initialize(term, opts=nil) def initialize(term, opts=nil)
term = process_advanced_search!(term)
if term.present?
@term = Search.prepare_data(term.to_s)
@original_term = PG::Connection.escape_string(@term)
end
@opts = opts || {} @opts = opts || {}
@guardian = @opts[:guardian] || Guardian.new @guardian = @opts[:guardian] || Guardian.new
@search_context = @opts[:search_context] @search_context = @opts[:search_context]
@include_blurbs = @opts[:include_blurbs] || false @include_blurbs = @opts[:include_blurbs] || false
@limit = Search.per_facet @limit = Search.per_facet
term = process_advanced_search!(term)
if term.present?
@term = Search.prepare_data(term.to_s)
@original_term = PG::Connection.escape_string(@term)
end
if @search_pms && @guardian.user if @search_pms && @guardian.user
@opts[:type_filter] = "private_messages" @opts[:type_filter] = "private_messages"
@search_context = @guardian.user @search_context = @guardian.user
@ -252,6 +252,15 @@ class Search
if word == 'order:latest' if word == 'order:latest'
@order = :latest @order = :latest
nil nil
elsif word =~ /topic:(\d+)/
topic_id = $1.to_i
if topic_id > 1
topic = Topic.find_by(id: topic_id)
if @guardian.can_see?(topic)
@search_context = topic
end
end
nil
elsif word == 'order:views' elsif word == 'order:views'
@order = :views @order = :views
nil nil