From 19ba94fd31cef2de1f1746b25a47e9a6b18a37b2 Mon Sep 17 00:00:00 2001 From: joshua stein Date: Sun, 30 Dec 2012 12:11:47 -0600 Subject: [PATCH] don't collapse moderated threads, remove them entirely --- app/models/comment.rb | 30 +++++++++++++++++++++++++++- app/views/comments/_comment.html.erb | 7 +------ app/views/stories/show.html.erb | 3 +-- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index a59e146..226b5f6 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -99,6 +99,16 @@ class Comment < ActiveRecord::Base is_deleted? || is_moderated? end + def gone_text + if self.is_moderated? + "Thread removed by moderator " << + self.moderation.try(:moderator).try(:username).to_s << ": " << + (self.moderation.try(:reason) || "No reason given") + else + "Comment removed by author" + end + end + def mark_submitter Keystore.increment_value_for("user:#{self.user_id}:comments_posted") end @@ -304,9 +314,27 @@ class Comment < ActiveRecord::Base new_ordered.push c end + # for moderated threads, remove the entire sub-tree at the moderation point + do_reject = false + deleted_indent_level = 0 + new_ordered.reject!{|c| + if do_reject && (c.indent_level > deleted_indent_level) + true + else + if c.is_moderated? + do_reject = true + deleted_indent_level = c.indent_level + else + do_reject = false + end + + false + end + } + new_ordered end - + def is_editable_by_user?(user) if user && user.id == self.user_id if self.is_moderated? diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index a2c2b4e..47cbbd0 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -73,12 +73,7 @@ class="comment <%= comment.current_vote ? (comment.current_vote[:vote] == 1 ? <% if comment.is_gone? %>

- <% if comment.is_moderated? %> - [Thread removed by moderator <%= comment.moderation.try(:moderator). - try(:username) %>: <%= comment.moderation.try(:reason) %>] - <% else %> - [Comment removed by author] - <% end %> + [<%= comment.gone_text %>]

<% else %> diff --git a/app/views/stories/show.html.erb b/app/views/stories/show.html.erb index 8be0a2b..6b90f4f 100644 --- a/app/views/stories/show.html.erb +++ b/app/views/stories/show.html.erb @@ -21,8 +21,7 @@ <% indent_level = -1 %> <% @comments.each_with_index do |comment,x| %> <% if comment.indent_level > indent_level %> -
    "> +
      <% elsif comment.indent_level < indent_level %> <% (indent_level - comment.indent_level).times do %>