from users moderation screen but also from proposals/debates/comments bulk moderation screens
54 lines
1.4 KiB
Ruby
54 lines
1.4 KiB
Ruby
class Moderation::DebatesController < Moderation::BaseController
|
|
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
|
|
has_orders %w{flags created_at}, only: :index
|
|
|
|
before_action :load_debates, only: [:index, :moderate]
|
|
|
|
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
|
|
|
|
def load_debates
|
|
@debates = Debate.accessible_by(current_ability, :moderate)
|
|
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
|