fix search for multiple words, #505240
[opensuse:software-o-o.git] / app / controllers / search_controller.rb
1 class SearchController < ApplicationController
2   layout "application"
3
4   def index
5     if params[:baseproject]
6       @baseproject = params[:baseproject]
7
8       # this can get removed, when 11.2 is released and available in OBS
9       if @baseproject == "openSUSE:11.2"
10          @baseproject = "openSUSE:Factory"
11       end
12
13     end
14     if params[:q]
15       perform_search
16     end
17   end
18
19   def search
20     if perform_search
21       render :partial => "search_result"
22     else
23       render :text => "Search strings must have at least 2 characters."
24     end
25   end
26
27
28   private
29   
30   def perform_search
31     @query = params[:q]
32     @baseproject = params[:baseproject]
33     cookies[:search_baseproject] = { :value => @baseproject, :expires => 1.month.from_now }
34     @current_page = params[:p].to_i
35     @current_page = 1 if @current_page == 0
36
37     return false if @query.length < 2
38     if @query =~ / /
39       return false if @query.split(" ").select{|e| e.length < 2 }.size > 0
40
41     end
42
43     base = @baseproject=="ALL" ? "" : @baseproject
44     @result = Seeker.prepare_result(CGI.escape(@query).gsub("+", " "), base)
45     return true
46   end 
47 end