comment_form.js 3.03 KB
jQuery('.display-comment-form').unbind();
jQuery('.display-comment-form').click(function(){
  var $button = jQuery(this);
  toggleBox($button.parents('.post_comment_box'));
  jQuery($button).hide();
  $button.closest('.page-comment-form').find('input[type="text"]:visible,textarea').first().focus();
  return false;
});

jQuery('#cancel-comment').die();
jQuery('#cancel-comment').live("click", function(){
  var $button = jQuery(this);
  toggleBox($button.parents('.post_comment_box'));
  show_display_comment_button();
  var page_comment_form = $button.parents('.page-comment-form');
  page_comment_form.find('.errorExplanation').remove();
  return false;
});

function toggleBox(div){
  if(div.hasClass('opened')) {
    div.removeClass('opened');
    div.addClass('closed');
  } else {
    div.removeClass('closed');
    div.addClass('opened');
  }
}

function save_comment(button) {
  var $ = jQuery;
  open_loading(DEFAULT_LOADING_MESSAGE);
  var $button = $(button);
  var form = $button.parents("form");
  var post_comment_box = $button.parents('.post_comment_box');
  var comment_div = $button.parents('.comments');
  var page_comment_form = $button.parents('.page-comment-form');
  $button.addClass('comment-button-loading');
  $.post(form.attr("action"), form.serialize(), function(data) {

    if(data.render_target == null) {
      //Comment for approval
      form.find("input[type='text']").add('textarea').each(function() {
        this.value = '';
      });
      page_comment_form.find('.errorExplanation').remove();
    } else if(data.render_target == 'form') {
      //Comment with errors
      $.scrollTo(page_comment_form);
      page_comment_form.html(data.html);
      $('.display-comment-form').hide();
    } else if($('#' + data.render_target).size() > 0) {
      //Comment of reply
      $('#'+ data.render_target).replaceWith(data.html);
      $('#' + data.render_target).effect("highlight", {}, 3000);
      noosfero.modal.close();
      increment_comment_count(comment_div);
    } else {
      //New comment of article
      comment_div.find('.article-comments-list').append(data.html);

      form.find("input[type='text']").add('textarea').each(function() {
        this.value = '';
      });

      page_comment_form.find('.errorExplanation').remove();
      noosfero.modal.close();
      increment_comment_count(comment_div);
    }

    if(jQuery('#recaptcha_response_field').val()){
      Recaptcha.reload();
    }

    if(data.msg != null) {
       display_notice(data.msg);
    }
    close_loading();
    toggleBox($button.closest('.post_comment_box'));
    show_display_comment_button();
    $button.removeClass('comment-button-loading');
    $button.enable();
  }, 'json');
}

function increment_comment_count(comment_div) {
  comment_div.find('.comment-count').add('#article-header .comment-count').each(function() {
    var count = parseInt(jQuery(this).html());
    update_comment_count(jQuery(this), count + 1);
  });
}

function show_display_comment_button() {
  if(jQuery('.post_comment_box.opened').length==0)
    jQuery('.display-comment-form').show();
}