refactors moderator actions
This commit is contained in:
60
app/controllers/concerns/moderate_actions.rb
Normal file
60
app/controllers/concerns/moderate_actions.rb
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
module ModerateActions
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
include Polymorphic
|
||||||
|
|
||||||
|
def index
|
||||||
|
@resources = @resources.send(@current_filter)
|
||||||
|
.send("sort_by_#{@current_order}")
|
||||||
|
.page(params[:page])
|
||||||
|
.per(50)
|
||||||
|
set_resources_instance
|
||||||
|
end
|
||||||
|
|
||||||
|
def hide
|
||||||
|
hide_resource resource
|
||||||
|
end
|
||||||
|
|
||||||
|
def moderate
|
||||||
|
set_resource_params
|
||||||
|
@resources = @resources.where(id: params[:resource_ids])
|
||||||
|
|
||||||
|
if params[:hide_resources].present?
|
||||||
|
@resources.accessible_by(current_ability, :hide).each {|resource| hide_resource resource}
|
||||||
|
|
||||||
|
elsif params[:ignore_flags].present?
|
||||||
|
@resources.accessible_by(current_ability, :ignore_flag).each(&:ignore_flag)
|
||||||
|
|
||||||
|
elsif params[:block_authors].present?
|
||||||
|
author_ids = @resources.pluck(author_id).uniq
|
||||||
|
User.where(id: author_ids).accessible_by(current_ability, :block).each {|user| block_user user}
|
||||||
|
end
|
||||||
|
|
||||||
|
redirect_to request.query_parameters.merge(action: :index)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def load_resources
|
||||||
|
@resources = resource_model.accessible_by(current_ability, :moderate)
|
||||||
|
end
|
||||||
|
|
||||||
|
def hide_resource(resource)
|
||||||
|
resource.hide
|
||||||
|
Activity.log(current_user, :hide, resource)
|
||||||
|
end
|
||||||
|
|
||||||
|
def block_user(user)
|
||||||
|
user.block
|
||||||
|
Activity.log(current_user, :block, user)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_resource_params
|
||||||
|
params[:resource_ids] = params["#{resource_name}_ids"]
|
||||||
|
params[:hide_resources] = params["hide_#{resource_name.pluralize}"]
|
||||||
|
end
|
||||||
|
|
||||||
|
def author_id
|
||||||
|
:author_id
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -1,53 +1,20 @@
|
|||||||
class Moderation::CommentsController < Moderation::BaseController
|
class Moderation::CommentsController < Moderation::BaseController
|
||||||
|
include ModerateActions
|
||||||
|
|
||||||
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
|
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
|
||||||
has_orders %w{flags created_at}, only: :index
|
has_orders %w{flags created_at}, only: :index
|
||||||
|
|
||||||
before_action :load_comments, only: [:index, :moderate]
|
before_action :load_resources, only: [:index, :moderate]
|
||||||
|
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource
|
||||||
|
|
||||||
def index
|
|
||||||
@comments = @comments.send(@current_filter)
|
|
||||||
.send("sort_by_#{@current_order}")
|
|
||||||
.page(params[:page])
|
|
||||||
.per(50)
|
|
||||||
end
|
|
||||||
|
|
||||||
def hide
|
|
||||||
hide_comment @comment
|
|
||||||
end
|
|
||||||
|
|
||||||
def moderate
|
|
||||||
@comments = @comments.where(id: params[:comment_ids])
|
|
||||||
|
|
||||||
if params[:hide_comments].present?
|
|
||||||
@comments.accessible_by(current_ability, :hide).each {|comment| hide_comment comment}
|
|
||||||
|
|
||||||
elsif params[:ignore_flags].present?
|
|
||||||
@comments.accessible_by(current_ability, :ignore_flag).each(&:ignore_flag)
|
|
||||||
|
|
||||||
elsif params[:block_authors].present?
|
|
||||||
author_ids = @comments.pluck(:user_id).uniq
|
|
||||||
User.where(id: author_ids).accessible_by(current_ability, :block).each {|user| block_user user}
|
|
||||||
end
|
|
||||||
|
|
||||||
redirect_to request.query_parameters.merge(action: :index)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_comments
|
def resource_model
|
||||||
@comments = Comment.accessible_by(current_ability, :moderate)
|
Comment
|
||||||
end
|
end
|
||||||
|
|
||||||
def hide_comment(comment)
|
def author_id
|
||||||
comment.hide
|
:user_id
|
||||||
Activity.log(current_user, :hide, comment)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def block_user(user)
|
|
||||||
user.block
|
|
||||||
Activity.log(current_user, :block, user)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,53 +1,17 @@
|
|||||||
class Moderation::DebatesController < Moderation::BaseController
|
class Moderation::DebatesController < Moderation::BaseController
|
||||||
|
include ModerateActions
|
||||||
|
|
||||||
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
|
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
|
||||||
has_orders %w{flags created_at}, only: :index
|
has_orders %w{flags created_at}, only: :index
|
||||||
|
|
||||||
before_action :load_debates, only: [:index, :moderate]
|
before_action :load_resources, only: [:index, :moderate]
|
||||||
|
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource
|
||||||
|
|
||||||
def index
|
|
||||||
@debates = @debates.send(@current_filter)
|
|
||||||
.send("sort_by_#{@current_order}")
|
|
||||||
.page(params[:page])
|
|
||||||
.per(50)
|
|
||||||
end
|
|
||||||
|
|
||||||
def hide
|
|
||||||
hide_debate @debate
|
|
||||||
end
|
|
||||||
|
|
||||||
def moderate
|
|
||||||
@debates = @debates.where(id: params[:debate_ids])
|
|
||||||
|
|
||||||
if params[:hide_debates].present?
|
|
||||||
@debates.accessible_by(current_ability, :hide).each {|debate| hide_debate debate}
|
|
||||||
|
|
||||||
elsif params[:ignore_flags].present?
|
|
||||||
@debates.accessible_by(current_ability, :ignore_flag).each(&:ignore_flag)
|
|
||||||
|
|
||||||
elsif params[:block_authors].present?
|
|
||||||
author_ids = @debates.pluck(:author_id).uniq
|
|
||||||
User.where(id: author_ids).accessible_by(current_ability, :block).each {|user| block_user user}
|
|
||||||
end
|
|
||||||
|
|
||||||
redirect_to request.query_parameters.merge(action: :index)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_debates
|
def resource_model
|
||||||
@debates = Debate.accessible_by(current_ability, :moderate)
|
Debate
|
||||||
end
|
|
||||||
|
|
||||||
def hide_debate(debate)
|
|
||||||
debate.hide
|
|
||||||
Activity.log(current_user, :hide, debate)
|
|
||||||
end
|
|
||||||
|
|
||||||
def block_user(user)
|
|
||||||
user.block
|
|
||||||
Activity.log(current_user, :block, user)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,54 +1,16 @@
|
|||||||
class Moderation::ProposalsController < Moderation::BaseController
|
class Moderation::ProposalsController < Moderation::BaseController
|
||||||
|
include ModerateActions
|
||||||
|
|
||||||
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
|
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
|
||||||
has_orders %w{flags created_at}, only: :index
|
has_orders %w{flags created_at}, only: :index
|
||||||
|
|
||||||
before_filter :load_proposals, only: [:index, :moderate]
|
before_filter :load_resources, only: [:index, :moderate]
|
||||||
|
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource
|
||||||
|
|
||||||
def index
|
|
||||||
@proposals = @proposals.send(@current_filter)
|
|
||||||
.send("sort_by_#{@current_order}")
|
|
||||||
.page(params[:page])
|
|
||||||
.per(50)
|
|
||||||
end
|
|
||||||
|
|
||||||
def hide
|
|
||||||
hide_proposal @proposal
|
|
||||||
end
|
|
||||||
|
|
||||||
def moderate
|
|
||||||
@proposals = @proposals.where(id: params[:proposal_ids])
|
|
||||||
|
|
||||||
if params[:hide_proposals].present?
|
|
||||||
@proposals.accessible_by(current_ability, :hide).each {|proposal| hide_proposal proposal}
|
|
||||||
|
|
||||||
elsif params[:ignore_flags].present?
|
|
||||||
@proposals.accessible_by(current_ability, :ignore_flag).each(&:ignore_flag)
|
|
||||||
|
|
||||||
elsif params[:block_authors].present?
|
|
||||||
author_ids = @proposals.pluck(:author_id).uniq
|
|
||||||
User.where(id: author_ids).accessible_by(current_ability, :block).each {|user| block_user user}
|
|
||||||
end
|
|
||||||
|
|
||||||
redirect_to request.query_parameters.merge(action: :index)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_proposals
|
def resource_model
|
||||||
@proposals = Proposal.accessible_by(current_ability, :moderate)
|
Proposal
|
||||||
end
|
end
|
||||||
|
|
||||||
def hide_proposal(proposal)
|
|
||||||
proposal.hide
|
|
||||||
Activity.log(current_user, :hide, proposal)
|
|
||||||
end
|
|
||||||
|
|
||||||
def block_user(user)
|
|
||||||
user.block
|
|
||||||
Activity.log(current_user, :block, user)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user