From 648cc9ecb778307724078f8dfb5ca448b2b45daf Mon Sep 17 00:00:00 2001 From: evazion Date: Sun, 14 May 2017 18:52:34 -0500 Subject: [PATCH] Move post replacement create action to post replacements controller. --- .../moderator/post/posts_controller.rb | 11 +---------- app/controllers/post_replacements_controller.rb | 17 +++++++++++++++++ app/models/post.rb | 9 ++++++--- app/views/moderator/post/posts/replace.html.erb | 5 ----- .../_new.html.erb} | 4 ++-- app/views/post_replacements/new.html.erb | 5 +++++ app/views/posts/partials/show/_options.html.erb | 2 +- app/views/posts/show.html.erb | 2 +- config/routes.rb | 5 ++--- 9 files changed, 35 insertions(+), 25 deletions(-) delete mode 100644 app/views/moderator/post/posts/replace.html.erb rename app/views/{moderator/post/posts/_replace.html.erb => post_replacements/_new.html.erb} (55%) create mode 100644 app/views/post_replacements/new.html.erb 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 @@ -
-
- <%= render "moderator/post/posts/replace" %> -
-
diff --git a/app/views/moderator/post/posts/_replace.html.erb b/app/views/post_replacements/_new.html.erb similarity index 55% rename from app/views/moderator/post/posts/_replace.html.erb rename to app/views/post_replacements/_new.html.erb index 7b43d6e0c..ce403a95b 100644 --- a/app/views/moderator/post/posts/_replace.html.erb +++ b/app/views/post_replacements/_new.html.erb @@ -1,4 +1,4 @@ -<%= simple_form_for(@post, url: replace_moderator_post_post_path, method: :post) do |f| %> +<%= simple_form_for(post_replacement, url: post_replacements_path(post_id: post_replacement.post_id), method: :post) do |f| %>

Replace Image

@@ -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 @@ +
+
+ <%= render "new", post_replacement: @post.replacements.new %> +
+
diff --git a/app/views/posts/partials/show/_options.html.erb b/app/views/posts/partials/show/_options.html.erb index b047cde99..6bff7efb2 100644 --- a/app/views/posts/partials/show/_options.html.erb +++ b/app/views/posts/partials/show/_options.html.erb @@ -55,7 +55,7 @@
  • <%= link_to "Expunge", expunge_moderator_post_post_path(:post_id => post.id), :remote => true, :method => :post, :id => "expunge", :data => {:confirm => "This will permanently delete this post (meaning the file will be deleted). Are you sure you want to delete this post?"} %>
  • <% end %> -
  • <%= link_to "Replace Image", replace_moderator_post_post_path(:post_id => post.id), :id => "replace-image" %>
  • +
  • <%= link_to "Replace Image", new_post_replacement_path(:post_id => post.id), :id => "replace-image" %>
  • <%= link_to "Mobile version", mobile_post_path(post) %>
  • <% end %> diff --git a/app/views/posts/show.html.erb b/app/views/posts/show.html.erb index d121e60b9..4ed71de3c 100644 --- a/app/views/posts/show.html.erb +++ b/app/views/posts/show.html.erb @@ -122,7 +122,7 @@