mirror of
https://github.com/silverstripe/silverstripe-comments
synced 2024-10-22 11:05:49 +02:00
Merge pull request #51 from PutmanMedia/pulls/remove-ajax-commenting
API Removed ajax comment submission
This commit is contained in:
commit
0c27bc0f66
@ -25,7 +25,7 @@ class Commenting {
|
|||||||
private static $default_config = array(
|
private static $default_config = array(
|
||||||
'require_login' => false, // boolean, whether a user needs to login
|
'require_login' => false, // boolean, whether a user needs to login
|
||||||
'required_permission' => false, // required permission to comment (or array of permissions)
|
'required_permission' => false, // required permission to comment (or array of permissions)
|
||||||
'use_ajax_commenting' => true, // use ajax to post comments.
|
'include_js' => true, // Enhance operation by ajax behaviour on moderation links
|
||||||
'use_gravatar' => false, // set to true to show gravatar icons,
|
'use_gravatar' => false, // set to true to show gravatar icons,
|
||||||
'gravatar_size' => 80, // size of gravatar in pixels. This is the same as the standard default
|
'gravatar_size' => 80, // size of gravatar in pixels. This is the same as the standard default
|
||||||
'show_comments_when_disabled' => false, // when comments are disabled should we show older comments (if available)
|
'show_comments_when_disabled' => false, // when comments are disabled should we show older comments (if available)
|
||||||
@ -36,7 +36,7 @@ class Commenting {
|
|||||||
'require_moderation' => false,
|
'require_moderation' => false,
|
||||||
'html_allowed' => false, // allow for sanitized HTML in comments
|
'html_allowed' => false, // allow for sanitized HTML in comments
|
||||||
'html_allowed_elements' => array('a', 'img', 'i', 'b'),
|
'html_allowed_elements' => array('a', 'img', 'i', 'b'),
|
||||||
'use_preview' => false, // preview formatted comment (when allowing HTML)
|
'use_preview' => false, // preview formatted comment (when allowing HTML). Requires include_js=true
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -251,20 +251,20 @@ class CommentingController extends Controller {
|
|||||||
|
|
||||||
$fields = new FieldList(
|
$fields = new FieldList(
|
||||||
$dataFields = new CompositeField(
|
$dataFields = new CompositeField(
|
||||||
TextField::create("Name", _t('CommentInterface.YOURNAME', 'Your name'))
|
TextField::create("Name", _t('CommentInterface.YOURNAME', 'Your name'))
|
||||||
->setCustomValidationMessage(_t('CommentInterface.YOURNAME_MESSAGE_REQUIRED', 'Please enter your name'))
|
->setCustomValidationMessage(_t('CommentInterface.YOURNAME_MESSAGE_REQUIRED', 'Please enter your name'))
|
||||||
->setAttribute('data-message-required', _t('CommentInterface.YOURNAME_MESSAGE_REQUIRED', 'Please enter your name')),
|
->setAttribute('data-message-required', _t('CommentInterface.YOURNAME_MESSAGE_REQUIRED', 'Please enter your name')),
|
||||||
|
|
||||||
EmailField::create("Email", _t('CommentingController.EMAILADDRESS', "Your email address (will not be published)"))
|
EmailField::create("Email", _t('CommentingController.EMAILADDRESS', "Your email address (will not be published)"))
|
||||||
->setCustomValidationMessage(_t('CommentInterface.EMAILADDRESS_MESSAGE_REQUIRED', 'Please enter your email address'))
|
->setCustomValidationMessage(_t('CommentInterface.EMAILADDRESS_MESSAGE_REQUIRED', 'Please enter your email address'))
|
||||||
->setAttribute('data-message-required', _t('CommentInterface.EMAILADDRESS_MESSAGE_REQUIRED', 'Please enter your email address'))
|
->setAttribute('data-message-required', _t('CommentInterface.EMAILADDRESS_MESSAGE_REQUIRED', 'Please enter your email address'))
|
||||||
->setAttribute('data-message-email', _t('CommentInterface.EMAILADDRESS_MESSAGE_EMAIL', 'Please enter a valid email address')),
|
->setAttribute('data-message-email', _t('CommentInterface.EMAILADDRESS_MESSAGE_EMAIL', 'Please enter a valid email address')),
|
||||||
|
|
||||||
TextField::create("URL", _t('CommentingController.WEBSITEURL', "Your website URL"))
|
TextField::create("URL", _t('CommentingController.WEBSITEURL', "Your website URL"))
|
||||||
->setAttribute('data-message-url', _t('CommentInterface.COMMENT_MESSAGE_URL', 'Please enter a valid URL')),
|
->setAttribute('data-message-url', _t('CommentInterface.COMMENT_MESSAGE_URL', 'Please enter a valid URL')),
|
||||||
|
|
||||||
TextareaField::create("Comment", _t('CommentingController.COMMENTS', "Comments"))
|
TextareaField::create("Comment", _t('CommentingController.COMMENTS', "Comments"))
|
||||||
->setCustomValidationMessage(_t('CommentInterface.COMMENT_MESSAGE_REQUIRED', 'Please enter your comment'))
|
->setCustomValidationMessage(_t('CommentInterface.COMMENT_MESSAGE_REQUIRED', 'Please enter your comment'))
|
||||||
->setAttribute('data-message-required', _t('CommentInterface.COMMENT_MESSAGE_REQUIRED', 'Please enter your comment'))
|
->setAttribute('data-message-required', _t('CommentInterface.COMMENT_MESSAGE_REQUIRED', 'Please enter your comment'))
|
||||||
),
|
),
|
||||||
HiddenField::create("ParentID"),
|
HiddenField::create("ParentID"),
|
||||||
@ -416,24 +416,16 @@ class CommentingController extends Controller {
|
|||||||
} else {
|
} else {
|
||||||
$comment->write();
|
$comment->write();
|
||||||
|
|
||||||
// extend hook to allow extensions. Also see onBeforePostComment
|
// extend hook to allow extensions. Also see onBeforePostComment
|
||||||
$this->extend('onAfterPostComment', $comment);
|
$this->extend('onAfterPostComment', $comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear the users comment since it passed validation
|
// clear the users comment since it passed validation
|
||||||
Cookie::set('CommentsForm_Comment', false);
|
Cookie::set('CommentsForm_Comment', false);
|
||||||
|
|
||||||
if(Director::is_ajax()) {
|
|
||||||
if(!$comment->Moderated && !$isPreview) {
|
|
||||||
return $comment->renderWith('CommentsInterface_pendingcomment');
|
|
||||||
} else {
|
|
||||||
return $comment->renderWith('CommentsInterface_singlecomment');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$holder = Commenting::get_config_value($comment->BaseClass, 'comments_holder_id');
|
$holder = Commenting::get_config_value($comment->BaseClass, 'comments_holder_id');
|
||||||
|
|
||||||
$hash = ($moderated) ? $comment->Permalink() : $holder;
|
$hash = ($moderated) ? $holder : $comment->Permalink();
|
||||||
$url = (isset($data['ReturnURL'])) ? $data['ReturnURL'] : false;
|
$url = (isset($data['ReturnURL'])) ? $data['ReturnURL'] : false;
|
||||||
|
|
||||||
return ($url) ? $this->redirect($url .'#'. $hash) : $this->redirectBack();
|
return ($url) ? $this->redirect($url .'#'. $hash) : $this->redirectBack();
|
||||||
|
@ -97,7 +97,7 @@ class CommentsExtension extends DataExtension {
|
|||||||
* @see docs/en/Extending
|
* @see docs/en/Extending
|
||||||
*/
|
*/
|
||||||
public function CommentsForm() {
|
public function CommentsForm() {
|
||||||
if (Commenting::has_commenting($this->ownerBaseClass) && Commenting::get_config_value($this->ownerBaseClass, 'use_ajax_commenting')) {
|
if(Commenting::has_commenting($this->ownerBaseClass) && Commenting::get_config_value($this->ownerBaseClass, 'include_js')) {
|
||||||
Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js');
|
Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js');
|
||||||
Requirements::javascript(THIRDPARTY_DIR . '/jquery-validate/lib/jquery.form.js');
|
Requirements::javascript(THIRDPARTY_DIR . '/jquery-validate/lib/jquery.form.js');
|
||||||
Requirements::javascript(THIRDPARTY_DIR . '/jquery-validate/jquery.validate.pack.js');
|
Requirements::javascript(THIRDPARTY_DIR . '/jquery-validate/jquery.validate.pack.js');
|
||||||
|
@ -7,18 +7,18 @@ The module provides a number of built in configuration settings below are the de
|
|||||||
// mysite/_config.php
|
// mysite/_config.php
|
||||||
|
|
||||||
Commenting::add('Foo', array(
|
Commenting::add('Foo', array(
|
||||||
'require_login' => false,
|
'require_login' => false, // boolean, whether a user needs to login
|
||||||
'required_permission' => false,
|
'required_permission' => false, // required permission to comment (or array of permissions)
|
||||||
'use_ajax_commenting' => true,
|
'include_js' => true, // Enhance operation by ajax behaviour on moderation links
|
||||||
'show_comments_when_disabled' => false,
|
'show_comments_when_disabled' => false, // when comments are disabled should we show older comments (if available)
|
||||||
'order_comments_by' => "\"Created\" DESC",
|
'order_comments_by' => "\"Created\" DESC",
|
||||||
'comments_per_page' => 10,
|
'comments_per_page' => 10,
|
||||||
'comments_holder_id' => "comments-holder",
|
'comments_holder_id' => "comments-holder", // id for the comments holder
|
||||||
'comment_permalink_prefix' => "comment-",
|
'comment_permalink_prefix' => "comment-", // id prefix for each comment. If needed make this different
|
||||||
'require_moderation' => false,
|
'require_moderation' => false,
|
||||||
'html_allowed' => false, // allow for sanitized HTML in comments
|
'html_allowed' => false, // allow for sanitized HTML in comments
|
||||||
'html_allowed_elements' => array('a', 'img', 'i', 'b'),
|
'html_allowed_elements' => array('a', 'img', 'i', 'b'),
|
||||||
'use_preview' => false, // preview formatted comment (when allowing HTML),
|
'use_preview' => false, // preview formatted comment (when allowing HTML). Requires include_js=true
|
||||||
'use_gravatar' => false,
|
'use_gravatar' => false,
|
||||||
'gravatar_size' => 80
|
'gravatar_size' => 80
|
||||||
);
|
);
|
||||||
|
@ -22,16 +22,16 @@
|
|||||||
* Validate
|
* Validate
|
||||||
*/
|
*/
|
||||||
form.validate({
|
form.validate({
|
||||||
invalidHandler : function(form, validator) {
|
invalidHandler : function(form, validator){
|
||||||
$('html, body').animate({
|
$('html, body').animate({
|
||||||
scrollTop: $(validator.errorList[0].element).offset().top - 30
|
scrollTop: $(validator.errorList[0].element).offset().top - 30
|
||||||
}, 200);
|
}, 200);
|
||||||
},
|
},
|
||||||
showErrors: function(errorMap, errorList) {
|
showErrors: function(errorMap, errorList) {
|
||||||
this.defaultShowErrors();
|
this.defaultShowErrors();
|
||||||
// hack to add the extra classes we need to the validation message elements
|
// hack to add the extra classes we need to the validation message elements
|
||||||
form.find('span.error').addClass('message required');
|
form.find('span.error').addClass('message required');
|
||||||
},
|
},
|
||||||
|
|
||||||
errorElement: "span",
|
errorElement: "span",
|
||||||
errorClass: "error",
|
errorClass: "error",
|
||||||
@ -68,44 +68,9 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clicking one of the metalinks performs the operation via ajax
|
|
||||||
* this inclues the spam and approve links
|
|
||||||
*/
|
|
||||||
form.submit(function (e) {
|
form.submit(function (e) {
|
||||||
// trigger validation
|
// trigger validation
|
||||||
if(!form.validate().valid()){
|
if(!form.validate().valid()) return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
previewEl.removeClass('loading').hide();
|
|
||||||
|
|
||||||
// submit the form
|
|
||||||
$(this).ajaxSubmit(function(response) {
|
|
||||||
noCommentsYet.hide();
|
|
||||||
|
|
||||||
if(!commentsList.length){
|
|
||||||
commentsHolder.append("<ul class='comments-list'></ul>");
|
|
||||||
commentsList = $('.comments-list', commentsHolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
var evenOdd = (commentsList.children('.first').removeClass('first').hasClass('even')) ? 'odd' : 'even';
|
|
||||||
var newComment = $('<li />')
|
|
||||||
.addClass('comment first ' + evenOdd)
|
|
||||||
.html(response)
|
|
||||||
.hide();
|
|
||||||
|
|
||||||
if(response.match('<b>Spam detected!!</b>')) {
|
|
||||||
newComment.addClass('spam');
|
|
||||||
}
|
|
||||||
|
|
||||||
commentsList.prepend(newComment.fadeIn());
|
|
||||||
});
|
|
||||||
|
|
||||||
$(this).resetForm();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user