aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/admin_request_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/admin_request_controller.rb')
-rw-r--r--app/controllers/admin_request_controller.rb175
1 files changed, 39 insertions, 136 deletions
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb
index e39d55c7c..fc291d998 100644
--- a/app/controllers/admin_request_controller.rb
+++ b/app/controllers/admin_request_controller.rb
@@ -2,7 +2,7 @@
# Controller for viewing FOI requests from the admin interface.
#
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
-# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
+# Email: hello@mysociety.org; WWW: http://www.mysociety.org/
require 'ostruct'
@@ -14,45 +14,32 @@ class AdminRequestController < AdminController
def list
@query = params[:query]
- @info_requests = InfoRequest.paginate :order => "created_at desc",
+ if @query
+ info_requests = InfoRequest.where(["lower(title) like lower('%'||?||'%')", @query])
+ else
+ info_requests = InfoRequest
+ end
+ @info_requests = info_requests.paginate :order => "created_at desc",
:page => params[:page],
- :per_page => 100,
- :conditions => @query.nil? ? nil : ["lower(title) like lower('%'||?||'%')", @query]
- end
-
- def list_old_unclassified
- @info_requests = WillPaginate::Collection.create((params[:page] or 1), 50) do |pager|
- info_requests = InfoRequest.find_old_unclassified(:conditions => ["prominence = 'normal'"],
- :limit => pager.per_page,
- :offset => pager.offset)
- # inject the result array into the paginated collection:
- pager.replace(info_requests)
-
- unless pager.total_entries
- # the pager didn't manage to guess the total count, do it manually
- pager.total_entries = InfoRequest.count_old_unclassified(:conditions => ["prominence = 'normal'"])
- end
- end
+ :per_page => 100
end
def show
@info_request = InfoRequest.find(params[:id])
- # XXX is this *really* the only way to render a template to a
- # variable, rather than to the response?
- vars = OpenStruct.new(:name_to => @info_request.user_name,
- :name_from => Configuration::contact_name,
- :info_request => @info_request, :reason => params[:reason],
- :info_request_url => 'http://' + Configuration::domain + request_url(@info_request),
- :site_name => site_name)
- template = File.read(File.join(File.dirname(__FILE__), "..", "views", "admin_request", "hidden_user_explanation.rhtml"))
- @request_hidden_user_explanation = ERB.new(template).result(vars.instance_eval { binding })
+ vars_for_explanation = {:reason => params[:reason],
+ :info_request => @info_request,
+ :name_to => @info_request.user_name,
+ :name_from => AlaveteliConfiguration::contact_name,
+ :info_request_url => request_url(@info_request, :only_path => false)}
+ @request_hidden_user_explanation = render_to_string(:template => "admin_request/hidden_user_explanation",
+ :locals => vars_for_explanation)
end
def resend
@outgoing_message = OutgoingMessage.find(params[:outgoing_message_id])
@outgoing_message.resend_message
flash[:notice] = "Outgoing message resent"
- redirect_to request_admin_url(@outgoing_message.info_request)
+ redirect_to admin_request_show_url(@outgoing_message.info_request)
end
def edit
@@ -73,9 +60,6 @@ class AdminRequestController < AdminController
@info_request.title = params[:info_request][:title]
@info_request.prominence = params[:info_request][:prominence]
- if @info_request.described_state != params[:info_request][:described_state]
- @info_request.set_described_state(params[:info_request][:described_state])
- end
@info_request.awaiting_description = params[:info_request][:awaiting_description] == "true" ? true : false
@info_request.allow_new_responses_from = params[:info_request][:allow_new_responses_from]
@info_request.handle_rejected_responses = params[:info_request][:handle_rejected_responses]
@@ -88,17 +72,20 @@ class AdminRequestController < AdminController
{ :editor => admin_current_user(),
:old_title => old_title, :title => @info_request.title,
:old_prominence => old_prominence, :prominence => @info_request.prominence,
- :old_described_state => old_described_state, :described_state => @info_request.described_state,
+ :old_described_state => old_described_state, :described_state => params[:info_request][:described_state],
:old_awaiting_description => old_awaiting_description, :awaiting_description => @info_request.awaiting_description,
:old_allow_new_responses_from => old_allow_new_responses_from, :allow_new_responses_from => @info_request.allow_new_responses_from,
:old_handle_rejected_responses => old_handle_rejected_responses, :handle_rejected_responses => @info_request.handle_rejected_responses,
:old_tag_string => old_tag_string, :tag_string => @info_request.tag_string,
:old_comments_allowed => old_comments_allowed, :comments_allowed => @info_request.comments_allowed
})
+ if @info_request.described_state != params[:info_request][:described_state]
+ @info_request.set_described_state(params[:info_request][:described_state])
+ end
# expire cached files
expire_for_request(@info_request)
flash[:notice] = 'Request successfully updated.'
- redirect_to request_admin_url(@info_request)
+ redirect_to admin_request_show_url(@info_request)
else
render :action => 'edit'
end
@@ -114,40 +101,7 @@ class AdminRequestController < AdminController
# expire cached files
expire_for_request(@info_request)
flash[:notice] = "Request #{url_title} has been completely destroyed. Email of user who made request: " + user.email
- redirect_to admin_url('request/list')
- end
-
- def edit_outgoing
- @outgoing_message = OutgoingMessage.find(params[:id])
- end
-
- def destroy_outgoing
- @outgoing_message = OutgoingMessage.find(params[:outgoing_message_id])
- @info_request = @outgoing_message.info_request
- outgoing_message_id = @outgoing_message.id
-
- @outgoing_message.fully_destroy
- @outgoing_message.info_request.log_event("destroy_outgoing",
- { :editor => admin_current_user(), :deleted_outgoing_message_id => outgoing_message_id })
-
- flash[:notice] = 'Outgoing message successfully destroyed.'
- redirect_to request_admin_url(@info_request)
- end
-
- def update_outgoing
- @outgoing_message = OutgoingMessage.find(params[:id])
-
- old_body = @outgoing_message.body
-
- if @outgoing_message.update_attributes(params[:outgoing_message])
- @outgoing_message.info_request.log_event("edit_outgoing",
- { :outgoing_message_id => @outgoing_message.id, :editor => admin_current_user(),
- :old_body => old_body, :body => @outgoing_message.body })
- flash[:notice] = 'Outgoing message successfully updated.'
- redirect_to request_admin_url(@outgoing_message.info_request)
- else
- render :action => 'edit_outgoing'
- end
+ redirect_to admin_request_list_url
end
def edit_comment
@@ -168,64 +122,12 @@ class AdminRequestController < AdminController
:old_visible => old_visible, :visible => @comment.visible,
})
flash[:notice] = 'Comment successfully updated.'
- redirect_to request_admin_url(@comment.info_request)
+ redirect_to admin_request_show_url(@comment.info_request)
else
render :action => 'edit_comment'
end
end
-
- def destroy_incoming
- @incoming_message = IncomingMessage.find(params[:incoming_message_id])
- @info_request = @incoming_message.info_request
- incoming_message_id = @incoming_message.id
-
- @incoming_message.fully_destroy
- @incoming_message.info_request.log_event("destroy_incoming",
- { :editor => admin_current_user(), :deleted_incoming_message_id => incoming_message_id })
- # expire cached files
- expire_for_request(@info_request)
- flash[:notice] = 'Incoming message successfully destroyed.'
- redirect_to request_admin_url(@info_request)
- end
-
- def redeliver_incoming
- incoming_message = IncomingMessage.find(params[:redeliver_incoming_message_id])
- message_ids = params[:url_title].split(",").each {|x| x.strip}
- previous_request = incoming_message.info_request
- destination_request = nil
- ActiveRecord::Base.transaction do
- for m in message_ids
- if m.match(/^[0-9]+$/)
- destination_request = InfoRequest.find_by_id(m.to_i)
- else
- destination_request = InfoRequest.find_by_url_title!(m)
- end
- if destination_request.nil?
- flash[:error] = "Failed to find destination request '" + m + "'"
- return redirect_to request_admin_url(previous_request)
- end
-
- raw_email_data = incoming_message.raw_email.data
- mail = MailHandler.mail_from_raw_email(raw_email_data)
- destination_request.receive(mail, raw_email_data, true)
-
- incoming_message_id = incoming_message.id
- incoming_message.info_request.log_event("redeliver_incoming", {
- :editor => admin_current_user(),
- :destination_request => destination_request.id,
- :deleted_incoming_message_id => incoming_message_id
- })
-
- flash[:notice] = "Message has been moved to request(s). Showing the last one:"
- end
- # expire cached files
- expire_for_request(previous_request)
- incoming_message.fully_destroy
- end
- redirect_to request_admin_url(destination_request)
- end
-
# change user or public body of a request magically
def move_request
info_request = InfoRequest.find(params[:info_request_id])
@@ -246,7 +148,7 @@ class AdminRequestController < AdminController
info_request.reindex_request_events
flash[:notice] = "Message has been moved to new user"
end
- redirect_to request_admin_url(info_request)
+ redirect_to admin_request_show_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])
@@ -265,10 +167,10 @@ class AdminRequestController < AdminController
flash[:notice] = "Request has been moved to new body"
end
- redirect_to request_admin_url(info_request)
+ redirect_to admin_request_show_url(info_request)
else
flash[:error] = "Please enter the user or authority to move the request to"
- redirect_to request_admin_url(info_request)
+ redirect_to admin_request_show_url(info_request)
end
end
@@ -292,20 +194,20 @@ class AdminRequestController < AdminController
if !info_request.public_body.is_foi_officer?(user)
flash[:notice] = user.email + " is not an email at the domain @" + info_request.public_body.foi_officer_domain_required + ", so won't be able to upload."
- redirect_to request_admin_url(info_request)
+ redirect_to admin_request_show_url(info_request)
return
end
# Bejeeps, look, sometimes a URL is something that belongs in a controller, jesus.
- # XXX hammer this square peg into the round MVC hole - should be calling main_url(upload_response_url())
+ # XXX hammer this square peg into the round MVC hole
post_redirect = PostRedirect.new(
- :uri => main_url(upload_response_url(:url_title => info_request.url_title, :only_path => true)),
+ :uri => upload_response_url(:url_title => info_request.url_title),
:user_id => user.id)
post_redirect.save!
- url = main_url(confirm_url(:email_token => post_redirect.email_token, :only_path => true))
+ url = confirm_url(:email_token => post_redirect.email_token)
- flash[:notice] = 'Send "' + name + '" &lt;<a href="mailto:' + email + '">' + email + '</a>&gt; this URL: <a href="' + url + '">' + url + "</a> - it will log them in and let them upload a response to this request.".html_safe
- redirect_to request_admin_url(info_request)
+ flash[:notice] = ("Send \"#{name}\" &lt;<a href=\"mailto:#{email}\">#{email}</a>&gt; this URL: <a href=\"#{url}\">#{url}</a> - it will log them in and let them upload a response to this request.").html_safe
+ redirect_to admin_request_show_url(info_request)
end
def show_raw_email
@@ -355,7 +257,7 @@ class AdminRequestController < AdminController
info_request_event.save!
flash[:notice] = "Old response marked as having been a clarification"
- redirect_to request_admin_url(info_request_event.info_request)
+ redirect_to admin_request_show_url(info_request_event.info_request)
end
def hide_request
@@ -376,18 +278,19 @@ class AdminRequestController < AdminController
info_request.save!
if ! info_request.is_external?
- ContactMailer.deliver_from_admin_message(
- info_request.user,
+ ContactMailer.from_admin_message(
+ info_request.user.name,
+ info_request.user.email,
subject,
- params[:explanation]
- )
+ params[:explanation].strip.html_safe
+ ).deliver
flash[:notice] = _("Your message to {{recipient_user_name}} has been sent",:recipient_user_name=>CGI.escapeHTML(info_request.user.name))
else
flash[:notice] = _("This external request has been hidden")
end
# expire cached files
expire_for_request(info_request)
- redirect_to request_admin_url(info_request)
+ redirect_to admin_request_show_url(info_request)
end
end