add additional mod actions

This commit is contained in:
Albert Yi
2017-01-03 16:02:36 -08:00
parent 4d698bf98b
commit b9a1e115fb
7 changed files with 54 additions and 3 deletions

View File

@@ -7,6 +7,8 @@ class BulkRevert
def self.process(constraints)
obj = BulkRevert.new(constraints)
ModAction.log("#{CurrentUser.name} processed bulk revert for #{constraints.inspect}")
obj.find_post_versions.order("updated_at, id").each do |version|
version.undo!
end

View File

@@ -11,7 +11,13 @@ class Comment < ActiveRecord::Base
before_validation :initialize_creator, :on => :create
before_validation :initialize_updater
after_create :update_last_commented_at_on_create
after_update(:if => lambda {|rec| CurrentUser.id != rec.creator_id}) do
ModAction.log("comment ##{rec.id} updated by #{CurrentUser.name}")
end
after_destroy :update_last_commented_at_on_destroy
after_destroy(:if => lambda {|rec| CurrentUser.id != rec.creator_id}) do
ModAction.log("comment ##{rec.id} deleted by #{CurrentUser.name}")
end
attr_accessible :body, :post_id, :do_not_bump_post, :is_deleted, :as => [:member, :gold, :platinum, :builder, :janitor, :moderator, :admin]
attr_accessible :is_sticky, :as => [:moderator, :admin]
mentionable(
@@ -19,7 +25,7 @@ class Comment < ActiveRecord::Base
:user_field => :creator_id,
:title => "You were mentioned in a comment",
:body => lambda {|rec, user_name| "You were mentioned in a \"comment\":/posts/#{rec.post_id}#comment-#{rec.id}\n\n---\n\n[i]#{rec.creator.name} said:[/i]\n\n#{ActionController::Base.helpers.excerpt(rec.body, user_name)}"}
)
)
module SearchMethods
def recent

View File

@@ -19,6 +19,12 @@ class ForumPost < ActiveRecord::Base
validate :topic_is_not_restricted, :on => :create
before_destroy :validate_topic_is_unlocked
after_save :delete_topic_if_original_post
after_update(:if => lambda {|rec| rec.updater_id != rec.creator_id}) do
ModAction.log("#{CurrentUser.name} updated forum post ##{rec.id}")
end
after_destroy(:if => lambda {|rec| rec.updater_id != rec.creator_id}) do
ModAction.log("#{CurrentUser.name} deleted forum post ##{rec.id}")
end
mentionable(
:message_field => :body,
:user_field => :creator_id,

View File

@@ -6,6 +6,12 @@ class IpBan < ActiveRecord::Base
validates_format_of :ip_addr, :with => IP_ADDR_REGEX
validates_uniqueness_of :ip_addr, :if => lambda {|rec| rec.ip_addr =~ IP_ADDR_REGEX}
attr_accessible :ip_addr, :reason
after_create do
ModAction.log("#{CurrentUser.name} created ip ban for #{rec.ip_addr}")
end
after_destroy do
ModAction.log("#{CurrentUser.name} deleted ip ban for ##{rec.ip_addr}")
end
def self.is_banned?(ip_addr)
exists?(["ip_addr = ?", ip_addr])
@@ -31,7 +37,7 @@ class IpBan < ActiveRecord::Base
return {
"comments" => comments,
"notes" => notes,
"pools" => pools,
# "pools" => pools,
"wiki_pages" => wiki_pages
}
end

View File

@@ -10,6 +10,12 @@ class UserFeedback < ActiveRecord::Base
validate :creator_is_gold
validate :user_is_not_creator
after_create :create_dmail
after_update(:if => lambda {|rec| rec.updater_id != rec.creator_id}) do
ModAction.log("#{CurrentUser.name} updated user feedback for #{rec.user_name}")
end
after_destroy(:if => lambda {|rec| rec.updater_id != rec.creator_id}) do
ModAction.log("#{CurrentUser.name} deleted user feedback for #{rec.user_name}")
end
module SearchMethods
def positive

View File

@@ -38,6 +38,12 @@ FactoryGirl.define do
bit_prefs User.flag_value_for("can_upload_free")
end
factory(:contrib_user) do
level 32
bit_prefs User.flag_value_for("can_upload_free")
end
factory(:janitor_user) do
level 35
can_approve_posts true
@@ -48,6 +54,11 @@ FactoryGirl.define do
can_approve_posts true
end
factory(:mod_user) do
level 40
can_approve_posts true
end
factory(:admin_user) do
level 50
can_approve_posts true

View File

@@ -14,7 +14,6 @@ class CommentTest < ActiveSupport::TestCase
CurrentUser.ip_addr = nil
end
context "that mentions a user" do
setup do
@post = FactoryGirl.create(:post)
@@ -206,6 +205,21 @@ class CommentTest < ActiveSupport::TestCase
assert_equal(c1.id, matches.all[1].id)
end
context "that is edited by a moderator" do
setup do
@post = FactoryGirl.create(:post)
@comment = FactoryGirl.create(:comment, :post_id => @post.id)
@mod = FactoryGirl.create(:moderator_user)
CurrentUser.user = @mod
end
should "create a mod action" do
assert_difference("ModAction.count") do
@comment.update_attributes({:body => "nope"}, :as => :moderator)
end
end
end
context "that is below the score threshold" do
should "be hidden if not stickied" do
user = FactoryGirl.create(:user, :comment_threshold => 0)