mirror of
https://github.com/silverstripe/silverstripe-comments
synced 2024-10-22 11:05:49 +02:00
ENHANCEMENT: Ajax spam/ham/approve/delete ressurected. Added confirm box for delete
This commit is contained in:
parent
7721c20e80
commit
fd153265e9
@ -80,7 +80,7 @@ class CommentsExtension extends DataExtension {
|
|||||||
*/
|
*/
|
||||||
public function populateDefaults() {
|
public function populateDefaults() {
|
||||||
$defaults = $this->owner->config()->defaults;
|
$defaults = $this->owner->config()->defaults;
|
||||||
|
|
||||||
// Set if comments should be enabled by default
|
// Set if comments should be enabled by default
|
||||||
if(isset($defaults['ProvideComments'])) {
|
if(isset($defaults['ProvideComments'])) {
|
||||||
$this->owner->ProvideComments = $defaults['ProvideComments'];
|
$this->owner->ProvideComments = $defaults['ProvideComments'];
|
||||||
@ -292,7 +292,7 @@ class CommentsExtension extends DataExtension {
|
|||||||
public function getCommentsEnabled() {
|
public function getCommentsEnabled() {
|
||||||
// Don't display comments form for pseudo-pages (such as the login form)
|
// Don't display comments form for pseudo-pages (such as the login form)
|
||||||
if(!$this->owner->exists()) return false;
|
if(!$this->owner->exists()) return false;
|
||||||
|
|
||||||
// Determine which flag should be used to determine if this is enabled
|
// Determine which flag should be used to determine if this is enabled
|
||||||
if($this->owner->getCommentsOption('enabled_cms')) {
|
if($this->owner->getCommentsOption('enabled_cms')) {
|
||||||
return $this->owner->ProvideComments;
|
return $this->owner->ProvideComments;
|
||||||
@ -422,6 +422,7 @@ class CommentsExtension extends DataExtension {
|
|||||||
Requirements::javascript(THIRDPARTY_DIR . '/jquery-entwine/dist/jquery.entwine-dist.js');
|
Requirements::javascript(THIRDPARTY_DIR . '/jquery-entwine/dist/jquery.entwine-dist.js');
|
||||||
Requirements::javascript(THIRDPARTY_DIR . '/jquery-validate/lib/jquery.form.js');
|
Requirements::javascript(THIRDPARTY_DIR . '/jquery-validate/lib/jquery.form.js');
|
||||||
Requirements::javascript(COMMENTS_THIRDPARTY . '/jquery-validate/jquery.validate.min.js');
|
Requirements::javascript(COMMENTS_THIRDPARTY . '/jquery-validate/jquery.validate.min.js');
|
||||||
|
Requirements::add_i18n_javascript('comments/javascript/lang');
|
||||||
Requirements::javascript('comments/javascript/CommentsInterface.js');
|
Requirements::javascript('comments/javascript/CommentsInterface.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
$('.comments-holder-container form').entwine({
|
$('.comments-holder-container form').entwine({
|
||||||
onmatch: function() {
|
onmatch: function() {
|
||||||
|
|
||||||
// @todo Reinstate preview-comment functionality
|
// @todo Reinstate preview-comment functionality
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,7 +56,7 @@
|
|||||||
this._super();
|
this._super();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Comment reply form
|
* Comment reply form
|
||||||
*/
|
*/
|
||||||
@ -74,7 +74,7 @@
|
|||||||
this._super();
|
this._super();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggle on/off reply form
|
* Toggle on/off reply form
|
||||||
*/
|
*/
|
||||||
@ -83,7 +83,7 @@
|
|||||||
var allForms = $( ".comment-reply-form-holder" ),
|
var allForms = $( ".comment-reply-form-holder" ),
|
||||||
formID = $( this ).prop('href').replace(/^[^#]*#/, '#'),
|
formID = $( this ).prop('href').replace(/^[^#]*#/, '#'),
|
||||||
form = $(formID).closest('.comment-reply-form-holder');
|
form = $(formID).closest('.comment-reply-form-holder');
|
||||||
|
|
||||||
// Prevent focus
|
// Prevent focus
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if(form.is(':visible')) {
|
if(form.is(':visible')) {
|
||||||
@ -94,7 +94,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preview comment by fetching it from the server via ajax.
|
* Preview comment by fetching it from the server via ajax.
|
||||||
@ -132,16 +132,24 @@
|
|||||||
$(':input', form).on('change keydown', function() {
|
$(':input', form).on('change keydown', function() {
|
||||||
previewEl.removeClass('loading').hide();
|
previewEl.removeClass('loading').hide();
|
||||||
});*/
|
});*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clicking one of the metalinks performs the operation via ajax
|
* Clicking one of the metalinks performs the operation via ajax
|
||||||
* this inclues the spam and approve links
|
* this inclues the spam and approve links
|
||||||
*/
|
*/
|
||||||
/* @todo Migrate to work with nested comments
|
|
||||||
commentsList.on('click', '.action-links a', function(e) {
|
$('.comments-holder .comments-list').on('click', 'div.comment-moderation-options a', function(e) {
|
||||||
var link = $(this);
|
var link = $(this);
|
||||||
|
if (link.hasClass('delete')) {
|
||||||
|
var confirmationMsg = ss.i18n._t('CommentsInterface_singlecomment_ss.DELETE_CONFIRMATION');
|
||||||
|
var confirmation = window.confirm(confirmationMsg);
|
||||||
|
if (!confirmation) {
|
||||||
|
e.preventDefault();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
var comment = link.parents('.comment:first');
|
var comment = link.parents('.comment:first');
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: $(this).attr('href'),
|
url: $(this).attr('href'),
|
||||||
cache: false,
|
cache: false,
|
||||||
@ -149,34 +157,34 @@
|
|||||||
if(link.hasClass('ham')) {
|
if(link.hasClass('ham')) {
|
||||||
// comment has been marked as not spam
|
// comment has been marked as not spam
|
||||||
comment.html(html);
|
comment.html(html);
|
||||||
comment.removeClass('spam').hide().fadeIn();
|
comment.removeClass('spam');
|
||||||
}
|
}
|
||||||
else if(link.hasClass('approve')) {
|
else if(link.hasClass('approve')) {
|
||||||
// comment has been approved
|
// comment has been approved
|
||||||
comment.html(html);
|
comment.html(html);
|
||||||
comment.removeClass('unmoderated').hide().fadeIn();
|
comment.removeClass('unmoderated');
|
||||||
}
|
}
|
||||||
else if(link.hasClass('delete')) {
|
else if(link.hasClass('delete')) {
|
||||||
comment.fadeOut(1000, function() {
|
comment.fadeOut(1000, function() {
|
||||||
comment.remove();
|
comment.remove();
|
||||||
|
|
||||||
if(commentsList.children().length == 0) {
|
if(commentsList.children().length === 0) {
|
||||||
noCommentsYet.show();
|
noCommentsYet.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if(link.hasClass('spam')) {
|
else if(link.hasClass('spam')) {
|
||||||
comment.html(html).addClass('spam').hide().fadeIn();
|
comment.html(html).addClass('spam');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
failure: function(html) {
|
failure: function(html) {
|
||||||
alert(html)
|
var errorMsg = ss.i18n._t('CommentsInterface_singlecomment_ss.AJAX_ERROR');
|
||||||
|
alert(errorMsg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajax pagination
|
* Ajax pagination
|
||||||
|
10
javascript/lang/en.js
Normal file
10
javascript/lang/en.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// This file was generated by silverstripe/cow from javascript/lang/src/en.js.
|
||||||
|
// See https://github.com/tractorcow/cow for details
|
||||||
|
if (typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
|
||||||
|
if (typeof(console) != 'undefined') console.error('Class ss.i18n not defined');
|
||||||
|
} else {
|
||||||
|
ss.i18n.addDictionary('en', {
|
||||||
|
"CommentsInterface_singlecomment_ss.DELETE_CONFIRMATION": "Are you sure?",
|
||||||
|
"CommentsInterface_singlecomment_ss.AJAX_ERROR": "An error occurred whilst updating the comment",
|
||||||
|
});
|
||||||
|
}
|
@ -243,12 +243,14 @@ class CommentsExtensionTest extends SapphireTest {
|
|||||||
$cf = $item->CommentsForm();
|
$cf = $item->CommentsForm();
|
||||||
|
|
||||||
$backend = Requirements::backend();
|
$backend = Requirements::backend();
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
array(
|
array(
|
||||||
'framework/thirdparty/jquery/jquery.js',
|
'framework/thirdparty/jquery/jquery.js',
|
||||||
'framework/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js',
|
'framework/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js',
|
||||||
'framework/thirdparty/jquery-validate/lib/jquery.form.js',
|
'framework/thirdparty/jquery-validate/lib/jquery.form.js',
|
||||||
'comments/thirdparty/jquery-validate/jquery.validate.min.js',
|
'comments/thirdparty/jquery-validate/jquery.validate.min.js',
|
||||||
|
'framework/javascript/i18n.js',
|
||||||
|
'comments/javascript/lang/en.js',
|
||||||
'comments/javascript/CommentsInterface.js'
|
'comments/javascript/CommentsInterface.js'
|
||||||
),
|
),
|
||||||
$backend->get_javascript()
|
$backend->get_javascript()
|
||||||
|
Loading…
Reference in New Issue
Block a user