Commit 1ed7d9c38fa74dbb38c61eedc1fcd6b00a1b3a4f

Authored by Victor Costa
1 parent 8f42e790

fixing creation of comment

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 +}
... ...