aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/application_controller.rb94
-rw-r--r--app/controllers/general_controller.rb2
-rw-r--r--app/controllers/public_body_controller.rb2
-rw-r--r--app/controllers/request_controller.rb12
4 files changed, 7 insertions, 103 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 161a82b26..7c122917d 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -428,100 +428,6 @@ class ApplicationController < ActionController::Base
end
end
- def get_request_variety_from_params(params)
- query = ""
- sortby = "newest"
- varieties = []
- if params[:request_variety] && !(query =~ /variety:/)
- if params[:request_variety].include? "sent"
- varieties -= ['variety:sent', 'variety:followup_sent', 'variety:response', 'variety:comment']
- varieties << ['variety:sent', 'variety:followup_sent']
- end
- if params[:request_variety].include? "response"
- varieties << ['variety:response']
- end
- if params[:request_variety].include? "comment"
- varieties << ['variety:comment']
- end
- end
- if !varieties.empty?
- query = " (#{varieties.join(' OR ')})"
- end
- return query
- end
-
- def get_status_from_params(params)
- query = ""
- if params[:latest_status]
- statuses = []
- if params[:latest_status].class == String
- params[:latest_status] = [params[:latest_status]]
- end
- if params[:latest_status].include?("recent") || params[:latest_status].include?("all")
- query += " (variety:sent OR variety:followup_sent OR variety:response OR variety:comment)"
- end
- if params[:latest_status].include? "successful"
- statuses << ['latest_status:successful', 'latest_status:partially_successful']
- end
- if params[:latest_status].include? "unsuccessful"
- statuses << ['latest_status:rejected', 'latest_status:not_held']
- end
- if params[:latest_status].include? "awaiting"
- statuses << ['latest_status:waiting_response', 'latest_status:waiting_clarification', 'waiting_classification:true', 'latest_status:internal_review','latest_status:gone_postal', 'latest_status:error_message', 'latest_status:requires_admin']
- end
- if params[:latest_status].include? "internal_review"
- statuses << ['status:internal_review']
- end
- if params[:latest_status].include? "other"
- statuses << ['latest_status:gone_postal', 'latest_status:error_message', 'latest_status:requires_admin', 'latest_status:user_withdrawn']
- end
- if params[:latest_status].include? "gone_postal"
- statuses << ['latest_status:gone_postal']
- end
- if !statuses.empty?
- query = " (#{statuses.join(' OR ')})"
- end
- end
- return query
- end
-
- def get_date_range_from_params(params)
- query = ""
- if params.has_key?(:request_date_after) && !params.has_key?(:request_date_before)
- params[:request_date_before] = Time.now.strftime("%d/%m/%Y")
- query += " #{params[:request_date_after]}..#{params[:request_date_before]}"
- elsif !params.has_key?(:request_date_after) && params.has_key?(:request_date_before)
- params[:request_date_after] = "01/01/2001"
- end
- if params.has_key?(:request_date_after)
- query = " #{params[:request_date_after]}..#{params[:request_date_before]}"
- end
- return query
- end
-
- def get_tags_from_params(params)
- query = ""
- tags = []
- if params.has_key?(:tags)
- params[:tags].split().each do |tag|
- tags << "tag:#{tag}"
- end
- end
- if !tags.empty?
- query = " (#{tags.join(' OR ')})"
- end
- return query
- end
-
- def make_query_from_params(params)
- query = params[:query] || "" if query.nil?
- query += get_date_range_from_params(params)
- query += get_request_variety_from_params(params)
- query += get_status_from_params(params)
- query += get_tags_from_params(params)
- return query
- end
-
def country_from_ip
country = ""
if !AlaveteliConfiguration::gaze_url.empty?
diff --git a/app/controllers/general_controller.rb b/app/controllers/general_controller.rb
index b01a67027..6f0d29889 100644
--- a/app/controllers/general_controller.rb
+++ b/app/controllers/general_controller.rb
@@ -103,7 +103,7 @@ class GeneralController < ApplicationController
params[:query] = @query
end
if @variety_postfix != "all" && @requests
- @query, _ = make_query_from_params(params)
+ @query = InfoRequestEvent.make_query_from_params(params)
end
@inputted_sortby = @sortby
if @sortby.nil?
diff --git a/app/controllers/public_body_controller.rb b/app/controllers/public_body_controller.rb
index 308d38e4c..862f4b318 100644
--- a/app/controllers/public_body_controller.rb
+++ b/app/controllers/public_body_controller.rb
@@ -40,7 +40,7 @@ class PublicBodyController < ApplicationController
@searched_to_send_request = true
end
@view = params[:view]
- query = make_query_from_params(params.merge(:latest_status => @view))
+ query = InfoRequestEvent.make_query_from_params(params.merge(:latest_status => @view))
query += " requested_from:#{@public_body.url_name}"
# Use search query for this so can collapse and paginate easily
# XXX really should just use SQL query here rather than Xapian.
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index 6f80be7a6..b79ead73d 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -141,7 +141,10 @@ class RequestController < ApplicationController
def list
medium_cache
@view = params[:view]
+ @locale = self.locale_from_params()
@page = get_search_page_from_params if !@page # used in cache case, as perform_search sets @page as side effect
+ @per_page = PER_PAGE
+ @max_results = MAX_RESULTS
if @view == "recent"
return redirect_to request_list_all_url(:action => "list", :view => "all", :page => @page), :status => :moved_permanently
end
@@ -151,16 +154,11 @@ class RequestController < ApplicationController
raise ActiveRecord::RecordNotFound.new("Sorry. No pages after #{MAX_RESULTS / PER_PAGE}.")
end
- query = make_query_from_params(params.merge(:latest_status => @view))
+ @filters = params.merge(:latest_status => @view)
@title = _("View and search requests")
- sortby = "newest"
- xapian_object = perform_search([InfoRequestEvent], query, sortby, 'request_collapse')
- @list_results = xapian_object.results.map { |r| r[:model] }
- @matches_estimated = xapian_object.matches_estimated
- @show_no_more_than = (@matches_estimated > MAX_RESULTS) ? MAX_RESULTS : @matches_estimated
@title = @title + " (page " + @page.to_s + ")" if (@page > 1)
- @track_thing = TrackThing.create_track_for_search_query(query)
+ @track_thing = TrackThing.create_track_for_search_query(InfoRequestEvent.make_query_from_params(@filters))
@feed_autodetect = [ { :url => do_track_url(@track_thing, 'feed'), :title => @track_thing.params[:title_in_rss], :has_json => true } ]
# Don't let robots go more than 20 pages in