#1326: Add checkbox to move favorites
This commit is contained in:
@@ -13,7 +13,7 @@ module Moderator
|
|||||||
@post = ::Post.find(params[:id])
|
@post = ::Post.find(params[:id])
|
||||||
if params[:commit] == "Delete"
|
if params[:commit] == "Delete"
|
||||||
@post.flag!(params[:reason])
|
@post.flag!(params[:reason])
|
||||||
@post.delete!(:reason => params[:reason])
|
@post.delete!(:reason => params[:reason], :move_favorites => params[:move_favorites].present?)
|
||||||
end
|
end
|
||||||
redirect_to(post_path(@post))
|
redirect_to(post_path(@post))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -658,7 +658,7 @@ class Post < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def favorited_users
|
def favorited_users
|
||||||
favorited_user_ids.map {|id| User.find_by_id(id)}
|
favorited_user_ids.map {|id| User.find(id)}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -929,12 +929,10 @@ class Post < ActiveRecord::Base
|
|||||||
def give_favorites_to_parent
|
def give_favorites_to_parent
|
||||||
return if parent.nil?
|
return if parent.nil?
|
||||||
|
|
||||||
favorited_user_ids.each do |user_id|
|
favorited_users.each do |user|
|
||||||
parent.add_favorite!(User.find(user_id))
|
remove_favorite!(user)
|
||||||
remove_favorite!(User.find(user_id))
|
parent.add_favorite!(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
update_column(:score, 0)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def post_is_not_its_own_parent
|
def post_is_not_its_own_parent
|
||||||
@@ -987,6 +985,7 @@ class Post < ActiveRecord::Base
|
|||||||
update_column(:is_pending, false)
|
update_column(:is_pending, false)
|
||||||
update_column(:is_flagged, false)
|
update_column(:is_flagged, false)
|
||||||
update_column(:is_banned, true) if options[:ban] || has_tag?("banned_artist")
|
update_column(:is_banned, true) if options[:ban] || has_tag?("banned_artist")
|
||||||
|
give_favorites_to_parent if options[:move_favorites]
|
||||||
|
|
||||||
unless options[:without_mod_action]
|
unless options[:without_mod_action]
|
||||||
if options[:reason]
|
if options[:reason]
|
||||||
|
|||||||
@@ -5,6 +5,15 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= form_tag(delete_moderator_post_post_path, :style => "clear: both;", :class => "simple_form") do %>
|
<%= form_tag(delete_moderator_post_post_path, :style => "clear: both;", :class => "simple_form") do %>
|
||||||
|
<% if @post.parent_id %>
|
||||||
|
<div class="input">
|
||||||
|
<label for="move_favorites">
|
||||||
|
<%= check_box_tag "move_favorites" %>
|
||||||
|
Move favorites to parent?
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<label for="reason">Reason</label>
|
<label for="reason">Reason</label>
|
||||||
<%= text_area_tag "reason" %>
|
<%= text_area_tag "reason" %>
|
||||||
|
|||||||
@@ -183,24 +183,30 @@ class PostTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
context "Deleting a post with" do
|
context "Deleting a post with" do
|
||||||
context "a parent" do
|
context "a parent" do
|
||||||
should "not reset the has_children flag of the parent" do
|
should "not reassign favorites to the parent by default" do
|
||||||
p1 = FactoryGirl.create(:post)
|
p1 = FactoryGirl.create(:post)
|
||||||
c1 = FactoryGirl.create(:post, :parent_id => p1.id)
|
c1 = FactoryGirl.create(:post, :parent_id => p1.id, :score => 1)
|
||||||
c1.delete!
|
user = FactoryGirl.create(:gold_user)
|
||||||
p1.reload
|
|
||||||
assert_equal(true, p1.has_children?)
|
|
||||||
end
|
|
||||||
|
|
||||||
should "not reassign favorites to the parent" do
|
|
||||||
p1 = FactoryGirl.create(:post)
|
|
||||||
c1 = FactoryGirl.create(:post, :parent_id => p1.id)
|
|
||||||
user = FactoryGirl.create(:user)
|
|
||||||
c1.add_favorite!(user)
|
c1.add_favorite!(user)
|
||||||
c1.delete!
|
c1.delete!
|
||||||
p1.reload
|
p1.reload
|
||||||
assert(Favorite.exists?(:post_id => c1.id, :user_id => user.id))
|
assert(Favorite.exists?(:post_id => c1.id, :user_id => user.id))
|
||||||
assert(!Favorite.exists?(:post_id => p1.id, :user_id => user.id))
|
assert(!Favorite.exists?(:post_id => p1.id, :user_id => user.id))
|
||||||
assert_equal(0, c1.score)
|
assert_equal(2, c1.score)
|
||||||
|
assert_equal(0, p1.score)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "reassign favorites to the parent if specified" do
|
||||||
|
p1 = FactoryGirl.create(:post)
|
||||||
|
c1 = FactoryGirl.create(:post, :parent_id => p1.id, :score => 1)
|
||||||
|
user = FactoryGirl.create(:gold_user)
|
||||||
|
c1.add_favorite!(user)
|
||||||
|
c1.delete!(:move_favorites => true)
|
||||||
|
p1.reload
|
||||||
|
assert(!Favorite.exists?(:post_id => c1.id, :user_id => user.id), "Child should not still have favorites")
|
||||||
|
assert(Favorite.exists?(:post_id => p1.id, :user_id => user.id), "Parent should have favorites")
|
||||||
|
assert_equal(1, c1.score)
|
||||||
|
assert_equal(1, p1.score)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "not update the parent's has_children flag" do
|
should "not update the parent's has_children flag" do
|
||||||
|
|||||||
Reference in New Issue
Block a user