aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/admin_general_controller.rb34
-rw-r--r--app/controllers/admin_request_controller.rb19
-rw-r--r--app/controllers/track_controller.rb2
-rw-r--r--app/controllers/widgets_controller.rb63
4 files changed, 86 insertions, 32 deletions
diff --git a/app/controllers/admin_general_controller.rb b/app/controllers/admin_general_controller.rb
index f2414eeab..4927f631b 100644
--- a/app/controllers/admin_general_controller.rb
+++ b/app/controllers/admin_general_controller.rb
@@ -7,29 +7,29 @@
class AdminGeneralController < AdminController
def index
- # Overview counts of things
- @public_body_count = PublicBody.count
-
- @info_request_count = InfoRequest.count
- @outgoing_message_count = OutgoingMessage.count
- @incoming_message_count = IncomingMessage.count
-
- @user_count = User.count
- @track_thing_count = TrackThing.count
-
- @comment_count = Comment.count
-
# Tasks to do
@requires_admin_requests = InfoRequest.find_in_state('requires_admin')
@error_message_requests = InfoRequest.find_in_state('error_message')
@attention_requests = InfoRequest.find_in_state('attention_requested')
- @blank_contacts = PublicBody.find(:all, :conditions => ["request_email = ''"],
- :order => "updated_at")
+ @blank_contacts = PublicBody.
+ includes(:tags, :translations).
+ where(:request_email => "").
+ order(:updated_at).
+ select { |pb| !pb.defunct? }
@old_unclassified = InfoRequest.find_old_unclassified(:limit => 20,
:conditions => ["prominence = 'normal'"])
- @holding_pen_messages = InfoRequest.holding_pen_request.incoming_messages
- @new_body_requests = PublicBodyChangeRequest.new_body_requests.open
- @body_update_requests = PublicBodyChangeRequest.body_update_requests.open
+ @holding_pen_messages = InfoRequest.
+ includes(:incoming_messages => :raw_email).
+ holding_pen_request.
+ incoming_messages
+ @new_body_requests = PublicBodyChangeRequest.
+ includes(:public_body, :user).
+ new_body_requests.
+ open
+ @body_update_requests = PublicBodyChangeRequest.
+ includes(:public_body, :user).
+ body_update_requests.
+ open
end
def timeline
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb
index 1e083f57e..db20e8dcc 100644
--- a/app/controllers/admin_request_controller.rb
+++ b/app/controllers/admin_request_controller.rb
@@ -114,21 +114,14 @@ class AdminRequestController < AdminController
end
redirect_to admin_request_url(info_request)
elsif params[:commit] == 'Move request to authority' && !params[:public_body_url_name].blank?
- old_public_body = info_request.public_body
destination_public_body = PublicBody.find_by_url_name(params[:public_body_url_name])
- if destination_public_body.nil?
- flash[:error] = "Couldn't find public body '" + params[:public_body_url_name] + "'"
- else
- info_request.public_body = destination_public_body
- info_request.save!
- info_request.log_event("move_request", {
- :editor => admin_current_user(),
- :old_public_body_url_name => old_public_body.url_name,
- :public_body_url_name => destination_public_body.url_name
- })
- info_request.reindex_request_events
- flash[:notice] = "Request has been moved to new body"
+ if info_request.move_to_public_body(destination_public_body,
+ :editor => admin_current_user,
+ :reindex => true)
+ flash[:notice] = "Request has been moved to new body"
+ else
+ flash[:error] = "Couldn't find public body '#{ params[:public_body_url_name] }'"
end
redirect_to admin_request_url(info_request)
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb
index 4b272797f..8b8055b55 100644
--- a/app/controllers/track_controller.rb
+++ b/app/controllers/track_controller.rb
@@ -214,6 +214,4 @@ class TrackController < ApplicationController
redirect_to URI.parse(params[:r]).path
end
-
end
-
diff --git a/app/controllers/widgets_controller.rb b/app/controllers/widgets_controller.rb
new file mode 100644
index 000000000..0cc1008a1
--- /dev/null
+++ b/app/controllers/widgets_controller.rb
@@ -0,0 +1,63 @@
+# app/controllers/widget_controller.rb:
+# Handle widgets, if enabled
+#
+# Copyright (c) 2014 UK Citizens Online Democracy. All rights reserved.
+# Email: hello@mysociety.org; WWW: http://www.mysociety.org/
+
+require 'securerandom'
+
+class WidgetsController < ApplicationController
+
+ before_filter :check_widget_config, :find_info_request, :check_prominence
+ skip_before_filter :set_x_frame_options_header, :only => [:show]
+
+ def show
+ medium_cache
+ @track_thing = TrackThing.create_track_for_request(@info_request)
+ @status = @info_request.calculate_status
+ @count = @info_request.track_things.count + @info_request.widget_votes.count + 1
+
+ if @user
+ @existing_track = TrackThing.find_existing(@user, @track_thing)
+ end
+ unless @user || cookies[:widget_vote]
+ cookies.permanent[:widget_vote] = SecureRandom.hex(10)
+ end
+ render :action => 'show', :layout => false
+ end
+
+ def new
+ long_cache
+ end
+
+ # Track interest in a request from a non-logged in user
+ def update
+ if !@user && cookies[:widget_vote]
+ @info_request.widget_votes.
+ where(:cookie => cookies[:widget_vote]).
+ first_or_create
+ end
+
+ track_thing = TrackThing.create_track_for_request(@info_request)
+ redirect_to do_track_path(track_thing), status => :temporary_redirect
+ end
+
+ private
+
+ def find_info_request
+ @info_request = InfoRequest.find(params[:request_id])
+ end
+
+ def check_widget_config
+ unless AlaveteliConfiguration::enable_widgets
+ raise ActiveRecord::RecordNotFound.new("Page not enabled")
+ end
+ end
+
+ def check_prominence
+ unless @info_request.prominence == 'normal'
+ render :nothing => true, :status => :forbidden
+ end
+ end
+
+end