From 1887774daee72298174901d10b4e75492b9911d2 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 8 Aug 2013 17:14:51 +0100 Subject: Move incoming message admin to its own controller. Make specs that depend on multiple controllers and models interacting integration specs. --- .../admin_incoming_message_controller.rb | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 app/controllers/admin_incoming_message_controller.rb (limited to 'app/controllers/admin_incoming_message_controller.rb') diff --git a/app/controllers/admin_incoming_message_controller.rb b/app/controllers/admin_incoming_message_controller.rb new file mode 100644 index 000000000..a6d5fc542 --- /dev/null +++ b/app/controllers/admin_incoming_message_controller.rb @@ -0,0 +1,54 @@ +class AdminIncomingMessageController < AdminController + + 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 admin_request_show_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 admin_request_show_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 admin_request_show_url(destination_request) + end + +end -- cgit v1.2.3 From c62b1ea80b3f3efa801c0adaad0b17edebc63570 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 8 Aug 2013 17:16:54 +0100 Subject: Slightly nicer action names. --- app/controllers/admin_incoming_message_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/controllers/admin_incoming_message_controller.rb') diff --git a/app/controllers/admin_incoming_message_controller.rb b/app/controllers/admin_incoming_message_controller.rb index a6d5fc542..72c9a84fa 100644 --- a/app/controllers/admin_incoming_message_controller.rb +++ b/app/controllers/admin_incoming_message_controller.rb @@ -1,6 +1,6 @@ class AdminIncomingMessageController < AdminController - def destroy_incoming + def destroy @incoming_message = IncomingMessage.find(params[:incoming_message_id]) @info_request = @incoming_message.info_request incoming_message_id = @incoming_message.id @@ -14,7 +14,7 @@ class AdminIncomingMessageController < AdminController redirect_to admin_request_show_url(@info_request) end - def redeliver_incoming + def redeliver 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 -- cgit v1.2.3 From e36ca7d45ff493b9e5435f10a73f9b937951d23e Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Mon, 12 Aug 2013 15:02:33 +0100 Subject: Add incoming message update action and route. We'll use this for saving the changes to the prominence of an incoming message in a relatively RESTful url structure. --- app/controllers/admin_incoming_message_controller.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app/controllers/admin_incoming_message_controller.rb') diff --git a/app/controllers/admin_incoming_message_controller.rb b/app/controllers/admin_incoming_message_controller.rb index 72c9a84fa..86a765be2 100644 --- a/app/controllers/admin_incoming_message_controller.rb +++ b/app/controllers/admin_incoming_message_controller.rb @@ -1,5 +1,8 @@ class AdminIncomingMessageController < AdminController + def update + end + def destroy @incoming_message = IncomingMessage.find(params[:incoming_message_id]) @info_request = @incoming_message.info_request -- cgit v1.2.3 From 1a5d3b6f389075bd9699a749f9dc2287b93c1b10 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Mon, 12 Aug 2013 18:37:03 +0100 Subject: Add a simple edit action and template --- app/controllers/admin_incoming_message_controller.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app/controllers/admin_incoming_message_controller.rb') diff --git a/app/controllers/admin_incoming_message_controller.rb b/app/controllers/admin_incoming_message_controller.rb index 86a765be2..d9a982d0d 100644 --- a/app/controllers/admin_incoming_message_controller.rb +++ b/app/controllers/admin_incoming_message_controller.rb @@ -1,5 +1,9 @@ class AdminIncomingMessageController < AdminController + def edit + @incoming_message = IncomingMessage.find(params[:id]) + end + def update end -- cgit v1.2.3 From df8f107d9185a8fc00ef2789596a1512e930de37 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Mon, 12 Aug 2013 18:55:24 +0100 Subject: Add the meat of the update action. --- app/controllers/admin_incoming_message_controller.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'app/controllers/admin_incoming_message_controller.rb') diff --git a/app/controllers/admin_incoming_message_controller.rb b/app/controllers/admin_incoming_message_controller.rb index d9a982d0d..6b50d0e36 100644 --- a/app/controllers/admin_incoming_message_controller.rb +++ b/app/controllers/admin_incoming_message_controller.rb @@ -5,6 +5,25 @@ class AdminIncomingMessageController < AdminController end def update + @incoming_message = IncomingMessage.find(params[:id]) + old_prominence = @incoming_message.prominence + old_prominence_reason = @incoming_message.prominence_reason + @incoming_message.prominence = params[:incoming_message][:prominence] + @incoming_message.prominence_reason = params[:incoming_message][:prominence_reason] + if @incoming_message.save + @incoming_message.info_request.log_event('edit_incoming', + :incoming_message_id => @incoming_message.id, + :editor => admin_current_user(), + :old_prominence => old_prominence, + :prominence => @incoming_message.prominence, + :old_prominence_reason => old_prominence_reason, + :prominence_reason => @incoming_message.prominence_reason) + expire_for_request(@incoming_message.info_request) + flash[:notice] = 'Incoming message successfully updated.' + redirect_to admin_request_show_url(@incoming_message.info_request) + else + render :action => 'edit' + end end def destroy -- cgit v1.2.3