diff options
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/general_controller.rb | 66 | ||||
-rw-r--r-- | app/controllers/request_controller.rb | 40 |
2 files changed, 68 insertions, 38 deletions
diff --git a/app/controllers/general_controller.rb b/app/controllers/general_controller.rb new file mode 100644 index 000000000..b4f7c6eac --- /dev/null +++ b/app/controllers/general_controller.rb @@ -0,0 +1,66 @@ +# app/controllers/general_controller.rb: +# For pages like front page, general search, that aren't specific to a +# particular model. +# +# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved. +# Email: francis@mysociety.org; WWW: http://www.mysociety.org/ +# +# $Id: general_controller.rb,v 1.1 2008-03-06 01:23:38 francis Exp $ + +class GeneralController < ApplicationController + + # Fancy javascript smancy for auto complete search on front page + def auto_complete_for_public_body_query + @public_bodies = public_body_query(params[:public_body][:query]) + + render :partial => "public_body_query" + end + + # Actual front page + def frontpage + # Public body search on the left + @public_bodies = [] + @query_made = false + if params[:public_body] and params[:public_body][:query] + # Try and do exact match - redirect if it is made + @public_body = PublicBody.find_by_name(params[:public_body][:query]) + if not @public_body.nil? + redirect_to new_request_to_body_url(:public_body_id => @public_body.id.to_s) + end + # Otherwise use search engine to find public body + @public_bodies = public_body_query(params[:public_body][:query]) + @query_made = true + end + + # Get all successful requests for display on the right + @info_requests = InfoRequest.find :all, :order => "created_at desc", :conditions => "prominence = 'normal' and described_state in ('successful', 'partially_successful')", :limit => 3 + end + + + # Just does a redirect from ?query= search to /query + def search_redirect + query = params[:query] + redirect_to search_url(:query => query) + end + + # Actual search + def search + query = params[:query] + @solr_object = InfoRequest.multi_solr_search(query, :models => [ OutgoingMessage, IncomingMessage ]) + @search_results = @solr_object.results + end + + private + + # Used in front page search for public body + def public_body_query(query) + # @public_bodies = PublicBody.find_by_solr(query).results + + criteria = '%' + query + '%' + @public_bodies = PublicBody.find(:all, + :conditions => ["name ilike ? or short_name ilike ?", criteria, criteria], + :order => 'name', :limit=>10) + return @public_bodies + end +end + diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb index 76cf70ee1..977e4cd32 100644 --- a/app/controllers/request_controller.rb +++ b/app/controllers/request_controller.rb @@ -4,7 +4,7 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: request_controller.rb,v 1.64 2008-02-29 13:24:22 francis Exp $ +# $Id: request_controller.rb,v 1.65 2008-03-06 01:23:38 francis Exp $ class RequestController < ApplicationController @@ -39,31 +39,6 @@ class RequestController < ApplicationController def list @info_requests = InfoRequest.paginate :order => "created_at desc", :page => params[:page], :per_page => 25, :conditions => "prominence = 'normal'" end - - # Fancy javascript smancy for auto complete search - def auto_complete_for_public_body_query - @public_bodies = public_body_query(params[:public_body][:query]) - - render :partial => "public_body_query" - end - def frontpage - # Public body search on the left - @public_bodies = [] - @query_made = false - if params[:public_body] and params[:public_body][:query] - # Try and do exact match - redirect if it is made - @public_body = PublicBody.find_by_name(params[:public_body][:query]) - if not @public_body.nil? - redirect_to new_request_to_body_url(:public_body_id => @public_body.id.to_s) - end - # Otherwise use search engine to find public body - @public_bodies = public_body_query(params[:public_body][:query]) - @query_made = true - end - - # Get all successful requests for display on the right - @info_requests = InfoRequest.find :all, :order => "created_at desc", :conditions => "prominence = 'normal' and described_state in ('successful', 'partially_successful')", :limit => 3 - end # Page new form posts to def new @@ -284,16 +259,5 @@ class RequestController < ApplicationController render :text => @attachment.body end - private - - # Used in front page search for public body - def public_body_query(query) - # @public_bodies = PublicBody.find_by_solr(query).results - - criteria = '%' + query + '%' - @public_bodies = PublicBody.find(:all, - :conditions => ["name ilike ? or short_name ilike ?", criteria, criteria], - :order => 'name', :limit=>10) - return @public_bodies - end end + |