oont-contents/plugins/w3-total-cache/Extension_AlwaysCached_Page_View.js
2025-02-08 15:10:23 +01:00

243 lines
7.3 KiB
JavaScript

/**
* File: Extension_AlwaysCached_Page_View.js
*
* JavaScript for the Always Cached settings page.
*
* @since 2.8.0
*
* @global w3tcData Localized data.
*/
jQuery(function() {
jQuery(document).on(
'click',
'.w3tc-alwayscached-queue-item',
function(e) {
e.preventDefault();
var row = jQuery(this).closest('tr');
var item_url = jQuery(this).data('url');
jQuery.ajax(
{
url: ajaxurl,
method: 'GET',
headers: {
w3tcalwayscached: true,
},
data: {
action: 'w3tc_ajax',
_wpnonce: w3tc_nonce[0],
w3tc_action: 'extension_alwayscached_process_queue_item',
item_url: item_url,
},
success: function(response) {
if ( response.success && 'ok' === response.data ) {
alert(W3TCAlwaysCachedData.lang.processQueueItemSuccess);
row.remove();
} else if ( ! response.success || 'failed' === response.data ) {
alert(W3TCAlwaysCachedData.lang.processQueueItemFail);
}
},
error: function( xhr, status, error ) {
alert(W3TCAlwaysCachedData.lang.processQueueItemFailAlert);
console.error('AJAX error:', status, error );
}
}
);
}
);
jQuery(document).on(
'click',
'#w3tc-alwayscached-process, #w3tc-alwayscached-empty',
function(e) {
setTimeout(
function() {
jQuery('#w3tc-alwayscached-process').prop('disabled', true);
jQuery('#w3tc-alwayscached-empty').prop('disabled', true);
},
100
);
}
);
jQuery(document).on(
'click',
'.w3tc-alwayscached-queue',
function(e) {
e.preventDefault();
var mode = jQuery(this).data('mode');
var elContainer = jQuery(this).parent().find('section');
jQuery.ajax(
{
url: ajaxurl,
method: 'GET',
data: {
action: 'w3tc_ajax',
_wpnonce: w3tc_nonce[0],
w3tc_action: 'extension_alwayscached_queue',
mode: mode
},
success: function(data) {
elContainer.html(data);
elContainer.show();
}
}
);
}
);
jQuery(document).on(
'click',
'.w3tc-alwayscached-queue-filter-submit',
function(e) {
e.preventDefault();
var mode = jQuery(this).data('mode');
var search = jQuery(this).closest('section').find('.w3tc-alwayscached-queue-filter').val();
loadQueueTable( mode, 1, search );
}
);
jQuery(document).on(
'click',
'.w3tc-alwayscached-queue-view-pagination-page',
function(e) {
e.preventDefault();
var mode = jQuery(this).data('mode');
var page = jQuery(this).data('page');
var search = jQuery(this).closest('section').find('.w3tc-alwayscached-queue-filter').val();
loadQueueTable( mode, page, search );
}
);
jQuery(document).on(
'change',
'.w3tc-alwayscached-queue-view-pagination-page-input',
function() {
var max = parseInt(jQuery(this).attr('max'));
var min = parseInt(jQuery(this).attr('min'));
if (jQuery(this).val() > max) {
jQuery(this).val(max);
} else if (jQuery(this).val() < min) {
jQuery(this).val(min);
}
}
);
jQuery(document).on(
'click',
'.w3tc-alwayscached-queue-view-pagination-page-input-submit',
function(e) {
e.preventDefault();
var mode = jQuery(this).data('mode');
var page = parseInt(jQuery(this).closest('section').find('.w3tc-alwayscached-queue-view-pagination-page-input').val());
var search = jQuery(this).closest('section').find('.w3tc-alwayscached-queue-filter').val();
loadQueueTable( mode, page, search );
}
);
jQuery(document).on(
'change',
'#alwayscached___wp_cron',
function() {
let $enabled = jQuery(this).prop('checked');
jQuery('#alwayscached___wp_cron_time').prop('disabled', ! $enabled);
jQuery('#alwayscached___wp_cron_interval').prop('disabled', ! $enabled);
}
);
jQuery(document).on(
'change',
'#alwayscached___flush_all',
function() {
let $enabled = jQuery(this).prop('checked');
jQuery('#alwayscached___flush_all_home').prop('disabled', ! $enabled);
jQuery('#alwayscached___flush_all_posts_count').prop('disabled', ! $enabled);
jQuery('#alwayscached___flush_all_pages_count').prop('disabled', ! $enabled);
}
);
function loadQueueTable(mode = 'pending', page = 1, search = '') {
jQuery.ajax(
{
url: ajaxurl,
method: 'GET',
data: {
action: 'w3tc_ajax',
_wpnonce: w3tc_nonce[0],
w3tc_action: 'extension_alwayscached_queue_filter',
mode: mode,
page: page,
search: search
},
success: function (response) {
var tbody = '';
jQuery.each(
response.rows,
function (index, row) {
tbody += '<tr>' +
'<td><span class="w3tc-alwayscached-queue-item dashicons dashicons-update" title="' + W3TCAlwaysCachedData.lang.queueItemRegenerate + '" data-url="' + row.url + '"></span></td>' +
'<td style="white-space: nowrap">' + (':' === row.key.charAt(0) ? W3TCAlwaysCachedData.lang.queueItemCommand + ' ' + row.key : row.url) + '</td>' +
'<td>' + row.requests_count + '</td>' +
'</tr>';
}
);
jQuery('.w3tc-alwayscached-queue-view-table[data-mode="' + mode + '"] tbody').html( tbody );
var pagination = '<span>' + W3TCAlwaysCachedData.lang.queuePageLabel + ' </span>';
var total_pages = response.total_pages;
if (10 >= total_pages) {
for (var i = 1; i <= total_pages; i++) {
pagination += '<a href="#" class="w3tc-alwayscached-queue-view-pagination-page' + (page === i ? ' active' : '') + '" data-mode="' + mode + '" data-page="' + i + '">' + i + '</a>';
}
} else {
var start_mid, end_mid;
if (9 > page) {
start_mid = 1;
end_mid = 9;
} else if (page > total_pages - 9) {
start_mid = total_pages - 9;
end_mid = total_pages;
} else {
start_mid = Math.max(1, page - 4);
end_mid = Math.min(total_pages, page + 4);
}
if (start_mid > 1) {
pagination += '<a href="#" class="w3tc-alwayscached-queue-view-pagination-page" data-mode="' + mode + '" data-page="1">1</a>';
if (start_mid > 2) {
pagination += '<span>...</span>';
}
}
for (var i = start_mid; i <= end_mid; i++) {
pagination += '<a href="#" class="w3tc-alwayscached-queue-view-pagination-page' + (page === i ? ' active' : '') + '" data-mode="' + mode + '" data-page="' + i + '">' + i + '</a>';
}
if (end_mid < total_pages) {
if (end_mid < total_pages - 1) {
pagination += '<span>...</span>';
}
pagination += '<a href="#" class="w3tc-alwayscached-queue-view-pagination-page" data-mode="' + mode + '" data-page="' + total_pages + '">' + total_pages + '</a>';
}
pagination += '<br><input type="number" min="1" max="' + total_pages + '" class="w3tc-alwayscached-queue-view-pagination-page-input" data-mode="' + mode + '" name="page-jump" placeholder="' + W3TCAlwaysCachedData.lang.queuePageJump + '"><input class="button w3tc-alwayscached-queue-view-pagination-page-input-submit" data-mode="' + mode + '" type="submit" value="' + W3TCAlwaysCachedData.lang.queuePageJumpSubmit + '">';
}
jQuery('.w3tc-alwayscached-queue-view-pagination-container[data-mode="' + mode + '"').html(pagination);
},
error: function(jqXHR, textStatus, errorThrown) {
alert(W3TCAlwaysCachedData.lang.queueLoadFailAlert);
console.error('AJAX Error: ', textStatus, errorThrown);
}
}
);
}
});