Allow messages to be deleted from the outbox as well as the inbox.

This commit is contained in:
Tom Hughes 2009-07-23 17:41:50 +00:00
parent f3bf0c8b14
commit 581c243e0e
7 changed files with 26 additions and 5 deletions

View file

@ -110,10 +110,16 @@ class MessageController < ApplicationController
if params[:message_id]
id = params[:message_id]
message = Message.find_by_id(id)
message.visible = false
message.from_user_visible = false if message.sender == @user
message.to_user_visible = false if message.recipient == @user
if message.save
flash[:notice] = t 'message.delete.deleted'
redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
if params[:referer]
redirect_to params[:referer]
else
redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
end
end
end
rescue ActiveRecord::RecordNotFound

View file

@ -3,9 +3,9 @@ class User < ActiveRecord::Base
has_many :traces
has_many :diary_entries, :order => 'created_at DESC'
has_many :messages, :foreign_key => :to_user_id, :conditions => { :visible => true }, :order => 'sent_on DESC'
has_many :messages, :foreign_key => :to_user_id, :conditions => { :to_user_visible => true }, :order => 'sent_on DESC'
has_many :new_messages, :class_name => "Message", :foreign_key => :to_user_id, :conditions => { :message_read => false }, :order => 'sent_on DESC'
has_many :sent_messages, :class_name => "Message", :foreign_key => :from_user_id, :order => 'sent_on DESC'
has_many :sent_messages, :class_name => "Message", :foreign_key => :from_user_id, :conditions => { :from_user_visible => true }, :order => 'sent_on DESC'
has_many :friends, :include => :befriendee, :conditions => ["users.visible = ?", true]
has_many :tokens, :class_name => "UserToken"
has_many :preferences, :class_name => "UserPreference"

View file

@ -10,5 +10,5 @@
<td><%= button_to t('message.message_summary.read_button'), :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read' %></td>
<% end %>
<td><%= button_to t('message.message_summary.reply_button'), :controller => 'message', :action => 'reply', :message_id => message_summary.id %></td>
<td><%= button_to t('message.message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => message_summary.id %></td>
<td><%= button_to t('message.message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => message_summary.id, :referer => request.request_uri %></td>
</tr>

View file

@ -4,4 +4,5 @@
<td class="inbox-sender" bgcolor="<%= this_colour %>"><%= link_to h(sent_message_summary.recipient.display_name), :controller => 'user', :action => sent_message_summary.recipient.display_name %></td>
<td class="inbox-subject" bgcolor="<%= this_colour %>"><%= link_to h(sent_message_summary.title), :controller => 'message', :action => 'read', :message_id => sent_message_summary.id %></td>
<td class="inbox-sent nowrap" bgcolor="<%= this_colour %>"><%= l sent_message_summary.sent_on %></td>
<td><%= button_to t('message.sent_message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => sent_message_summary.id, :referer => request.request_uri %></td>
</tr>

View file

@ -9,6 +9,7 @@
<th><%= t'message.outbox.to' %></th>
<th><%= t'message.outbox.subject' %></th>
<th><%= t'message.outbox.date' %></th>
<th></th>
</tr>
<%= render :partial => "sent_message_summary", :collection => @user.sent_messages %>
</table>

View file

@ -583,6 +583,8 @@ en:
reading_your_sent_messages: "Reading your sent messages"
to: "To"
back_to_outbox: "Back to outbox"
sent_message_summary:
delete_button: "Delete"
mark:
as_read: "Message marked as read"
as_unread: "Message marked as unread"

View file

@ -0,0 +1,11 @@
class AddSenderVisibleToMessage < ActiveRecord::Migration
def self.up
rename_column :messages, :visible, :to_user_visible
add_column :messages, :from_user_visible, :boolean, :default => true, :null => false
end
def self.down
remove_column :messages, :from_user_visible
rename_column :messages, :to_user_visible, :visible
end
end