Merge pull request #596 from AyuntamientoMadrid/refactors_moderate_actions

Refactors moderate actions
This commit is contained in:
Juanjo Bazán
2015-10-16 13:33:43 +02:00
6 changed files with 105 additions and 146 deletions

View File

@@ -1,5 +1,6 @@
module CommentableActions
extend ActiveSupport::Concern
include Polymorphic
def index
@resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all
@@ -59,29 +60,6 @@ module CommentableActions
end
private
def resource
@resource ||= instance_variable_get("@#{resource_name}")
end
def resource_name
@resource_name ||= resource_model.to_s.downcase
end
def set_resource_instance
instance_variable_set("@#{resource_name}", @resource)
end
def set_resources_instance
instance_variable_set("@#{resource_name.pluralize}", @resources)
end
def set_resource_votes(instance)
send("set_#{resource_name}_votes", instance)
end
def strong_params
send("#{resource_name}_params")
end
def track_event
ahoy.track "#{resource_name}_created".to_sym, "#{resource_name}_id": resource.id
@@ -104,4 +82,8 @@ module CommentableActions
def parse_search_terms
@search_terms = params[:search] if params[:search].present?
end
def set_resource_votes(instance)
send("set_#{resource_name}_votes", instance)
end
end

View 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

View File

@@ -0,0 +1,24 @@
module Polymorphic
private
def resource
@resource ||= instance_variable_get("@#{resource_name}")
end
def resource_name
@resource_name ||= resource_model.to_s.downcase
end
def set_resource_instance
instance_variable_set("@#{resource_name}", @resource)
end
def set_resources_instance
instance_variable_set("@#{resource_name.pluralize}", @resources)
end
def strong_params
send("#{resource_name}_params")
end
end

View File

@@ -1,53 +1,20 @@
class Moderation::CommentsController < Moderation::BaseController
include ModerateActions
has_filters %w{pending_flag_review all with_ignored_flag}, 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
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
def load_comments
@comments = Comment.accessible_by(current_ability, :moderate)
def resource_model
Comment
end
def hide_comment(comment)
comment.hide
Activity.log(current_user, :hide, comment)
def author_id
:user_id
end
def block_user(user)
user.block
Activity.log(current_user, :block, user)
end
end

View File

@@ -1,53 +1,17 @@
class Moderation::DebatesController < Moderation::BaseController
include ModerateActions
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]
before_action :load_resources, 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)
def resource_model
Debate
end
end

View File

@@ -1,54 +1,16 @@
class Moderation::ProposalsController < Moderation::BaseController
include ModerateActions
has_filters %w{pending_flag_review all with_ignored_flag}, 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
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
def load_proposals
@proposals = Proposal.accessible_by(current_ability, :moderate)
def resource_model
Proposal
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