diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb
index 9dc1d6922..395d56028 100644
--- a/app/controllers/message_controller.rb
+++ b/app/controllers/message_controller.rb
@@ -20,6 +20,18 @@ class MessageController < ApplicationController
end
end
+ def destroy
+ @message = Message.find(params[:message_id], :conditions => ["to_user_id = ? or from_user_id = ?", @user.id, @user.id ])
+ if !@message.message_read
+ flash[:notice] = 'Message not read and so not deleted'
+ redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
+ else
+ flash[:notice] = "Message '#{@message.title}' deleted"
+ @message.destroy
+ redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
+ end
+ end
+
def reply
message = Message.find(params[:message_id], :conditions => ["to_user_id = ? or from_user_id = ?", @user.id, @user.id ])
title = message.title.sub(/^Re:\s*/, "Re: ")
diff --git a/app/views/message/_message_summary.rhtml b/app/views/message/_message_summary.rhtml
index 6d45d33dd..dbd71f017 100644
--- a/app/views/message/_message_summary.rhtml
+++ b/app/views/message/_message_summary.rhtml
@@ -10,4 +10,6 @@
<%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read' %> |
<% end %>
<%= button_to 'Reply', :controller => 'message', :action => 'reply', :message_id => message_summary.id %> |
+ <%= button_to 'Delete', :controller => 'message', :action => 'destroy', :message_id => message_summary.id %> |
+
diff --git a/app/views/message/read.rhtml b/app/views/message/read.rhtml
index d44859029..eccb26050 100644
--- a/app/views/message/read.rhtml
+++ b/app/views/message/read.rhtml
@@ -32,6 +32,7 @@
<%= button_to 'Reply', :controller => 'message', :action => 'reply', :message_id => @message.id %> |
<%= button_to 'Mark as unread', :controller => 'message', :action => 'mark', :message_id => @message.id, :mark => 'unread' %> |
+ <%= button_to 'Delete', :controller => 'message', :action => 'destroy', :message_id => @message.id %> |
<%= link_to 'Back to inbox', :controller => 'message', :action => 'inbox', :display_name => @user.display_name %> |
diff --git a/config/routes.rb b/config/routes.rb
index 1444de106..2ac48cc29 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -143,6 +143,7 @@ ActionController::Routing::Routes.draw do |map|
map.connect '/message/read/:message_id', :controller => 'message', :action => 'read'
map.connect '/message/mark/:message_id', :controller => 'message', :action => 'mark'
map.connect '/message/reply/:message_id', :controller => 'message', :action => 'reply'
+ map.connect '/message/delete/:message_id', :controller => 'message', :action => 'destroy'
# fall through
map.connect ':controller/:id/:action'