Commit c08a6f9452597b1edcdfd6f998be680abe0214f3

Authored by Victor Costa
1 parent 50facea9

Fixing anchor for comments that are inside groups

app/views/shared/tiny_mce.rhtml
@@ -11,10 +11,8 @@ @@ -11,10 +11,8 @@
11 <% else %> 11 <% else %>
12 first_line = "print,separator,copy,paste,separator,undo,redo,separator,search,replace,separator,forecolor,fontsizeselect,formatselect" 12 first_line = "print,separator,copy,paste,separator,undo,redo,separator,search,replace,separator,forecolor,fontsizeselect,formatselect"
13 second_line = "bold,italic,underline,strikethrough,separator,bullist,numlist,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,link,unlink,image,table,separator,cleanup,code,macros" 13 second_line = "bold,italic,underline,strikethrough,separator,bullist,numlist,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,link,unlink,image,table,separator,cleanup,code,macros"
14 - <% Environment.macros[environment.id].each do |macro_name, plugin_instance| %>  
15 - <% if macro_configuration(macro_name)[:icon_path] %>  
16 - second_line += ',<%=macro_name %>'  
17 - <% end %> 14 + <% macros_with_buttons.each do |macro_name, plugin_instance| %>
  15 + second_line += ',<%=macro_name %>'
18 <% end %> 16 <% end %>
19 <% end %> 17 <% end %>
20 18
plugins/comment_group_macro/controllers/public/comment_group_macro_plugin_public_controller.rb 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +class CommentGroupMacroPluginPublicController < PublicController
  2 + append_view_path File.join(File.dirname(__FILE__) + '/../views')
  3 +
  4 + def comment_group
  5 + render :json => { :group_id => Comment.find(params[:id]).group_id }
  6 + end
  7 +
  8 +end
plugins/comment_group_macro/lib/comment_group_macro_plugin.rb
@@ -43,4 +43,8 @@ class CommentGroupMacroPlugin &lt; Noosfero::Plugin @@ -43,4 +43,8 @@ class CommentGroupMacroPlugin &lt; Noosfero::Plugin
43 } 43 }
44 end 44 end
45 45
  46 + def js_files
  47 + 'comment_group_macro.js'
  48 + end
  49 +
46 end 50 end
plugins/comment_group_macro/public/comment_group_macro.js 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +var comment_group_anchor;
  2 +jQuery(document).ready(function($) {
  3 + var anchor = window.location.hash;
  4 + if(anchor.length==0) return;
  5 +
  6 + var val = anchor.split('-'); //anchor format = #comment-\d+
  7 + if(val.length!=2 || val[0]!='#comment') return;
  8 + if($('div[data-macro=display_comments]').length==0) return; //display_comments div must exists
  9 + var comment_id = val[1];
  10 + if(!/^\d+$/.test(comment_id)) return; //test for integer
  11 +
  12 + comment_group_anchor = anchor;
  13 + var url = '/plugin/comment_group_macro/public/comment_group/'+comment_id;
  14 + $.getJSON(url, function(data) {
  15 + if(data.group_id!=null) {
  16 + var button = $('div.comment_group_'+ data.group_id + ' a');
  17 + button.click();
  18 + $.scrollTo(button);
  19 + }
  20 + });
  21 +});
plugins/comment_group_macro/test/functional/comment_group_macro_plugin_public_controller_test.rb 0 → 100644
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +require File.dirname(__FILE__) + '/../../controllers/public/comment_group_macro_plugin_public_controller'
  3 +
  4 +# Re-raise errors caught by the controller.
  5 +class CommentGroupMacroPluginPublicController; def rescue_action(e) raise e end; end
  6 +
  7 +class CommentGroupMacroPluginPublicControllerTest < ActionController::TestCase
  8 +
  9 + def setup
  10 + @controller = CommentGroupMacroPluginPublicController.new
  11 + @request = ActionController::TestRequest.new
  12 + @response = ActionController::TestResponse.new
  13 +
  14 + @profile = create_user('testuser').person
  15 + @article = profile.articles.build(:name => 'test')
  16 + @article.save!
  17 + end
  18 + attr_reader :article
  19 + attr_reader :profile
  20 +
  21 + should 'be able to return group_id for a comment' do
  22 + comment = fast_create(Comment, :source_id => article, :author_id => profile, :title => 'a comment', :body => 'lalala', :group_id => 0)
  23 + xhr :get, :comment_group, :id => comment.id
  24 + assert_match /\{\"group_id\":0\}/, @response.body
  25 + end
  26 +
  27 + should 'return group_id=null for a global comment' do
  28 + comment = fast_create(Comment, :source_id => article, :author_id => profile, :title => 'a comment', :body => 'lalala' )
  29 + xhr :get, :comment_group, :id => comment.id
  30 + assert_match /\{\"group_id\":null\}/, @response.body
  31 + end
  32 +
  33 +end
plugins/comment_group_macro/views/_comment_group.rhtml
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 :loaded => visual_effect(:highlight, "comments_list_group_#{group_id}"), 6 :loaded => visual_effect(:highlight, "comments_list_group_#{group_id}"),
7 :method => :post, 7 :method => :post,
8 :condition => "!groupVisible(#{group_id})", 8 :condition => "!groupVisible(#{group_id})",
9 - :complete => "jQuery('div.comment-group-loading-#{group_id}').removeClass('comment-button-loading')")%> 9 + :complete => "loadCompleted(#{group_id})")%>
10 </div> 10 </div>
11 <!-- FIXME: css file --> 11 <!-- FIXME: css file -->
12 <div id="comments_group_count_<%= group_id %>" style="float: right; vertical-align: middle; padding-left: 3px; padding-right: 5px; color: #5AC1FC"><span id="comment-count-<%= group_id %>" class='comment-count'><%= count %></span></div> 12 <div id="comments_group_count_<%= group_id %>" style="float: right; vertical-align: middle; padding-left: 3px; padding-right: 5px; color: #5AC1FC"><span id="comment-count-<%= group_id %>" class='comment-count'><%= count %></span></div>
@@ -33,9 +33,17 @@ @@ -33,9 +33,17 @@
33 return jQuery('div.comments_list_toggle_group_'+group).is(':visible'); 33 return jQuery('div.comments_list_toggle_group_'+group).is(':visible');
34 } 34 }
35 35
  36 + function loadCompleted(group) {
  37 + jQuery('div.comment-group-loading-'+group).removeClass('comment-button-loading')
  38 + if(comment_group_anchor) {
  39 + jQuery.scrollTo(jQuery(comment_group_anchor));
  40 + comment_group_anchor = null;
  41 + }
  42 + }
  43 +
36 (function($) { 44 (function($) {
37 var button = $('div.comment_group_<%= group_id %> a'); 45 var button = $('div.comment_group_<%= group_id %> a');
38 - button.click(function() { 46 + button.live('click', function() {
39 var div = $('div.comments_list_toggle_group_<%= group_id %>') 47 var div = $('div.comments_list_toggle_group_<%= group_id %>')
40 if(!div.is(':visible')) 48 if(!div.is(':visible'))
41 $('div.comment-group-loading-<%= group_id %>').addClass('comment-button-loading'); 49 $('div.comment-group-loading-<%= group_id %>').addClass('comment-button-loading');