Commit 1ed7d9c38fa74dbb38c61eedc1fcd6b00a1b3a4f
1 parent
8f42e790
Exists in
master
and in
29 other branches
fixing creation of comment
Showing
4 changed files
with
75 additions
and
82 deletions
Show diff stats
app/views/comment/_comment_form.rhtml
... | ... | @@ -5,17 +5,7 @@ |
5 | 5 | |
6 | 6 | <div class="post_comment_box <%= ((defined? show_form) && show_form) ? 'opened' : 'closed' %>"> |
7 | 7 | |
8 | -<% if display_link %> | |
9 | - <h4 onclick="var d = jQuery(this).parent('.post_comment_box'); | |
10 | - if (d.hasClass('closed')) { | |
11 | - d.removeClass('closed'); | |
12 | - d.addClass('opened'); | |
13 | - d.find('input[name=\'comment[title]\'], textarea').val(''); | |
14 | - d.find('.comment_form input[name=\'comment[<%= focus_on %>]\']').focus(); | |
15 | - }"> | |
16 | - <%= content_tag('a', '', :name => 'comment_form') + _('Post a comment') %> | |
17 | - </h4> | |
18 | -<% end %> | |
8 | +<%= link_to(_('Post a comment'), '#', :class => 'display-comment-form') if display_link %> | |
19 | 9 | |
20 | 10 | <% if !edition_mode && !pass_without_comment_captcha? %> |
21 | 11 | <div id="recaptcha-container" style="display: none"> |
... | ... | @@ -88,10 +78,14 @@ function check_captcha(button, confirm_action) { |
88 | 78 | |
89 | 79 | <% button_bar do %> |
90 | 80 | <%= submit_button('add', _('Post comment'), :onclick => "if(check_captcha(this)) { save_comment(this) } else { check_captcha(this, save_comment)};return false;") %> |
91 | - <%= button_to_function :cancel, _('Cancel'), "jQuery.colorbox.close();f=jQuery(this).parents('.post_comment_box'); f.removeClass('opened'); f.addClass('closed'); return false" %> | |
81 | + <% if !edition_mode %> | |
82 | + <%= button :cancel, _('Cancel'), '', :id => 'cancel-comment' %> | |
83 | + <% end %> | |
92 | 84 | <% end %> |
93 | 85 | <% end %> |
94 | 86 | |
95 | 87 | |
96 | 88 | </div><!-- end class="post_comment_box" --> |
97 | 89 | </div><!-- end class="page-comment-form" --> |
90 | + | |
91 | +<%= javascript_include_tag 'comment_form'%> | ... | ... |
app/views/content_viewer/view_page.rhtml
... | ... | @@ -95,7 +95,7 @@ |
95 | 95 | <% end %> |
96 | 96 | |
97 | 97 | <% if @page.accept_comments? && @comments_count > 1 %> |
98 | - <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form', :id => 'top-post-comment-button') %> | |
98 | + <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form', :id => 'top-post-comment-button', :onclick => "jQuery('#page-comment-form .display-comment-form').first().click();") %> | |
99 | 99 | <% end %> |
100 | 100 | |
101 | 101 | <ul class="article-comments-list"> | ... | ... |
public/javascripts/application.js
... | ... | @@ -754,69 +754,6 @@ function update_comment_count(element, new_count) { |
754 | 754 | |
755 | 755 | } |
756 | 756 | |
757 | -function save_comment(button) { | |
758 | - var $ = jQuery; | |
759 | - open_loading(DEFAULT_LOADING_MESSAGE); | |
760 | - var $button = $(button); | |
761 | - var form = $(button).parents("form"); | |
762 | - var post_comment_box = $(button).parents('.post_comment_box'); | |
763 | - var comment_div = $button.parents('.comments'); | |
764 | - $button.addClass('comment-button-loading'); | |
765 | - $.post(form.attr("action"), form.serialize(), function(data) { | |
766 | - | |
767 | - if(data.render_target == null) { | |
768 | - //Comment for approval | |
769 | - form.find("input[type='text']").add('textarea').each(function() { | |
770 | - this.value = ''; | |
771 | - }); | |
772 | - form.find('.errorExplanation').remove(); | |
773 | - | |
774 | - } else if(data.render_target == 'form') { | |
775 | - //Comment with errors | |
776 | - var page_comment_form = $(button).parents('.page-comment-form'); | |
777 | - $.scrollTo(page_comment_form); | |
778 | - page_comment_form.html(data.html); | |
779 | - | |
780 | - } else if($('#' + data.render_target).size() > 0) { | |
781 | - //Comment of reply | |
782 | - $('#'+ data.render_target).replaceWith(data.html); | |
783 | - $('#' + data.render_target).effect("highlight", {}, 3000); | |
784 | - $.colorbox.close(); | |
785 | - | |
786 | - } else { | |
787 | - //New comment of article | |
788 | - comment_div.find('.article-comments-list').append(data.html); | |
789 | - | |
790 | - form.find("input[type='text']").add('textarea').each(function() { | |
791 | - this.value = ''; | |
792 | - }); | |
793 | - | |
794 | - form.find('.errorExplanation').remove(); | |
795 | - $.colorbox.close(); | |
796 | - | |
797 | - } | |
798 | - | |
799 | - comment_div.find('.comment-count').add('#article-header .comment-count').each(function() { | |
800 | - var count = parseInt($(this).html()); | |
801 | - update_comment_count($(this), count + 1); | |
802 | - }); | |
803 | - | |
804 | - if(jQuery('#recaptcha_response_field').val()){ | |
805 | - Recaptcha.reload(); | |
806 | - } | |
807 | - | |
808 | - if(data.msg != null) { | |
809 | - display_notice(data.msg); | |
810 | - } | |
811 | - | |
812 | - close_loading(); | |
813 | - post_comment_box.removeClass('opened'); | |
814 | - post_comment_box.addClass('closed'); | |
815 | - $button.removeClass('comment-button-loading'); | |
816 | - $button.enable(); | |
817 | - }, 'json'); | |
818 | -} | |
819 | - | |
820 | 757 | function remove_comment(button, url, msg) { |
821 | 758 | var $ = jQuery; |
822 | 759 | var $button = $(button); | ... | ... |
public/javascripts/comment_form.js
1 | 1 | jQuery('.display-comment-form').click(function(){ |
2 | - toggleBox('.post_comment_box'); | |
2 | + toggleBox(jQuery(this).parents('.post_comment_box')); | |
3 | 3 | jQuery('.display-comment-form').hide(); |
4 | 4 | jQuery('form.comment_form input').first().focus(); |
5 | 5 | return false; |
6 | 6 | }); |
7 | 7 | |
8 | -jQuery('#cancel-comment').click(function(){ | |
9 | - toggleBox('.post_comment_box'); | |
8 | +jQuery('#cancel-comment').live("click", function(){ | |
9 | + toggleBox(jQuery(this).parents('.post_comment_box')); | |
10 | 10 | jQuery('.display-comment-form').show(); |
11 | - return false | |
11 | + return false; | |
12 | 12 | }) |
13 | 13 | |
14 | -function toggleBox(div_selector){ | |
15 | - div = jQuery(div_selector); | |
14 | +function toggleBox(div){ | |
16 | 15 | if(div.hasClass('opened')) { |
17 | 16 | div.removeClass('opened'); |
18 | 17 | div.addClass('closed'); |
... | ... | @@ -21,3 +20,66 @@ function toggleBox(div_selector){ |
21 | 20 | div.addClass('opened'); |
22 | 21 | } |
23 | 22 | } |
23 | + | |
24 | +function save_comment(button) { | |
25 | + var $ = jQuery; | |
26 | + open_loading(DEFAULT_LOADING_MESSAGE); | |
27 | + var $button = $(button); | |
28 | + var form = $(button).parents("form"); | |
29 | + var post_comment_box = $(button).parents('.post_comment_box'); | |
30 | + var comment_div = $button.parents('.comments'); | |
31 | + $button.addClass('comment-button-loading'); | |
32 | + $.post(form.attr("action"), form.serialize(), function(data) { | |
33 | + | |
34 | + if(data.render_target == null) { | |
35 | + //Comment for approval | |
36 | + form.find("input[type='text']").add('textarea').each(function() { | |
37 | + this.value = ''; | |
38 | + }); | |
39 | + form.find('.errorExplanation').remove(); | |
40 | + | |
41 | + } else if(data.render_target == 'form') { | |
42 | + //Comment with errors | |
43 | + var page_comment_form = $(button).parents('.page-comment-form'); | |
44 | + $.scrollTo(page_comment_form); | |
45 | + page_comment_form.html(data.html); | |
46 | + | |
47 | + } else if($('#' + data.render_target).size() > 0) { | |
48 | + //Comment of reply | |
49 | + $('#'+ data.render_target).replaceWith(data.html); | |
50 | + $('#' + data.render_target).effect("highlight", {}, 3000); | |
51 | + $.colorbox.close(); | |
52 | + | |
53 | + } else { | |
54 | + //New comment of article | |
55 | + comment_div.find('.article-comments-list').append(data.html); | |
56 | + | |
57 | + form.find("input[type='text']").add('textarea').each(function() { | |
58 | + this.value = ''; | |
59 | + }); | |
60 | + | |
61 | + form.find('.errorExplanation').remove(); | |
62 | + $.colorbox.close(); | |
63 | + | |
64 | + } | |
65 | + | |
66 | + comment_div.find('.comment-count').add('#article-header .comment-count').each(function() { | |
67 | + var count = parseInt($(this).html()); | |
68 | + update_comment_count($(this), count + 1); | |
69 | + }); | |
70 | + | |
71 | + if(jQuery('#recaptcha_response_field').val()){ | |
72 | + Recaptcha.reload(); | |
73 | + } | |
74 | + | |
75 | + if(data.msg != null) { | |
76 | + display_notice(data.msg); | |
77 | + } | |
78 | + | |
79 | + close_loading(); | |
80 | + toggleBox($button.closest('.post_comment_box')); | |
81 | + $('.display-comment-form').show(); | |
82 | + $button.removeClass('comment-button-loading'); | |
83 | + $button.enable(); | |
84 | + }, 'json'); | |
85 | +} | ... | ... |