fixes #2477: Better way to notify when messages get filtered

This commit is contained in:
r888888888
2015-08-13 17:16:24 -07:00
parent 04ded35e75
commit b31c63b261
3 changed files with 22 additions and 8 deletions

View File

@@ -8,7 +8,7 @@ class Dmail < ActiveRecord::Base
belongs_to :owner, :class_name => "User"
belongs_to :to, :class_name => "User"
belongs_to :from, :class_name => "User"
before_create :auto_delete_if_filtered
before_create :auto_read_if_filtered
after_create :update_recipient
after_create :send_dmail
attr_accessible :title, :body, :is_deleted, :to_id, :to, :to_name, :creator_ip_addr
@@ -193,9 +193,12 @@ class Dmail < ActiveRecord::Base
end
end
def auto_delete_if_filtered
if owner_id != CurrentUser.user.id && to.dmail_filter.try(:filtered?, self)
self.is_deleted = true
def filtered?
CurrentUser.dmail_filter.try(:filtered?, self)
end
def auto_read_if_filtered
if owner_id != CurrentUser.id && to.dmail_filter.try(:filtered?, self)
self.is_read = true
end
end

View File

@@ -22,9 +22,21 @@
<% @dmails.each do |dmail| %>
<tr class="read-<%= dmail.is_read? %>">
<td><%= compact_time(dmail.created_at) %></td>
<td><%= link_to_user dmail.from %></td>
<td>
<% if dmail.filtered? %>
<%= link_to "[filtered]", user_path(dmail.from) %>
<% else %>
<%= link_to_user dmail.from %>
<% end %>
</td>
<td><%= link_to_user dmail.to %></td>
<td><%= link_to dmail.title, dmail_path(dmail) %></td>
<td>
<% if dmail.filtered? %>
<%= link_to "[filtered]", dmail_path(dmail) %>
<% else %>
<%= link_to dmail.title, dmail_path(dmail) %>
<% end %>
</td>
<td>
<%= link_to "delete", dmail_path(dmail), :method => :delete, :data => {:confirm => "Are you sure you want to delete this Dmail?"} %>
</td>

View File

@@ -27,9 +27,8 @@ class DmailTest < ActiveSupport::TestCase
assert(@recipient.dmail_filter.filtered?(@dmail))
end
should "autodelete if it has a banned word" do
should "autoread if it has a banned word" do
@dmail.save
assert_equal(true, @dmail.is_deleted?)
assert_equal(true, @dmail.is_read?)
end