@@ -51,6 +51,10 class SearchController < ApplicationController | |||||
51 | @results = [] |
|
51 | @results = [] | |
52 | if @project |
|
52 | if @project | |
53 | @results += @project.issues.find(:all, :limit => limit, :include => :author, :conditions => [ (["(LOWER(subject) like ? OR LOWER(description) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort] ) if @scope.include? 'issues' |
|
53 | @results += @project.issues.find(:all, :limit => limit, :include => :author, :conditions => [ (["(LOWER(subject) like ? OR LOWER(description) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort] ) if @scope.include? 'issues' | |
|
54 | Journal.with_scope :find => {:conditions => ["#{Issue.table_name}.project_id = ?", @project.id]} do | |||
|
55 | @results += Journal.find(:all, :include => :issue, :limit => limit, :conditions => [ (["(LOWER(notes) like ? OR LOWER(notes) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort] ).collect(&:issue) if @scope.include? 'issues' | |||
|
56 | end | |||
|
57 | @results.uniq! | |||
54 | @results += @project.news.find(:all, :limit => limit, :conditions => [ (["(LOWER(title) like ? OR LOWER(description) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort], :include => :author ) if @scope.include? 'news' |
|
58 | @results += @project.news.find(:all, :limit => limit, :conditions => [ (["(LOWER(title) like ? OR LOWER(description) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort], :include => :author ) if @scope.include? 'news' | |
55 | @results += @project.documents.find(:all, :limit => limit, :conditions => [ (["(LOWER(title) like ? OR LOWER(description) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort] ) if @scope.include? 'documents' |
|
59 | @results += @project.documents.find(:all, :limit => limit, :conditions => [ (["(LOWER(title) like ? OR LOWER(description) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort] ) if @scope.include? 'documents' | |
56 | @results += @project.wiki.pages.find(:all, :limit => limit, :include => :content, :conditions => [ (["(LOWER(title) like ? OR LOWER(text) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort] ) if @project.wiki && @scope.include?('wiki') |
|
60 | @results += @project.wiki.pages.find(:all, :limit => limit, :include => :content, :conditions => [ (["(LOWER(title) like ? OR LOWER(text) like ?)"] * like_tokens.size).join(operator), * (like_tokens * 2).sort] ) if @project.wiki && @scope.include?('wiki') |
@@ -21,7 +21,12 module SearchHelper | |||||
21 | regexp = Regexp.new "(#{tokens.join('|')})", Regexp::IGNORECASE |
|
21 | regexp = Regexp.new "(#{tokens.join('|')})", Regexp::IGNORECASE | |
22 | result = '' |
|
22 | result = '' | |
23 | text.split(regexp).each_with_index do |words, i| |
|
23 | text.split(regexp).each_with_index do |words, i| | |
24 | result << (i.even? ? (words.length > 100 ? "#{words[0..44]} ... #{words[-45..-1]}" : words) : content_tag('span', words, :class => 'highlight')) |
|
24 | if result.length > 1200 | |
|
25 | # maximum length of the preview reached | |||
|
26 | result << '...' | |||
|
27 | break | |||
|
28 | end | |||
|
29 | result << (i.even? ? h(words.length > 100 ? "#{words[0..44]} ... #{words[-45..-1]}" : words) : content_tag('span', h(words), :class => 'highlight')) | |||
25 | end |
|
30 | end | |
26 | result |
|
31 | result | |
27 | end |
|
32 | end |
General Comments 0
You need to be logged in to leave comments.
Login now