aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/application_controller.rb16
-rw-r--r--app/controllers/general_controller.rb26
-rw-r--r--app/controllers/public_body_controller.rb1
-rw-r--r--app/controllers/user_controller.rb13
4 files changed, 44 insertions, 12 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 9133f701b..3794043fb 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -14,8 +14,14 @@ class ApplicationController < ActionController::Base
# Standard headers, footers and navigation for whole site
layout "default"
include FastGettext::Translation # make functions like _, n_, N_ etc available)
+
+ # Note: a filter stops the chain if it redirects or renders something
+ before_filter :authentication_check
before_filter :set_gettext_locale
+ before_filter :check_in_post_redirect
+ before_filter :session_remember_me
before_filter :set_vary_header
+
# scrub sensitive parameters from the logs
filter_parameter_logging :password
@@ -48,7 +54,14 @@ class ApplicationController < ActionController::Base
else
requested_locale = params[:locale] || session[:locale] || cookies[:locale] || I18n.default_locale
end
+ requested_locale = FastGettext.best_locale_in(requested_locale)
session[:locale] = FastGettext.set_locale(requested_locale)
+ if !@user.nil?
+ if @user.locale != requested_locale
+ @user.locale = session[:locale]
+ @user.save!
+ end
+ end
end
# scrub sensitive parameters from the logs
@@ -85,7 +98,6 @@ class ApplicationController < ActionController::Base
# Set cookie expiry according to "remember me" checkbox, as per "An easier
# and more flexible hack" on this page:
# http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionOptions
- before_filter :session_remember_me
def session_remember_me
# Reset the "sliding window" session expiry time.
if request.env['rack.session.options']
@@ -265,7 +277,6 @@ class ApplicationController < ActionController::Base
end
# If we are in a faked redirect to POST request, then set post params.
- before_filter :check_in_post_redirect
def check_in_post_redirect
if params[:post_redirect] and session[:post_redirect_token]
post_redirect = PostRedirect.find_by_token(session[:post_redirect_token])
@@ -274,7 +285,6 @@ class ApplicationController < ActionController::Base
end
# Default layout shows user in corner, so needs access to it
- before_filter :authentication_check
def authentication_check
if session[:user_id]
@user = authenticated_user
diff --git a/app/controllers/general_controller.rb b/app/controllers/general_controller.rb
index 1ddf3acff..ada891ce9 100644
--- a/app/controllers/general_controller.rb
+++ b/app/controllers/general_controller.rb
@@ -50,11 +50,18 @@ class GeneralController < ApplicationController
query = 'variety:response (status:successful OR status:partially_successful)'
# query = 'variety:response' # XXX debug
sortby = "described"
- xapian_object = perform_search([InfoRequestEvent], query, sortby, 'request_title_collapse', 8)
- @successful_request_events = xapian_object.results.map { |r| r[:model] }
- @successful_request_events = @successful_request_events.sort_by { |e| e.described_at }.reverse
+ max_count = 5
+ xapian_object = perform_search([InfoRequestEvent], query, sortby, 'request_title_collapse', max_count)
+ @request_events = xapian_object.results.map { |r| r[:model] }
+ @request_events = @request_events.sort_by { |e| e.described_at }.reverse
+ if @request_events.count < max_count
+ query = 'variety:sent'
+ xapian_object = perform_search([InfoRequestEvent], query, sortby, 'request_title_collapse', max_count-@request_events.count)
+ more_events = xapian_object.results.map { |r| r[:model] }
+ @request_events += more_events.sort_by { |e| e.described_at }.reverse
+ end
rescue
- @successful_request_events = []
+ @request_events = []
end
end
end
@@ -92,7 +99,7 @@ class GeneralController < ApplicationController
@variety_postfix = path.pop
end
@variety_postfix = params[:bodies] if @variety_postfix.nil? && !params[:bodies].nil?
- @variety_postfix = "all" if @variety_postfix.nil?
+ @variety_postfix = "requests" if @variety_postfix.nil?
if @variety_postfix != "users"
@common_query = get_tags_from_params
end
@@ -135,7 +142,9 @@ class GeneralController < ApplicationController
@sort_postfix = combined.pop
@sortby = @sort_postfix
end
-
+ if !params[:view].nil?
+ combined += [params[:view]]
+ end
if combined.size > 0 && (['bodies', 'requests', 'users', 'all'].include?(combined[-1]))
@variety_postfix = combined.pop
case @variety_postfix
@@ -152,8 +161,13 @@ class GeneralController < ApplicationController
@requests = false
@users = true
end
+ else
+ @variety_postfix = "all"
end
@query = combined.join("/")
+ if params[:query].nil?
+ params[:query] = @query
+ end
@inputted_sortby = @sortby
@common_query = get_tags_from_params
if @sortby.nil?
diff --git a/app/controllers/public_body_controller.rb b/app/controllers/public_body_controller.rb
index 77cede36b..0e58b7055 100644
--- a/app/controllers/public_body_controller.rb
+++ b/app/controllers/public_body_controller.rb
@@ -90,6 +90,7 @@ class PublicBodyController < ApplicationController
@query = "%#{params[:public_body_query].nil? ? "" : params[:public_body_query]}%"
@tag = params[:tag]
@locale = self.locale_from_params()
+
locale_condition = "(upper(public_body_translations.name) LIKE upper(?) OR upper(public_body_translations.notes) LIKE upper (?)) AND public_body_translations.locale = ?"
if @tag.nil? or @tag == "all"
@tag = "all"
diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb
index c53529bc3..96dbfba74 100644
--- a/app/controllers/user_controller.rb
+++ b/app/controllers/user_controller.rb
@@ -35,9 +35,16 @@ class UserController < ApplicationController
# Use search query for this so can collapse and paginate easily
# XXX really should just use SQL query here rather than Xapian.
begin
- @xapian_requests = perform_search([InfoRequestEvent], 'requested_by:' + @display_user.url_name, 'newest', 'request_collapse')
- @xapian_comments = perform_search([InfoRequestEvent], 'commented_by:' + @display_user.url_name, 'newest', nil)
-
+ 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])
+ end
+ @xapian_requests = perform_search([InfoRequestEvent], requests_query, 'newest', 'request_collapse')
+ @xapian_comments = perform_search([InfoRequestEvent], comments_query, 'newest', nil)
+
if (@page > 1)
@page_desc = " (page " + @page.to_s + ")"
else