From 581c243e0ec43dab9cbff2dc9d36d8c17f057286 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 23 Jul 2009 17:41:50 +0000 Subject: [PATCH] Allow messages to be deleted from the outbox as well as the inbox. --- app/controllers/message_controller.rb | 10 ++++++++-- app/models/user.rb | 4 ++-- app/views/message/_message_summary.html.erb | 2 +- app/views/message/_sent_message_summary.html.erb | 1 + app/views/message/outbox.html.erb | 1 + config/locales/en.yml | 2 ++ db/migrate/037_add_sender_visible_to_message.rb | 11 +++++++++++ 7 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 db/migrate/037_add_sender_visible_to_message.rb diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index ba9e9f1e2..db40cc03f 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index 68738a8f0..4f1e1f093 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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" diff --git a/app/views/message/_message_summary.html.erb b/app/views/message/_message_summary.html.erb index b00329d6e..3d9976aab 100644 --- a/app/views/message/_message_summary.html.erb +++ b/app/views/message/_message_summary.html.erb @@ -10,5 +10,5 @@ <%= button_to t('message.message_summary.read_button'), :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read' %> <% end %> <%= button_to t('message.message_summary.reply_button'), :controller => 'message', :action => 'reply', :message_id => message_summary.id %> - <%= button_to t('message.message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => message_summary.id %> + <%= button_to t('message.message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => message_summary.id, :referer => request.request_uri %> diff --git a/app/views/message/_sent_message_summary.html.erb b/app/views/message/_sent_message_summary.html.erb index be1048a02..9d3275835 100644 --- a/app/views/message/_sent_message_summary.html.erb +++ b/app/views/message/_sent_message_summary.html.erb @@ -4,4 +4,5 @@ <%= link_to h(sent_message_summary.recipient.display_name), :controller => 'user', :action => sent_message_summary.recipient.display_name %> <%= link_to h(sent_message_summary.title), :controller => 'message', :action => 'read', :message_id => sent_message_summary.id %> <%= l sent_message_summary.sent_on %> + <%= button_to t('message.sent_message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => sent_message_summary.id, :referer => request.request_uri %> diff --git a/app/views/message/outbox.html.erb b/app/views/message/outbox.html.erb index 5be5b7bfb..f1f9ddea7 100644 --- a/app/views/message/outbox.html.erb +++ b/app/views/message/outbox.html.erb @@ -9,6 +9,7 @@ <%= t'message.outbox.to' %> <%= t'message.outbox.subject' %> <%= t'message.outbox.date' %> + <%= render :partial => "sent_message_summary", :collection => @user.sent_messages %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 06c691f9f..5df7504f5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -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" diff --git a/db/migrate/037_add_sender_visible_to_message.rb b/db/migrate/037_add_sender_visible_to_message.rb new file mode 100644 index 000000000..305473a62 --- /dev/null +++ b/db/migrate/037_add_sender_visible_to_message.rb @@ -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 -- 2.43.2