From: Tom Hughes Date: Thu, 23 Jul 2009 15:22:44 +0000 (+0000) Subject: Add the ability for a recipient to (logically) delete a message from X-Git-Tag: live~6782 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/f3bf0c8b14270f67e6ec860e58937f8d3c5887a1?hp=0d97737a7dd5e460beb93ef4ac4492b87eb7965e Add the ability for a recipient to (logically) delete a message from their INBOX so they no longer see it. --- diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index e1062bc9f..ba9e9f1e2 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -104,5 +104,20 @@ class MessageController < ApplicationController @title = t'message.no_such_user.title' render :action => 'no_such_user', :status => :not_found end + + # Delete the message. + def delete + if params[:message_id] + id = params[:message_id] + message = Message.find_by_id(id) + message.visible = false + if message.save + flash[:notice] = t 'message.delete.deleted' + redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name + end + end + rescue ActiveRecord::RecordNotFound + @title = t'message.no_such_user.title' + render :action => 'no_such_user', :status => :not_found + end end - diff --git a/app/models/user.rb b/app/models/user.rb index 241c1396f..68738a8f0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -3,8 +3,8 @@ class User < ActiveRecord::Base has_many :traces has_many :diary_entries, :order => 'created_at DESC' - has_many :messages, :foreign_key => :to_user_id, :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 :messages, :foreign_key => :to_user_id, :conditions => { :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 :friends, :include => :befriendee, :conditions => ["users.visible = ?", true] has_many :tokens, :class_name => "UserToken" diff --git a/app/views/message/_message_summary.html.erb b/app/views/message/_message_summary.html.erb index 49190fd93..b00329d6e 100644 --- a/app/views/message/_message_summary.html.erb +++ b/app/views/message/_message_summary.html.erb @@ -10,4 +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 %> diff --git a/app/views/message/inbox.html.erb b/app/views/message/inbox.html.erb index e75d6c1ec..2a97b7bbd 100644 --- a/app/views/message/inbox.html.erb +++ b/app/views/message/inbox.html.erb @@ -11,6 +11,7 @@ <%= t'message.inbox.date' %> + <%= render :partial => "message_summary", :collection => @user.messages %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 5ae59e38d..06c691f9f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -547,6 +547,7 @@ en: unread_button: "Mark as unread" read_button: "Mark as read" reply_button: "Reply" + delete_button: "Delete" new: title: "Send message" send_message_to: "Send a new message to {{name}}" @@ -585,6 +586,8 @@ en: mark: as_read: "Message marked as read" as_unread: "Message marked as unread" + delete: + deleted: "Message deleted" site: index: js_1: "You are either using a browser that doesn't support javascript, or you have disabled javascript." diff --git a/config/routes.rb b/config/routes.rb index f26a15032..5ac2d744a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -194,6 +194,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 => 'delete' # fall through map.connect ':controller/:id/:action' diff --git a/db/migrate/036_add_visible_to_message.rb b/db/migrate/036_add_visible_to_message.rb new file mode 100644 index 000000000..22b121951 --- /dev/null +++ b/db/migrate/036_add_visible_to_message.rb @@ -0,0 +1,9 @@ +class AddVisibleToMessage < ActiveRecord::Migration + def self.up + add_column :messages, :visible, :boolean, :default => true, :null => false + end + + def self.down + remove_column :messages, :visible + end +end