diff --git a/app/controllers/moderator/post/approvals_controller.rb b/app/controllers/moderator/post/approvals_controller.rb index c17f5c5fe..1da5998e2 100644 --- a/app/controllers/moderator/post/approvals_controller.rb +++ b/app/controllers/moderator/post/approvals_controller.rb @@ -3,14 +3,13 @@ module Moderator class ApprovalsController < ApplicationController before_filter :approver_only skip_before_filter :api_check + respond_to :json, :xml, :js def create cookies.permanent[:moderated] = Time.now.to_i - @post = ::Post.find(params[:post_id]) - if @post.is_deleted? || @post.is_flagged? || @post.is_pending? - @post.approve! - end - rescue ::Post::ApprovalError + post = ::Post.find(params[:post_id]) + @approval = post.approve! + respond_with(@approval) end end end diff --git a/app/models/post.rb b/app/models/post.rb index 328c36ad1..f29271d1d 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -322,7 +322,7 @@ class Post < ActiveRecord::Base end def approve!(approver = CurrentUser.user) - approvals.create!(user: approver) + approvals.create(user: approver) end def approved_by?(user) diff --git a/app/models/post_approval.rb b/app/models/post_approval.rb index 26abd3705..47f476699 100644 --- a/app/models/post_approval.rb +++ b/app/models/post_approval.rb @@ -14,6 +14,10 @@ class PostApproval < ActiveRecord::Base errors.add(:post, "is locked and cannot be approved") end + if post.status == "active" + errors.add(:post, "is already active and cannot be approved") + end + if post.uploader == user errors.add(:base, "You cannot approve a post you uploaded") end diff --git a/app/views/moderator/post/approvals/create.js.erb b/app/views/moderator/post/approvals/create.js.erb index 515a6bcc4..52586b311 100644 --- a/app/views/moderator/post/approvals/create.js.erb +++ b/app/views/moderator/post/approvals/create.js.erb @@ -1,6 +1,6 @@ -<% if @post.errors.any? %> +<% if @approval.errors.any? %> -Danbooru.error("Error: " + <%= @post.errors.full_messages.join("; ").to_json.html_safe %>); +Danbooru.error("Error: " + <%= @approval.errors.full_messages.join("; ").to_json.html_safe %>); <% else %> @@ -10,7 +10,7 @@ $("#c-posts #flag").show(); $("#pending-approval-notice").hide(); -$("#c-moderator-post-queues #post-<%= @post.id %>").hide(); +$("#c-moderator-post-queues #post-<%= @approval.post.id %>").hide(); Danbooru.notice("Post was approved"); Danbooru.ModQueue.increment_processed();