diff --git a/app/controllers/moderation/debates_controller.rb b/app/controllers/moderation/debates_controller.rb index cb5599092..622116765 100644 --- a/app/controllers/moderation/debates_controller.rb +++ b/app/controllers/moderation/debates_controller.rb @@ -4,4 +4,5 @@ class Moderation::DebatesController < Moderation::BaseController @debate = Debate.find(params[:id]) @debate.hide end + end \ No newline at end of file diff --git a/app/controllers/moderation/users_controller.rb b/app/controllers/moderation/users_controller.rb new file mode 100644 index 000000000..5dc2178a6 --- /dev/null +++ b/app/controllers/moderation/users_controller.rb @@ -0,0 +1,15 @@ +class Moderation::UsersController < Moderation::BaseController + + def hide + user = User.find(params[:id]) + debates_ids = Debate.where(author_id: user.id).pluck(:id) + comments_ids = Comment.where(user_id: user.id).pluck(:id) + + user.hide + Debate.hide_all debates_ids + Comment.hide_all comments_ids + + redirect_to debates_path + end + +end \ No newline at end of file diff --git a/app/models/comment.rb b/app/models/comment.rb index 0141c1ffa..e9f45edc3 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -9,7 +9,7 @@ class Comment < ActiveRecord::Base validates :user, presence: true belongs_to :commentable, polymorphic: true - belongs_to :user + belongs_to :user, -> { with_deleted } default_scope { includes(:user) } scope :recent, -> { order(id: :desc) } @@ -36,6 +36,10 @@ class Comment < ActiveRecord::Base votes_for.size end + def not_visible? + hidden? || user.hidden? + end + # TODO: faking counter cache since there is a bug with acts_as_nested_set :counter_cache # Remove when https://github.com/collectiveidea/awesome_nested_set/issues/294 is fixed # and reset counters using diff --git a/app/models/debate.rb b/app/models/debate.rb index bd7936e73..6a411c346 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -11,7 +11,7 @@ class Debate < ActiveRecord::Base acts_as_taggable acts_as_paranoid column: :hidden_at - belongs_to :author, class_name: 'User', foreign_key: 'author_id' + belongs_to :author, -> {with_deleted}, class_name: 'User', foreign_key: 'author_id' validates :title, presence: true validates :description, presence: true diff --git a/app/views/comments/_actions.html.erb b/app/views/comments/_actions.html.erb index ecc9bc9c0..8cc1b114f 100644 --- a/app/views/comments/_actions.html.erb +++ b/app/views/comments/_actions.html.erb @@ -1,5 +1,10 @@ | <%= link_to t("admin.actions.hide").capitalize, hide_moderation_comment_path(comment), - method: :put, remote: true, data: { confirm: t('admin.actions.confirm') } %> + method: :put, remote: true, data: { confirm: t('admin.actions.confirm') } %> + <% unless comment.user.hidden? %> + | + <%= link_to t("admin.actions.hide_author").capitalize, hide_moderation_user_path(comment.user_id, debate_id: @debate.id), + method: :put, data: { confirm: t('admin.actions.confirm') } %> + <% end %> \ No newline at end of file diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index d0317d52f..eb6e1722d 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -1,21 +1,21 @@