Merge pull request #112 from zwagoth/approve_unapprove

Allow post unapproval
This commit is contained in:
Zwagoth 2019-07-19 21:07:27 -04:00 committed by GitHub
commit 962e88a281
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 9 deletions

View File

@ -11,6 +11,11 @@ module Moderator
@approval = post.approve!
respond_with(:moderator, @approval)
end
def destroy
post = ::Post.find(params[:post_id])
post.unapprove!
end
end
end
end

View File

@ -300,7 +300,7 @@ class Post < ApplicationRecord
module ApprovalMethods
def is_approvable?(user = CurrentUser.user)
!is_status_locked? && (is_pending? || is_flagged? || is_deleted?) && uploader != user
!is_status_locked? && (is_pending? || is_flagged? || is_deleted?)
end
def flag!(reason, options = {})
@ -327,11 +327,16 @@ class Post < ApplicationRecord
approver == user || approvals.where(user: user).exists?
end
def unapprove!(unapprover = CurrentUser.user)
update(approver: nil, is_pending: true)
end
def approve!(approver = CurrentUser.user)
approvals.create(user: approver)
post.flags.each(&:resolve!)
post.update(approver: approver, is_flagged: false, is_pending: false, is_deleted: false)
approv = approvals.create(user: approver)
flags.each(&:resolve!)
update(approver: approver, is_flagged: false, is_pending: false, is_deleted: false)
approv
end
def disapproved_by?(user)

View File

@ -14,10 +14,6 @@ class PostApproval < ApplicationRecord
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
end

View File

@ -44,6 +44,10 @@
<li><%= link_to "Hide from queue", moderator_post_disapprovals_path(post_disapproval: { post_id: post.id, reason: "disinterest" }), remote: true, method: :post, id: "disapprove" %></li>
<% end %>
<% if !post.is_pending? && !post.is_deleted? %>
<li><%= link_to "Unapprove", moderator_post_approval_path(post_id: post.id), remote: true, method: :delete, id: "unapprove", "data-confirm": "Are you sure you want to unapprove this post?" %></li>
<% end %>
<% if CurrentUser.is_admin? %>
<li><%= 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?"} %></li>
<% end %>

View File

@ -28,7 +28,7 @@ Rails.application.routes.draw do
get :random
end
end
resource :approval, :only => [:create]
resource :approval, :only => [:create, :destroy]
resources :disapprovals, :only => [:create, :index]
resources :posts, :only => [:delete, :undelete, :expunge, :confirm_delete] do
member do