From 7c90fca006d0a45867bd39b955ea618a39f2c527 Mon Sep 17 00:00:00 2001 From: Toks Date: Tue, 7 Jul 2015 11:08:32 -0400 Subject: [PATCH] Allow moving favorites for already deleted post --- app/controllers/moderator/post/posts_controller.rb | 14 +++++++++++++- .../post/posts/confirm_move_favorites.html.erb | 12 ++++++++++++ app/views/posts/partials/show/_options.html.erb | 3 +++ config/routes.rb | 2 ++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/views/moderator/post/posts/confirm_move_favorites.html.erb diff --git a/app/controllers/moderator/post/posts_controller.rb b/app/controllers/moderator/post/posts_controller.rb index c8a2e5382..bd2411d76 100644 --- a/app/controllers/moderator/post/posts_controller.rb +++ b/app/controllers/moderator/post/posts_controller.rb @@ -1,7 +1,7 @@ module Moderator module Post class PostsController < ApplicationController - before_filter :moderator_only, :only => [:delete, :undelete, :ban, :unban, :confirm_delete, :confirm_ban] + before_filter :moderator_only, :only => [:delete, :undelete, :move_favorites, :ban, :unban, :confirm_delete, :confirm_move_favorites, :confirm_ban] before_filter :admin_only, :only => [:expunge] rescue_from ::PostFlag::Error, :with => :rescue_exception @@ -23,6 +23,18 @@ module Moderator @post.undelete! end + def confirm_move_favorites + @post = ::Post.find(params[:id]) + end + + def move_favorites + @post = ::Post.find(params[:id]) + if params[:commit] == "Submit" + @post.give_favorites_to_parent + end + redirect_to(post_path(@post)) + end + def expunge @post = ::Post.find(params[:id]) @post.expunge! diff --git a/app/views/moderator/post/posts/confirm_move_favorites.html.erb b/app/views/moderator/post/posts/confirm_move_favorites.html.erb new file mode 100644 index 000000000..a734d3a7b --- /dev/null +++ b/app/views/moderator/post/posts/confirm_move_favorites.html.erb @@ -0,0 +1,12 @@ +

Move Favorites to Parent

+ +
+ <%= PostPresenter.preview(@post, :tags => "status:any") %> +
+ +

This will move all the post's favorites to its parent post. Are you sure?

+ +<%= form_tag(move_favorites_moderator_post_post_path, :style => "clear: both;", :class => "simple_form") do %> + <%= submit_tag "Submit" %> + <%= submit_tag "Cancel" %> +<% end %> diff --git a/app/views/posts/partials/show/_options.html.erb b/app/views/posts/partials/show/_options.html.erb index 172ee1fec..ef7bc99e9 100644 --- a/app/views/posts/partials/show/_options.html.erb +++ b/app/views/posts/partials/show/_options.html.erb @@ -31,6 +31,9 @@ <% if CurrentUser.can_approve_posts? %> <% if post.is_deleted? %>
  • <%= link_to "Undelete", undelete_moderator_post_post_path(:post_id => post.id), :remote => true, :method => :post, :id => "undelete" %>
  • + <% if post.fav_count > 0 && post.parent_id %> +
  • <%= link_to "Move favorites", confirm_move_favorites_moderator_post_post_path(:post_id => post.id) %>
  • + <% end %> <% else %>
  • <%= link_to "Delete", confirm_delete_moderator_post_post_path(:post_id => post.id) %>
  • <% end %> diff --git a/config/routes.rb b/config/routes.rb index d012f7462..25571b193 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,6 +26,8 @@ Rails.application.routes.draw do post :expunge post :delete post :undelete + get :confirm_move_favorites + post :move_favorites get :confirm_ban post :ban post :unban