Commit d570dc448c7d2138fbce861371142a4f74414666

Authored by Antonio Terceiro
1 parent c03afdf0

Properly update UI after comment removal/spam mark

ActionItem2306
app/helpers/content_viewer_helper.rb
... ... @@ -8,7 +8,7 @@ module ContentViewerHelper
8 8 if n == 0
9 9 _('No comments yet')
10 10 else
11   - n_('One comment', '%{comments} comments', n) % { :comments => n }
  11 + n_('One comment', '<span class="comment-count">%{comments}</span> comments', n) % { :comments => n }
12 12 end
13 13 end
14 14  
... ...
app/views/content_viewer/_comment.rhtml
... ... @@ -65,7 +65,7 @@
65 65  
66 66 <% if logged_in? && (user == profile || user == comment.author || user.has_permission?(:moderate_comments, profile)) %>
67 67 &nbsp;
68   - <%= link_to_function(_('Remove'), 'remove_comment(this, %s, %s); return false ;' % [url_for(:profile => params[:profile], :remove_comment => comment.id, :view => params[:view]).to_json, _('Are you sure you want to remove this comment and all its replies?').to_json], :class => 'comment-footer comment-footer-link comment-footer-hide') %>
  68 + <%= link_to_function(_('Remove'), 'remove_comment(this, %s, %s); return false ;' % [url_for(:profile => params[:profile], :remove_comment => comment.id, :view => params[:view]).to_json, _('Are you sure you want to remove this comment and all its replies?').to_json], :class => 'comment-footer comment-footer-link comment-footer-hide remove-children') %>
69 69 <% end %>
70 70  
71 71 <% unless comment.spam? %>
... ...
public/javascripts/application.js
... ... @@ -693,7 +693,19 @@ function remove_comment(button, url, msg) {
693 693 $button.addClass('comment-button-loading');
694 694 $.post(url, function(data) {
695 695 if (data.ok) {
696   - $button.closest('.article-comment').slideUp();
  696 + var $comment = $button.closest('.article-comment');
  697 + var $replies = $comment.find('.comment-replies .article-comment');
  698 + $comment.slideUp();
  699 + var comments_removed = 1;
  700 + if ($button.hasClass('remove-children')) {
  701 + comments_removed = 1 + $replies.size();
  702 + } else {
  703 + $replies.appendTo('.article-comments-list');
  704 + }
  705 + $('.comment-count').each(function() {
  706 + var count = parseInt($(this).html());
  707 + $(this).html(count - comments_removed);
  708 + });
697 709 }
698 710 });
699 711 }
... ...