no longer read the prject cookie in rails
[opensuse:software-o-o.git] / app / controllers / search_controller.rb
1 class SearchController < ApplicationController
2   layout "application"
3
4   def index
5     if params[:lang].nil?
6       lang = request.compatible_language_from(LANGUAGES) || "en"
7     else
8       lang = params[:lang][0]
9     end
10     @lang = lang
11     GetText.locale = lang
12
13     if params[:baseproject]
14       @baseproject = params[:baseproject]
15     end
16     if params[:q]
17       perform_search
18     end
19   end
20
21   def search
22     if perform_search
23       render :partial => "search_result" if request.xhr?
24       render "_search_result" if !request.xhr?
25     else
26       render :text => '<p id="search_short">Search strings must have at least 2 characters.</p>'
27     end
28   end
29
30   def download
31      DownloadHistory.create :query => params[:query], :base => params[:base], 
32                             :file => params[:file]              
33      redirect_to "http://download.opensuse.org/repositories/" + params[:file]
34   end
35
36   private
37
38   def perform_search
39     @query = params[:q]
40     @baseproject = params[:baseproject]
41     @current_page = params[:p].to_i
42     @current_page = 1 if @current_page == 0
43
44     return false if @query.length < 2
45     return false if @query =~ / / and @query.split(" ").select{|e| e.length < 2 }.size > 0
46
47     base = @baseproject=="ALL" ? "" : @baseproject
48     @result = Seeker.prepare_result(CGI.escape(@query).gsub("+", " "), base)
49     if @current_page == 1 and @result.length > 1 # ignore sub pages
50       SearchHistory.create :query => @query, :base => @baseproject, :patterns => @result.pattern_count, 
51                            :binaries => @result.binary_count, :count => @result.length
52     end
53     return true
54   end
55 end