diff options
author | Gareth Rees <gareth@mysociety.org> | 2014-10-06 17:40:11 +0100 |
---|---|---|
committer | Gareth Rees <gareth@mysociety.org> | 2014-10-14 11:45:11 +0100 |
commit | 21461927f3a195d5fd4abff1f406fa28f276eb70 (patch) | |
tree | 53e7696f72702b6d5c1b9ece9ef8e8b1eb479b57 /app/controllers/user_controller.rb | |
parent | c64360898beca1162a1bdef9ca4b76676e0907f8 (diff) |
User profile option to filter requests by status
Filters on `latest_status` because filtering by `status` searches all
states a request has ever been in.
Diffstat (limited to 'app/controllers/user_controller.rb')
-rw-r--r-- | app/controllers/user_controller.rb | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index f23343ddb..baeaab18a 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -49,13 +49,28 @@ class UserController < ApplicationController # TODO: really should just use SQL query here rather than Xapian. if @show_requests begin + + request_states = @display_user.info_requests.pluck(:described_state).uniq + + option_item = Struct.new(:value, :text) + @request_states = request_states.map do |state| + option_item.new(state, InfoRequest.get_status_description(state)) + end + requests_query = 'requested_by:' + @display_user.url_name comments_query = 'commented_by:' + @display_user.url_name if !params[:user_query].nil? requests_query += " " + params[:user_query] comments_query += " " + params[:user_query] @match_phrase = _("{{search_results}} matching '{{query}}'", :search_results => "", :query => params[:user_query]) + + unless params[:request_latest_status].blank? + requests_query << ' latest_status:' << params[:request_latest_status] + comments_query << ' latest_status:' << params[:request_latest_status] + @match_phrase << _(" filtered by status: '{{status}}'", :status => params[:request_latest_status]) + end end + @xapian_requests = perform_search([InfoRequestEvent], requests_query, 'newest', 'request_collapse') @xapian_comments = perform_search([InfoRequestEvent], comments_query, 'newest', nil) |