mirror of
https://github.com/silverstripe/silverstripe-comments
synced 2024-10-22 09:05:49 +00:00
ENHANCEMENT: Example JavaScript file responding to events to render changes in comment status
This commit is contained in:
parent
acd834a8d3
commit
5f772e7480
137
javascript/commenting.js
Normal file
137
javascript/commenting.js
Normal file
@ -0,0 +1,137 @@
|
||||
/*
|
||||
Example of interacting with events from the comments interface javascript, for oldest threaded comments
|
||||
at the top of the page (Lineage ASC). Override in your own theme if different behaviour required.
|
||||
*/
|
||||
(function($){
|
||||
|
||||
$( document ).ready(function() {
|
||||
function regenerateCaptcha() {
|
||||
Recaptcha.create("YOUR KEY", // update with your api key
|
||||
"Captcha",
|
||||
{
|
||||
theme: "red",
|
||||
callback: Recaptcha.focus_response_field
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$(document).on('onBeforeLoadNewPageOfComments', function(e) {
|
||||
// do something such as add a spinner
|
||||
});
|
||||
|
||||
|
||||
$(document).on('onAfterLoadNewPageOfComments', function(e) {
|
||||
// do something like remove a spinner
|
||||
});
|
||||
|
||||
$(document).on('replyToCommentButtonClicked', function(e) {
|
||||
// perhaps indicate the button has been pressed somehow
|
||||
});
|
||||
|
||||
$(document).on('cancelReplyToCommentButtonClicked', function(e) {
|
||||
//alert('after new page of comments is loaded');
|
||||
});
|
||||
|
||||
$(document).on('commentFormInitliased', function(e) {
|
||||
/*
|
||||
If using Google's recaptcha you can regenerate it here:
|
||||
|
||||
$(document).ready(function() {
|
||||
regenerateCaptcha();
|
||||
});
|
||||
*/
|
||||
});
|
||||
|
||||
$(document).on('onAfterSuccessfulNewComment', function(e) {
|
||||
var newcomment = null;
|
||||
if (e.parentcommentid == 0) {
|
||||
//console.log('No parent ID');
|
||||
}
|
||||
else {
|
||||
var commentdomid = '#comment-'+e.parentcommentid;
|
||||
var selector = "[data-comment-id='"+e.parentcommentid+"']";
|
||||
var comment = $(selector);
|
||||
comment.parent().find('li.cancelReplyButton').find('button').click();
|
||||
newcomment = comment;
|
||||
//comment.effect("highlight");
|
||||
}
|
||||
|
||||
// insert a message into the top of the comment to indicate that the comment has been posted
|
||||
if (e.requiresmoderation) {
|
||||
var html = '<p class="commentsuccess">'+e.message+'</p>';
|
||||
var msg = $(html);
|
||||
// new root level comment
|
||||
if (e.parentcommentid == 0) {
|
||||
msg.insertAfter($('#Form_CommentsForm'));
|
||||
setTimeout(function() {msg.fadeOut(3000);},2000);
|
||||
} else {
|
||||
// a reply
|
||||
newcomment.prepend(msg);
|
||||
$('body,html').animate({
|
||||
scrollTop: newcomment.offset().top - 30
|
||||
}, 200);
|
||||
setTimeout(function() {msg.fadeOut(3000);},2000);
|
||||
}
|
||||
|
||||
} else {
|
||||
var url = '/CommentingController/viewcomment/'+e.commentid;
|
||||
|
||||
$.ajax({
|
||||
url: url,
|
||||
cache: false,
|
||||
success: function(html){
|
||||
var cssclass = 'depth'+e.depth+' comment notspam '
|
||||
// include the successful posting message
|
||||
html = '<p class="commentsuccess">'+e.message+'</p>'+html;
|
||||
var nchtml = '<li class="'+cssclass+'">'+html+'</li>';
|
||||
|
||||
// insert replying comment after parent
|
||||
// FIXME - order needs to be taken account of here, e.g. Lineage DESC, Lineage ASC
|
||||
if (e.parentcommentid) {
|
||||
$(nchtml).insertAfter(newcomment.parent());
|
||||
} else {
|
||||
$('ul.comments-list').append(nchtml);
|
||||
newcomment = $('ul.comments-list').find('li.comment').last(); // FIXME - this depends on direction of comment ordering
|
||||
}
|
||||
|
||||
$('html,body').animate({
|
||||
scrollTop: newcomment.offset().top - 30
|
||||
}, 100);
|
||||
},
|
||||
failure: function(html) {
|
||||
alert(html);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
var submitbutton = $('#Form_CommentsForm_action_doPostComment');
|
||||
submitbutton.val('Post'); // FIXME i18n
|
||||
submitbutton.removeAttr('disabled');
|
||||
});
|
||||
|
||||
$(document).on('onBeforeValidateNewCommentForm', function(e) {
|
||||
// event thrown before form is validated
|
||||
});
|
||||
|
||||
$(document).on('onAfterModerationClick', function(e) {
|
||||
e.commentNode.find('.action-links').find('a').addClass('button radius alert small');
|
||||
});
|
||||
|
||||
$(document).on('onBeforeSubmitNewCommentForm', function(e) {
|
||||
// before form submission, perhaps add a spinner
|
||||
var submitbutton = $('#Form_CommentsForm_action_doPostComment');
|
||||
submitbutton.val('Posting'); // FIXME i18n
|
||||
submitbutton.attr('disabled',1);
|
||||
});
|
||||
|
||||
$(document).on('onAfterServerValidationFailedNewCommentForm', function(e) {
|
||||
var submitbutton = $('#Form_CommentsForm_action_doPostComment');
|
||||
submitbutton.val('Post'); // FIXME i18n
|
||||
submitbutton.removeAttr('disabled');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
})(jQuery);
|
Loading…
x
Reference in New Issue
Block a user