diff --git a/app/controllers/moderator/post/posts_controller.rb b/app/controllers/moderator/post/posts_controller.rb index 10e7e701d..cb01095e9 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 :approver_only, :only => [:delete, :undelete, :move_favorites, :replace, :ban, :unban, :confirm_delete, :confirm_move_favorites, :confirm_ban] + before_filter :approver_only, :only => [:delete, :undelete, :move_favorites, :ban, :unban, :confirm_delete, :confirm_move_favorites, :confirm_ban] before_filter :admin_only, :only => [:expunge] skip_before_filter :api_check @@ -37,15 +37,6 @@ module Moderator redirect_to(post_path(@post)) end - def replace - @post = ::Post.find(params[:id]) - @post.replace!(params[:post][:source]) - - respond_with(@post) do |format| - format.html { redirect_to(@post) } - end - end - def expunge @post = ::Post.find(params[:id]) @post.expunge! diff --git a/app/controllers/post_replacements_controller.rb b/app/controllers/post_replacements_controller.rb index 2858e67ae..b9bd22984 100644 --- a/app/controllers/post_replacements_controller.rb +++ b/app/controllers/post_replacements_controller.rb @@ -2,10 +2,27 @@ class PostReplacementsController < ApplicationController respond_to :html, :xml, :json before_filter :approver_only, except: [:index] + def new + @post = Post.find(params[:post_id]) + end + + def create + @post = Post.find(params[:post_id]) + @post_replacement = @post.replace!(create_params) + + flash[:notice] = "Post replaced" + respond_with(@post_replacement, location: @post) + end + def index params[:search][:post_id] = params.delete(:post_id) if params.has_key?(:post_id) @post_replacements = PostReplacement.search(params[:search]).paginate(params[:page], limit: params[:limit]) respond_with(@post_replacements) end + +private + def create_params + params.require(:post_replacement).permit(:replacement_url) + end end diff --git a/app/models/post.rb b/app/models/post.rb index 1a646e76f..665b9435d 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1429,9 +1429,12 @@ class Post < ActiveRecord::Base ModAction.log("undeleted post ##{id}") end - def replace!(url) - replacement = replacements.create(replacement_url: url) - replacement.process! + def replace!(params) + transaction do + replacement = replacements.create(params) + replacement.process! + replacement + end end end diff --git a/app/views/moderator/post/posts/replace.html.erb b/app/views/moderator/post/posts/replace.html.erb deleted file mode 100644 index 3ef8b5d68..000000000 --- a/app/views/moderator/post/posts/replace.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -
@@ -7,5 +7,5 @@ lower-quality images, such as image samples, to higher-quality versions.
- <%= f.input :source, label: "New Source", input_html: { value: "" } %> + <%= f.input :replacement_url, label: "New Source", input_html: { value: "" } %> <% end %> diff --git a/app/views/post_replacements/new.html.erb b/app/views/post_replacements/new.html.erb new file mode 100644 index 000000000..6286252b2 --- /dev/null +++ b/app/views/post_replacements/new.html.erb @@ -0,0 +1,5 @@ +