laipower/wp-content/upgrade-temp-backup/plugins/w3-total-cache/pub/js/popup.js

772 lines
22 KiB
JavaScript

function w3tc_seconds_to_string(seconds) {
var string = '', days, hours, minutes;
days = Math.floor(seconds / 86400);
if (days) {
seconds -= days * 86400;
string += days + 'd ';
}
hours = Math.floor(seconds / 3600);
if (hours) {
seconds -= hours * 3600;
string += hours + 'h ';
}
minutes = Math.floor(seconds / 60);
if (minutes) {
seconds -= minutes * 60;
string += minutes + 'm ';
}
if (seconds) {
string += seconds + 's';
}
return string;
}
var W3tc_Popup_Cdn_Export_File = {
paused: 0,
limit: 25,
retry_seconds: 10,
seconds_elapsed: 0,
timer: null,
nonce: '',
files: [],
initialized: false,
upload_files: [],
set_progress: function(percent) {
jQuery('#cdn_export_file_progress .bar').width(percent + '%');
jQuery('#cdn_export_file_progress .percent').html(percent + '%');
},
set_status: function(status) {
jQuery('#cdn_export_file_status').html(status);
},
set_processed: function(processed) {
jQuery('#cdn_export_file_processed').html(processed);
},
set_button_text: function(text) {
jQuery('#cdn_export_file_start').val(text);
},
set_last_response: function() {
var date = new Date();
jQuery('#cdn_export_file_last_response').html(date.toLocaleTimeString() + ' ' + date.toLocaleDateString());
},
set_elapsed: function(text) {
jQuery('#cdn_export_file_elapsed').html(text);
},
add_log: function(path, result, error) {
jQuery('#cdn_export_file_log').prepend('<div class="log-' + (result == 1 ? 'success' : 'error') + '">' + path + ' <strong>' + error + '</strong></div>');
},
clear_log: function() {
jQuery('#cdn_export_file_log').html('');
},
process: function() {
if (this.paused) {
return;
}
if (!this.initialized) {
this.upload_files = this.files.slice(0);
this.initialized = true;
}
to_upload = this.upload_files.slice(0, this.limit);
var me = this;
if (to_upload.length) {
jQuery.ajax({
type: 'POST',
url: 'admin.php?page=w3tc_cdn',
data: {
w3tc_cdn_export_process: 1,
'files[]': to_upload,
_wpnonce: this.nonce
},
dataType: 'json',
success: function(data) {
me.set_last_response();
me.process_callback(data);
},
error: function() {
me.set_last_response();
me.retry(me.retry_seconds);
}
});
}
},
retry: function(seconds) {
if (this.paused) {
return;
}
this.set_status('request failed (retry in ' + seconds + 's)');
if (seconds) {
var me = this;
setTimeout(function() {
me.retry(--seconds);
}, 1000);
} else {
this.set_status('processing');
this.process();
}
},
process_callback: function(data) {
var failed = false;
for (var i = 0; i < data.results.length; i++) {
var remote_path = data.results[i].file;
for (var n = 0; n < this.upload_files.length; n++) {
if (this.upload_files[n] == remote_path) {
this.upload_files.splice(n, 1);
break;
}
}
this.add_log(remote_path, data.results[i].result, data.results[i].error);
if (data.results[i].result == -1) {
failed = true;
break;
}
}
if (failed) {
this.set_progress(0);
this.set_processed(1);
this.set_status('failed');
this.set_button_text('Start');
clearInterval(this.timer);
} else {
var count_processed = this.files.length - this.upload_files.length;
this.set_progress((count_processed * 100 / this.files.length).toFixed(0));
this.set_processed(count_processed);
if (this.upload_files.length) {
this.process();
} else {
this.set_status('done');
this.set_button_text('Start');
clearInterval(this.timer);
}
}
},
timer_callback: function() {
this.seconds_elapsed++;
this.set_elapsed(w3tc_seconds_to_string(this.seconds_elapsed));
},
init: function() {
var me = this;
jQuery('#cdn_export_file_start').click(function() {
if (this.value == 'Pause') {
me.paused = 1;
me.set_button_text('Resume');
me.set_status('paused');
clearInterval(me.timer);
} else {
if (this.value == 'Start') {
me.seconds_elapsed = 0;
me.initialized = false;
me.clear_log();
me.set_progress(0);
me.set_processed(0);
me.set_elapsed('-');
}
me.paused = 0;
me.set_button_text('Pause');
me.set_status('processing');
me.timer = setInterval(function() {
me.timer_callback();
}, 1000);
}
me.process();
});
}
};
var W3tc_Popup_Cdn_Export_Library = {
paused: 0,
limit: 25,
offset: 0,
retry_seconds: 10,
seconds_elapsed: 0,
timer: null,
nonce: '',
set_progress: function(percent) {
jQuery('#cdn_export_library_progress .bar').width(percent + '%');
jQuery('#cdn_export_library_progress .percent').html(percent + '%');
},
set_status: function(status) {
jQuery('#cdn_export_library_status').html(status);
},
set_processed: function(processed) {
jQuery('#cdn_export_library_processed').html(processed);
},
set_total: function(total) {
jQuery('#cdn_export_library_total').html(total);
},
set_button_text: function(text) {
jQuery('#cdn_export_library_start').val(text);
},
set_last_response: function() {
var date = new Date();
jQuery('#cdn_export_library_last_response').html(date.toLocaleTimeString() + ' ' + date.toLocaleDateString());
},
set_elapsed: function(text) {
jQuery('#cdn_export_library_elapsed').html(text);
},
add_log: function(path, result, error) {
jQuery('#cdn_export_library_log').prepend('<div class="log-' + (result == 1 ? 'success' : 'error') + '">' + path + ' <strong>' + error + '</strong></div>');
},
clear_log: function() {
jQuery('#cdn_export_library_log').html('');
},
process: function() {
if (this.paused) {
return;
}
var me = this;
jQuery.ajax({
type: 'POST',
url: 'admin.php?page=w3tc_cdn',
data: {
w3tc_cdn_export_library_process: 1,
limit: this.limit,
offset: this.offset,
_wpnonce: this.nonce
},
dataType: 'json',
success: function(data) {
me.set_last_response();
me.process_callback(data);
},
error: function() {
me.set_last_response();
me.retry(me.retry_seconds);
}
});
},
retry: function(seconds) {
if (this.paused) {
return;
}
this.set_status('request failed (retry in ' + seconds + 's)');
if (seconds) {
var me = this;
setTimeout(function() {
me.retry(--seconds);
}, 1000);
} else {
this.set_status('processing');
this.process();
}
},
process_callback: function(data, status) {
this.offset += data.count;
this.set_total(data.total);
this.set_processed(this.offset);
this.set_progress((this.offset * 100 / data.total).toFixed(0));
var failed = false;
for (var i = 0; i < data.results.length; i++) {
this.add_log(data.results[i].remote_path, data.results[i].result, data.results[i].error);
if (data.results[i].result == -1) {
failed = true;
break;
}
}
if (failed) {
this.set_progress(0);
this.set_processed(1);
this.set_status('failed');
this.set_button_text('Start');
clearInterval(this.timer);
} else {
if (this.offset < data.total) {
this.process();
} else {
this.set_status('done');
this.set_button_text('Start');
clearInterval(this.timer);
}
}
},
timer_callback: function() {
this.seconds_elapsed++;
this.set_elapsed(w3tc_seconds_to_string(this.seconds_elapsed));
},
init: function() {
var me = this;
jQuery('#cdn_export_library_start').click(function() {
if (this.value == 'Pause') {
me.paused = 1;
me.set_status('paused');
me.set_button_text('Resume');
clearInterval(me.timer);
} else {
if (this.value == 'Start') {
me.offset = 0;
me.seconds_elapsed = 0;
me.clear_log();
me.set_progress(0);
me.set_elapsed('-');
}
me.paused = 0;
me.set_status('processing');
me.set_button_text('Pause');
me.timer = setInterval(function() {
me.timer_callback();
}, 1000);
}
me.process();
});
}
};
var W3tc_Popup_Cdn_Import_Library = {
paused: 0,
limit: 5,
offset: 0,
retry_seconds: 10,
seconds_elapsed: 0,
timer: null,
nonce: '',
cdn_host: '',
set_progress: function(percent) {
jQuery('#cdn_import_library_progress .bar').width(percent + '%');
jQuery('#cdn_import_library_progress .percent').html(percent + '%');
},
set_status: function(status) {
jQuery('#cdn_import_library_status').html(status);
},
set_processed: function(processed) {
jQuery('#cdn_import_library_processed').html(processed);
},
set_total: function(total) {
jQuery('#cdn_import_library_total').html(total);
},
set_button_text: function(text) {
jQuery('#cdn_import_library_start').val(text);
},
set_last_response: function() {
var date = new Date();
jQuery('#cdn_import_library_last_response').html(date.toLocaleTimeString() + ' ' + date.toLocaleDateString());
},
set_elapsed: function(text) {
jQuery('#cdn_import_library_elapsed').html(text);
},
is_redirect_permanent: function() {
return (jQuery('#cdn_import_library_redirect_permanent:checked').length > 0);
},
is_redirect_cdn: function() {
return (jQuery('#cdn_import_library_redirect_cdn:checked').length > 0);
},
add_log: function(path, result, error) {
jQuery('#cdn_import_library_log').prepend('<div class="log-' + (result == 1 ? 'success' : 'error') + '">' + path + ' <strong>' + error + '</strong></div>');
},
clear_log: function() {
jQuery('#cdn_import_library_log').html('');
},
add_rule: function(src, dst) {
if (/^https?:\/\//.test(src)) {
return;
}
if (this.is_redirect_cdn()) {
dst = 'http://' + (this.cdn_host.length > 0 ? this.cdn_host : document.location.host) + '/' + dst;
} else {
dst = '/' + dst;
}
if (src.indexOf('/') != 0) {
src = '/' + src;
}
var rules = jQuery('#cdn_import_library_rules');
rules.val(rules.val() + 'Redirect ' + (this.is_redirect_permanent() ? '302 ' : '') + src + ' ' + dst + '\r\n');
},
clear_rules: function() {
jQuery('#cdn_import_library_rules').val('');
},
process: function() {
if (this.paused) {
return;
}
var me = this;
var cdn_import_external = jQuery("input#cdn_import_external").is(":checked");
jQuery.ajax({
type: 'POST',
url: 'admin.php?page=w3tc_cdn',
data: {
w3tc_cdn_import_library_process: 1,
limit: this.limit,
offset: this.offset,
_wpnonce: this.nonce,
cdn_import_external: cdn_import_external
},
dataType: 'json',
success: function(data) {
me.set_last_response();
me.process_callback(data);
},
error: function() {
me.set_last_response();
me.retry(me.retry_seconds);
}
});
},
retry: function(seconds) {
if (this.paused) {
return;
}
this.set_status('request failed (retry in ' + seconds + 's)');
if (seconds) {
var me = this;
setTimeout(function() {
me.retry(--seconds);
}, 1000);
} else {
this.set_status('processing');
this.process();
}
},
process_callback: function(data) {
this.offset += data.count;
this.set_total(data.total);
this.set_processed(this.offset);
this.set_progress((this.offset * 100 / data.total).toFixed(0));
var failed = false;
for (var i = 0; i < data.results.length; i++) {
this.add_log(data.results[i].src, data.results[i].result, data.results[i].error);
if (data.results[i].result == 1) {
this.add_rule(data.results[i].src, data.results[i].dst);
} else if (data.results[i].result == -1) {
failed = true;
break;
}
}
if (failed) {
this.set_progress(0);
this.set_processed(1);
this.set_status('failed');
this.set_button_text('Start');
clearInterval(this.timer);
} else {
if (this.offset < data.total) {
this.process();
} else {
this.set_status('done');
this.set_button_text('Start');
clearInterval(this.timer);
}
}
},
timer_callback: function() {
this.seconds_elapsed++;
this.set_elapsed(w3tc_seconds_to_string(this.seconds_elapsed));
},
init: function() {
var me = this;
jQuery('#cdn_import_library_start').click(function() {
if (this.value == 'Pause') {
me.paused = 1;
me.set_button_text('Resume');
me.set_status('paused');
clearInterval(me.timer);
} else {
if (this.value == 'Start') {
me.offset = 0;
me.seconds_elapsed = 0;
me.clear_log();
me.set_progress(0);
me.clear_rules();
me.set_elapsed('-');
}
me.paused = 0;
me.set_button_text('Pause');
me.set_status('processing');
me.timer = setInterval(function() {
me.timer_callback();
}, 1000);
}
me.process();
});
}
};
var W3tc_Popup_Cdn_Rename_Domain = {
paused: 0,
limit: 25,
offset: 0,
retry_seconds: 10,
seconds_elapsed: 0,
timer: null,
nonce: '',
set_progress: function(percent) {
jQuery('#cdn_rename_domain_progress .bar').width(percent + '%');
jQuery('#cdn_rename_domain_progress .percent').html(percent + '%');
},
set_status: function(status) {
jQuery('cdn_rename_domain_status').html(status);
},
set_processed: function(processed) {
jQuery('#cdn_rename_domain_processed').html(processed);
},
set_total: function(total) {
jQuery('#cdn_rename_domain_total').html(total);
},
set_button_text: function(text) {
jQuery('#cdn_rename_domain_start').val(text);
},
set_last_response: function() {
var date = new Date();
jQuery('#cdn_rename_domain_last_response').html(date.toLocaleTimeString() + ' ' + date.toLocaleDateString());
},
set_elapsed: function(text) {
jQuery('#cdn_rename_domain_elapsed').html(text);
},
add_log: function(path, result, error) {
jQuery('#cdn_rename_domain_log').prepend('<div class="log-' + (result == 1 ? 'success' : 'error') + '">' + path + ' <strong>' + error + '</strong></div>');
},
clear_log: function() {
jQuery('#cdn_rename_domain_log').html('');
},
get_domain_names: function() {
return jQuery('#cdn_rename_domain_names').val();
},
process: function() {
if (this.paused) {
return;
}
var me = this;
jQuery.ajax({
type: 'POST',
url: 'admin.php?page=w3tc_cdn',
data: {
w3tc_cdn_rename_domain_process: 1,
names: this.get_domain_names(),
limit: this.limit,
offset: this.offset,
_wpnonce: this.nonce
},
dataType: 'json',
success: function(data) {
me.set_last_response();
me.process_callback(data);
},
error: function() {
me.set_last_response();
me.retry(me.retry_seconds);
}
});
},
retry: function(seconds) {
if (this.paused) {
return;
}
this.set_status('request failed (retry in ' + seconds + 's)');
if (seconds) {
var me = this;
setTimeout(function() {
me.retry(--seconds);
}, 1000);
} else {
this.set_status('processing');
this.process();
}
},
process_callback: function(data) {
this.offset += data.count;
this.set_total(data.total);
this.set_processed(this.offset);
this.set_progress((this.offset * 100 / data.total).toFixed(0));
var failed = false;
for (var i = 0; i < data.results.length; i++) {
this.add_log(data.results[i].old, data.results[i].result, data.results[i].error);
if (data.results[i].result == -1) {
failed = true;
break;
}
}
if (failed) {
this.set_progress(0);
this.set_processed(1);
this.set_status('failed');
this.set_button_text('Start');
clearInterval(this.timer);
} else {
if (this.offset < data.total) {
this.process();
} else {
this.set_status('done');
this.set_button_text('Start');
clearInterval(this.timer);
}
}
},
timer_callback: function() {
this.seconds_elapsed++;
this.set_elapsed(w3tc_seconds_to_string(this.seconds_elapsed));
},
init: function(cdn_host) {
var me = this;
this.cdn_host = cdn_host;
jQuery('#cdn_rename_domain_start').click(function() {
if (this.value == 'Pause') {
me.paused = 1;
me.set_button_text('Resume');
me.set_status('paused');
clearInterval(me.timer);
} else {
if (this.value == 'Start') {
if (!me.get_domain_names()) {
alert('Empty domains to rename!');
return;
}
me.offset = 0;
me.seconds_elapsed = 0;
me.clear_log();
me.set_progress(0);
me.set_elapsed('-');
}
me.paused = 0;
me.set_button_text('Pause');
me.set_status('processing');
me.timer = setInterval(function() {
me.timer_callback();
}, 1000);
}
me.process();
});
}
};
function w3tc_ps_expand(expand) {
jQuery('.ps-rule').each(function() {
var e = jQuery(this).find('.ps-expander');
var a = jQuery(this).find('.ps-expand a');
if (!expand) {
e.hide();
a.html('+');
} else {
e.show();
a.html('-');
}
});
}
jQuery(function() {
jQuery('.tab').click(function() {
jQuery('.tab').removeClass('tab-selected');
jQuery('.tab-content').hide();
jQuery(this).addClass('tab-selected');
jQuery(this.rel).show();
});
jQuery('.cdn_queue_delete').click(function() {
return confirm('Are you sure you want to remove this file from the queue?');
});
jQuery('.cdn_queue_empty').click(function() {
return confirm('Are you sure you want to empty the queue?');
});
jQuery('.ps-rule').click(function() {
var e = jQuery(this).find('.ps-expander');
var a = jQuery(this).find('.ps-expand a');
if (e.is(':visible')) {
e.hide();
a.html('+');
} else {
e.show();
a.html('-');
}
return false;
});
jQuery('.ps-rule p a,.ps-expander').click(function(event) {
event.stopPropagation();
});
jQuery('.ps-expand-all').click(function() {
w3tc_ps_expand(1);
});
jQuery('.ps-collapse-all').click(function() {
w3tc_ps_expand(0);
});
});