jQuery(document).ready(function ($) {
var __ = wp.i18n.__;
var _e = wp.i18n._e;
var sprintf = wp.i18n.sprintf;
var saveBtn = jQuery("#disableCommentSaveSettings button.button.button__success");
var deleteBtn = jQuery("#deleteCommentSettings button.button.button__delete");
if(jQuery('.sites_list_wrapper').length){
var addSite = function($sites_list, site, type){
var id = "sites__option__" + type + "__" + site.site_id;
var name = "disabled_sites[site_" + site.site_id + "]";
var hasOption = $sites_list.has('#' + id);
if(hasOption.length){
$sites_list.find('#' + id).parent().removeClass('hidden');
return;
}
$sites_list.append( "\
\
\
\
\
\
");
}
var addSites = function($sites_list, sub_sites, type){
// $sites_list.html('');
$sites_list.children().addClass('hidden');
sub_sites.forEach(function(site) {
addSite($sites_list, site, type);
});
if(sub_sites.length == 0){
$sites_list.find('.nothing-found').removeClass('hidden');
}
enable_site_wise_uihelper();
}
jQuery(".sites_list_wrapper").each(function(){
var $sites_list_wrapper = jQuery(this);
var $subSiteSearch = $sites_list_wrapper.find('.sub-site-search');
var type = $sites_list_wrapper.data('type');
var $sites_list = $sites_list_wrapper.find('.sites_list');
var $pageSize = $sites_list_wrapper.find('.page__size');
var $pageSizeWrapper = $sites_list_wrapper.find('.page__size__wrapper');
var isPageLoaded = {};
var args = {
dataSource : ajaxurl,
locator : 'data',
pageSize : $pageSize.val() || 50,
showPageNumbers : false,
hideWhenLessThanOnePage: true,
totalNumberLocator: function(response) {
if(response.totalNumber <= 20){
$pageSizeWrapper.hide();
}
else{
$pageSizeWrapper.show();
}
return response.totalNumber;
},
ajax : function(){
return {
cache: true,
data : {
action: 'get_sub_sites',
type : type,
search: $subSiteSearch.val(),
},
};
},
callback : function(data, pagination) {
var pageNumber = pagination.pageNumber;
addSites($sites_list, data, type);
isPageLoaded[pageNumber] = data;
countSelected($sites_list_wrapper);
}
};
$sites_list_wrapper.find('.has-pagination').pagination(args);
var timeoutID = null;
$subSiteSearch.on('keyup keypress', function(event){
if(event.type != 'keypress'){
if(timeoutID){
clearTimeout(timeoutID);
}
timeoutID = setTimeout(() => {
$sites_list_wrapper.find('.has-pagination').pagination('go', 1);
}, 1000);
}
var keyCode = event.keyCode || event.which;
if (keyCode === 13) {
event.preventDefault();
return false;
}
});
$pageSize.on('change', function(){
args.pageSize = jQuery(this).val();
$sites_list_wrapper.find('.has-pagination').pagination(args);
});
});
jQuery(".sites_list_wrapper .check-all").on('change', function(){
var checked = jQuery(this).is(':checked');
var sites_list_wrapper = jQuery(this).closest('.sites_list_wrapper')
var site_option = sites_list_wrapper.find('.sites_list .subsite__checklist__item:not(.hidden)')
site_option.find('.site_option').prop('checked', checked);
console.log(site_option);
});
var countSelected = function(sites_list_wrapper){
var site_option = sites_list_wrapper.find('.sites_list .subsite__checklist__item:not(.hidden)')
var totalChecked = 0;
site_option.find('.site_option').each(function(){
if(jQuery(this).is(':checked')){
totalChecked++;
}
});
if(totalChecked){
sites_list_wrapper.find('.check-all').addClass('semi-checked');
}
sites_list_wrapper.find('.check-all').prop('checked', totalChecked == site_option.length);
sites_list_wrapper.find('.check-all+label small').text(`(${totalChecked} selected)`)
}
jQuery(".sites_list_wrapper").on('change', function(){
var sites_list_wrapper = jQuery(this)
countSelected(sites_list_wrapper);
});
countSelected(jQuery("#deleteCommentSettings .sites_list_wrapper"));
countSelected(jQuery("#disableCommentSaveSettings .sites_list_wrapper"));
}
/**
* Settings Scripts
*/
// tabs
function disbale_comments_tabs() {
var hash = window.location.hash;
var tabNavItem =
"ul.disable__comment__nav li.disable__comment__nav__item";
var tabBodyItem = ".disable__comment__tab .disable__comment__tab__item";
jQuery(tabNavItem).on("click", "a", function (e) {
e.preventDefault();
jQuery(this)
.addClass("active")
.parent()
.siblings()
.children()
.removeClass("active");
var target = jQuery(this).attr("href");
jQuery(target).addClass("show").siblings().removeClass("show");
});
if (hash === "#delete") {
jQuery("#disableCommentsNav > a").removeClass("active");
jQuery("#disableComments").removeClass("show");
jQuery("#deleteCommentsNav > a").addClass("active");
jQuery("#deleteComments").addClass("show");
}
}
disbale_comments_tabs();
// UI Helper
function enable_site_wise_uihelper() {
var pagination = jQuery("#disableCommentSaveSettings .sites_list_wrapper .has-pagination");
var indiv_bits = jQuery(
".disabled__sites .remove__checklist__item, #disableCommentSaveSettings .subsite__checklist__item, #disableCommentSaveSettings .sub__site_control"
);
if (jQuery("#sitewide_settings").is(":checked")) {
pagination.length && pagination.addClass('disabled').pagination('disable', true);
indiv_bits
.css("opacity", ".3")
.find(":input")
.attr("disabled", true);
} else {
pagination.length && pagination.removeClass('disabled').pagination('enable', true);
indiv_bits
.css("opacity", "1")
.find(":input")
.attr("disabled", false);
}
}
jQuery("#sitewide_settings").on('change', function () {
enable_site_wise_uihelper();
});
enable_site_wise_uihelper();
function disable_comments_uihelper() {
var indiv_bits = jQuery(
"#disable__post__types .remove__checklist__item, #extratypes"
);
if (jQuery("#remove_everywhere").is(":checked")) {
indiv_bits
.css("opacity", ".3")
.find(":input")
.attr("disabled", true);
} else {
indiv_bits
.css("opacity", "1")
.find(":input")
.attr("disabled", false);
}
}
jQuery("#remove_everywhere, #selected_types").on('change', function () {
jQuery("#message").slideUp();
disable_comments_uihelper();
});
disable_comments_uihelper();
function delete_comments_uihelper() {
var toggle_pt_bits = jQuery(
"#delete__post__types .delete__checklist__item, #extradeletetypes"
);
var toggle_ct_bits = jQuery("#listofdeletecommenttypes");
if (jQuery("#delete_everywhere, #delete_spam").is(":checked")) {
toggle_pt_bits
.css("opacity", ".3")
.find(":input")
.attr("disabled", true);
toggle_ct_bits
.css("opacity", ".3")
.find(":input")
.attr("disabled", true);
} else {
if (jQuery("#selected_delete_types").is(":checked")) {
toggle_pt_bits
.css("opacity", "1")
.find(":input")
.attr("disabled", false);
toggle_ct_bits
.css("opacity", ".3")
.find(":input")
.attr("disabled", true);
} else {
toggle_ct_bits
.css("opacity", "1")
.find(":input")
.attr("disabled", false);
toggle_pt_bits
.css("opacity", ".3")
.find(":input")
.attr("disabled", true);
}
}
}
jQuery(
"#delete_everywhere, #delete_spam, #selected_delete_types, #selected_delete_comment_types"
).on('change', function () {
delete_comments_uihelper();
});
delete_comments_uihelper();
/**
* Settings Ajax Request
*/
jQuery("#disableCommentSaveSettings").on("submit", function (e) {
e.preventDefault();
var data = {
action: disableCommentsObj.save_action,
nonce: disableCommentsObj._nonce,
data: jQuery(this).serialize(),
};
jQuery.ajax({
url: ajaxurl,
type: "post",
data: data,
beforeSend: function () {
var btnText = __("Saving Settings..", "disable-comments");
saveBtn.html(
'' + btnText + ''
);
},
success: function (response) {
if (response.success) {
saveBtn.html(__("Save Settings", "disable-comments"));
Swal.fire({
icon: "success",
title: response.data.message,
timer: 3000,
showConfirmButton: false,
});
saveBtn.removeClass('form-dirty');
}
},
error: function () {
saveBtn.html("Save Settings");
Swal.fire({
type: "error",
title: __("Oops...", "disable-comments"),
text: __("Something went wrong!", "disable-comments"),
});
},
});
});
jQuery("#deleteCommentSettings").on("submit", function (e) {
e.preventDefault();
var $form = jQuery(this);
Swal.fire({
icon: "error",
title: __("Are you sure?", "disable-comments"),
text: __("You won't be able to revert this!", "disable-comments"),
showConfirmButton: true,
showCancelButton: true,
confirmButtonText: __('Yes, Delete It', "disable-comments"),
cancelButtonText: __('No, Cancel', "disable-comments"),
customClass: {
confirmButton: 'confirmButton',
cancelButton: 'cancelButton'
},
reverseButtons: true,
}).then(function(result){
if (result.isConfirmed) {
// Swal.fire({
// icon: "info",
// title: "Deleting comments...",
// text: "Please wait.",
// showConfirmButton: false,
// });
var data = {
action: disableCommentsObj.delete_action,
nonce: disableCommentsObj._nonce,
data: $form.serialize(),
};
deleteBtn.html(
'' + __("Deleting Comments..", "disable-comments") + ''
);
jQuery.post(ajaxurl, data, function (response) {
deleteBtn.html(__("Delete Comments", "disable-comments"));
if (response.success) {
Swal.fire({
icon: "success",
title: __("Deleted", "disable-comments"),
html: response.data.message,
timer: 3000,
showConfirmButton: false,
});
} else {
Swal.fire({
icon: "error",
title: __("Oops...", "disable-comments"),
html: response.data.message,
showConfirmButton: true,
});
}
});
}
});
});
jQuery("#disableCommentSaveSettings").on('change keydown', 'input,select', function (e) {
// jQuery(this).off(e);
saveBtn.addClass('form-dirty');
});
(function() {
var excludeByRoleWrapper = jQuery('#exclude_by_role_wrapper');
if(!excludeByRoleWrapper.length) return;
var excludeByRoleSelectWrapper = excludeByRoleWrapper.find('#exclude_by_role_select_wrapper');
var excludeByRoleSelect = excludeByRoleSelectWrapper.find('.dc-select2');
var options = excludeByRoleSelect.data('options');
var selectDescriptionWrapper = excludeByRoleWrapper.find('#exclude_by_role_select_description_wrapper');
var excludedRoles = excludeByRoleWrapper.find('.excluded-roles');
var includedRoles = excludeByRoleWrapper.find('.included-roles');
var selectOnChange = function(){
var selectedOptions = excludeByRoleSelect.select2('data');
console.log(selectedOptions);
excludeByRoleSelectWrapper.show();
if(selectedOptions.length){
includedRoles.show();
excludedRoles.show();
var hasLoggedOutUsers = selectedOptions.find(function(val, index){
return val.id == 'logged-out-users';
});
if(options.length == selectedOptions.length){
excludedRoles.text(__("Comments are visible to everyone.", "disable-comments"));
includedRoles.hide();
}
else if(hasLoggedOutUsers){
if(selectedOptions.length == 1){
excludedRoles.text(__("Users who are logged out will see comments.", "disable-comments"));
includedRoles.text(__("No comments will be visible to other roles.", "disable-comments"));
}
else{
var _selectedOptions = selectedOptions.filter(function(val) {
return val.id !== 'logged-out-users';
}).map(function(val, index){
return val.id;
});
var text = "" + _selectedOptions.join(", ") + "";
excludedRoles.html(sprintf(__("Comments are visible to %s and Logged out users.", "disable-comments"), text));
includedRoles.text(__("No comments will be visible to other roles.", "disable-comments"));
}
}
else{
var selectedOptionsLabels = selectedOptions.map(function(val, index){
return val.text;
});
var text = "" + selectedOptionsLabels.join(", ") + "";
excludedRoles.html(sprintf(__("Comments are visible to %s.", "disable-comments"), text));
includedRoles.text(__("Other roles and logged out users won't see any comments.", "disable-comments"));
}
}
else{
includedRoles.hide();
excludedRoles.hide();
}
};
excludeByRoleSelect.select2({
multiple: true,
data: options,
placeholder: __("Select User Roles", "disable-comments"),
});
excludeByRoleSelect.on('change', selectOnChange);
selectOnChange();
jQuery('#enable_exclude_by_role').on('change', function(){
if(jQuery(this).is(':checked')){
selectDescriptionWrapper.show();
}
else{
selectDescriptionWrapper.hide();
}
});
jQuery('#enable_exclude_by_role').trigger('change');
})();
});