This commit is contained in:
2026-03-11 15:57:27 +01:00
parent 481271c972
commit b4b460fd21
10775 changed files with 2071579 additions and 26409 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,713 @@
var task_retry_times=0;
var running_backup_taskid='';
var tmp_current_click_backupid = '';
var m_need_update=true;
var m_restore_backup_id;
var m_backup_task_id;
var m_downloading_file_name = '';
var m_downloading_id = '';
var wpvivid_settings_changed = false;
var wpvivid_cur_log_page = 1;
var wpvivid_completed_backup = 1;
var wpvivid_prepare_backup=false;
var wpvivid_restoring=false;
var wpvivid_location_href=false;
var wpvivid_editing_storage_id = '';
var wpvivid_editing_storage_type = '';
var wpvivid_restore_download_array;
var wpvivid_restore_download_index = 0;
var wpvivid_get_download_restore_progress_retry = 0;
var wpvivid_restore_timeout = false;
var wpvivid_restore_need_download = false;
var wpvivid_display_restore_backup = false;
var wpvivid_restore_backup_type = '';
var wpvivid_display_restore_check = false;
var wpvivid_restore_sure = false;
var wpvivid_resotre_is_migrate=0;
(function ($) {
'use strict';
/**
* All of the code for your admin-facing JavaScript source
* should reside in this file.
*
* Note: It has been assumed you will write jQuery code here, so the
* $ function reference has been prepared for usage within the scope
* of this function.
*
* This enables you to define handlers, for when the DOM is ready:
*
* $(function() {
*
* });
*
* When the window is loaded:
*
* $( window ).load(function() {
*
* });
*
* ...and/or other possibilities.
*
* Ideally, it is not considered best practise to attach more than a
* single DOM-ready or window-load handler for a particular page.
* Although scripts in the WordPress core, Plugins and Themes may be
* practising this, we should strive to set a better example in our own work.
*/
$(document).ready(function () {
//wpvivid_getrequest();
wpvivid_interface_flow_control();
$('input[option=review]').click(function(){
var name = jQuery(this).prop('name');
wpvivid_add_review_info(name);
});
$(document).on('click', '.notice-rate .notice-dismiss', function(){
var name = 'dismiss';
wpvivid_add_review_info(name);
});
$(document).on('click', '.notice-wp-cron .notice-dismiss', function(){
var ajax_data = {
'action': 'wpvivid_hide_wp_cron_notice'
};
wpvivid_post_request(ajax_data, function(res){
}, function(XMLHttpRequest, textStatus, errorThrown) {
});
});
});
})(jQuery);
function wpvivid_popup_tour(style) {
var popup = document.getElementById("wpvivid_popup_tour");
if (popup != null) {
popup.classList.add(style);
}
}
window.onbeforeunload = function(e) {
if (wpvivid_settings_changed) {
if (wpvivid_location_href){
wpvivid_location_href = false;
}
else {
return 'You are leaving the page without saving your changes, any unsaved changes on the page will be lost, are you sure you want to continue?';
}
}
}
/**
* Refresh the scheduled task list as regularly as a preset interval(3-minute), to retrieve and activate the scheduled cron jobs.
*/
function wpvivid_activate_cron(){
var next_get_time = 3 * 60 * 1000;
wpvivid_cron_task();
setTimeout("wpvivid_activate_cron()", next_get_time);
setTimeout(function(){
m_need_update=true;
}, 10000);
}
/**
* Send an Ajax request
*
* @param ajax_data - Data in Ajax request
* @param callback - A callback function when the request is succeeded
* @param error_callback - A callback function when the request is failed
* @param time_out - The timeout for Ajax request
*/
function wpvivid_post_request(ajax_data, callback, error_callback, time_out){
if(typeof time_out === 'undefined') time_out = 30000;
ajax_data.nonce=wpvivid_ajax_object.ajax_nonce;
jQuery.ajax({
type: "post",
url: wpvivid_ajax_object.ajax_url,
data: ajax_data,
success: function (data) {
callback(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
error_callback(XMLHttpRequest, textStatus, errorThrown);
},
timeout: time_out
});
}
/**
* Check if there are running tasks (backup and download)
*/
function wpvivid_check_runningtask(){
var ajax_data = {
'action': 'wpvivid_list_tasks',
'backup_id': tmp_current_click_backupid
};
if(wpvivid_restoring === false) {
wpvivid_post_request(ajax_data, function (data) {
setTimeout(function () {
wpvivid_manage_task();
}, 3000);
try {
var jsonarray = jQuery.parseJSON(data);
if (jsonarray.success_notice_html != false) {
jQuery('#wpvivid_backup_notice').show();
jQuery('#wpvivid_backup_notice').append(jsonarray.success_notice_html);
}
if(jsonarray.error_notice_html != false){
jQuery('#wpvivid_backup_notice').show();
jQuery.each(jsonarray.error_notice_html, function (index, value) {
jQuery('#wpvivid_backup_notice').append(value.error_msg);
});
}
if(jsonarray.backuplist_html != false) {
jQuery('#wpvivid_backup_list').html('');
jQuery('#wpvivid_backup_list').append(jsonarray.backuplist_html);
}
var b_has_data = false;
if (jsonarray.backup.data.length !== 0) {
b_has_data = true;
task_retry_times = 0;
if (jsonarray.backup.result === 'success') {
wpvivid_prepare_backup = false;
jQuery.each(jsonarray.backup.data, function (index, value) {
if (value.status.str === 'ready') {
jQuery('#wpvivid_postbox_backup_percent').html(value.progress_html);
m_need_update = true;
}
else if (value.status.str === 'running') {
running_backup_taskid = index;
wpvivid_control_backup_lock();
jQuery('#wpvivid_postbox_backup_percent').show();
jQuery('#wpvivid_postbox_backup_percent').html(value.progress_html);
m_need_update = true;
}
else if (value.status.str === 'wait_resume') {
running_backup_taskid = index;
wpvivid_control_backup_lock();
jQuery('#wpvivid_postbox_backup_percent').show();
jQuery('#wpvivid_postbox_backup_percent').html(value.progress_html);
if (value.data.next_resume_time !== 'get next resume time failed.') {
wpvivid_resume_backup(index, value.data.next_resume_time);
}
else {
wpvivid_delete_backup_task(index);
}
}
else if (value.status.str === 'no_responds') {
running_backup_taskid = index;
wpvivid_control_backup_lock();
jQuery('#wpvivid_postbox_backup_percent').show();
jQuery('#wpvivid_postbox_backup_percent').html(value.progress_html);
m_need_update = true;
}
else if (value.status.str === 'completed') {
jQuery('#wpvivid_postbox_backup_percent').html(value.progress_html);
wpvivid_control_backup_unlock();
jQuery('#wpvivid_postbox_backup_percent').hide();
jQuery('#wpvivid_last_backup_msg').html(jsonarray.last_msg_html);
jQuery('#wpvivid_loglist').html("");
jQuery('#wpvivid_loglist').append(jsonarray.log_html);
wpvivid_log_count = jsonarray.log_count;
wpvivid_display_log_page();
running_backup_taskid = '';
m_backup_task_id = '';
m_need_update = true;
}
else if (value.status.str === 'error') {
jQuery('#wpvivid_postbox_backup_percent').html(value.progress_html);
wpvivid_control_backup_unlock();
jQuery('#wpvivid_postbox_backup_percent').hide();
jQuery('#wpvivid_last_backup_msg').html(jsonarray.last_msg_html);
jQuery('#wpvivid_loglist').html("");
jQuery('#wpvivid_loglist').append(jsonarray.log_html);
running_backup_taskid = '';
m_backup_task_id = '';
m_need_update = true;
}
});
}
}
else
{
if(running_backup_taskid !== '')
{
jQuery('#wpvivid_backup_cancel_btn').css({'pointer-events': 'auto', 'opacity': '1'});
jQuery('#wpvivid_backup_log_btn').css({'pointer-events': 'auto', 'opacity': '1'});
wpvivid_control_backup_unlock();
jQuery('#wpvivid_postbox_backup_percent').hide();
wpvivid_retrieve_backup_list();
wpvivid_retrieve_last_backup_message();
wpvivid_retrieve_log_list();
running_backup_taskid='';
}
}
/*if (jsonarray.download.length !== 0) {
if(jsonarray.download.result === 'success') {
b_has_data = true;
task_retry_times = 0;
var i = 0;
var file_name = '';
jQuery('#wpvivid_file_part_' + tmp_current_click_backupid).html("");
var b_download_finish = false;
jQuery.each(jsonarray.download.files, function (index, value) {
i++;
file_name = index;
var progress = '0%';
if (value.status === 'need_download') {
if (m_downloading_file_name === file_name) {
m_need_update = true;
}
jQuery('#wpvivid_file_part_' + tmp_current_click_backupid).append(value.html);
//b_download_finish=true;
}
else if (value.status === 'running') {
if (m_downloading_file_name === file_name) {
wpvivid_lock_download(tmp_current_click_backupid);
}
m_need_update = true;
jQuery('#wpvivid_file_part_' + tmp_current_click_backupid).append(value.html);
b_download_finish = false;
}
else if (value.status === 'completed') {
if (m_downloading_file_name === file_name) {
wpvivid_unlock_download(tmp_current_click_backupid);
m_downloading_id = '';
m_downloading_file_name = '';
}
jQuery('#wpvivid_file_part_' + tmp_current_click_backupid).append(value.html);
b_download_finish = true;
}
else if (value.status === 'error') {
if (m_downloading_file_name === file_name) {
wpvivid_unlock_download(tmp_current_click_backupid);
m_downloading_id = '';
m_downloading_file_name = '';
}
alert(value.error);
jQuery('#wpvivid_file_part_' + tmp_current_click_backupid).append(value.html);
b_download_finish = true;
}
else if (value.status === 'timeout') {
if (m_downloading_file_name === file_name) {
wpvivid_unlock_download(tmp_current_click_backupid);
m_downloading_id = '';
m_downloading_file_name = '';
}
alert('Download timeout, please retry.');
jQuery('#wpvivid_file_part_' + tmp_current_click_backupid).append(value.html);
b_download_finish = true;
}
});
jQuery('#wpvivid_file_part_' + tmp_current_click_backupid).append(jsonarray.download.place_html);
if (b_download_finish == true) {
tmp_current_click_backupid = '';
}
}
else{
b_has_data = true;
alert(jsonarray.download.error);
}
}*/
if (!b_has_data) {
task_retry_times++;
if (task_retry_times < 5) {
m_need_update = true;
}
}
}
catch(err){
alert(err);
}
}, function (XMLHttpRequest, textStatus, errorThrown)
{
task_retry_times++;
if (task_retry_times < 5)
{
setTimeout(function () {
m_need_update = true;
wpvivid_manage_task();
}, 3000);
}
});
}
}
/**
* This function will show the log on a text box.
*
* @param data - The log message returned by server
*/
function wpvivid_show_log(data, content_id){
jQuery('#'+content_id).html("");
try {
var jsonarray = jQuery.parseJSON(data);
if (jsonarray.result === "success") {
var log_data = jsonarray.data;
while (log_data.indexOf('\n') >= 0) {
var iLength = log_data.indexOf('\n');
var log = log_data.substring(0, iLength);
log_data = log_data.substring(iLength + 1);
var insert_log = "<div style=\"clear:both;\">" + log + "</div>";
jQuery('#'+content_id).append(insert_log);
}
}
else if (jsonarray.result === "failed") {
jQuery('#'+content_id).html(jsonarray.error);
}
}
catch(err){
alert(err);
var div = "Reading the log failed. Please try again.";
jQuery('#'+content_id).html(div);
}
}
/**
* Resume the backup task automatically in 1 minute in a timeout situation
*
* @param backup_id - A unique ID for a backup
* @param next_resume_time - A time interval for resuming next timeout backup task
*/
function wpvivid_resume_backup(backup_id, next_resume_time){
if(next_resume_time < 0){
next_resume_time = 0;
}
next_resume_time = next_resume_time * 1000;
setTimeout("wpvivid_cron_task()", next_resume_time);
setTimeout(function(){
task_retry_times = 0;
m_need_update=true;
}, next_resume_time);
}
/**
* This function will retrieve the last backup message
*/
function wpvivid_retrieve_last_backup_message(){
var ajax_data={
'action': 'wpvivid_get_last_backup'
};
wpvivid_post_request(ajax_data, function(data){
try {
var jsonarray = jQuery.parseJSON(data);
jQuery('#wpvivid_last_backup_msg').html(jsonarray.data);
}
catch(err){
alert(err);
}
}, function(XMLHttpRequest, textStatus, errorThrown) {
var error_message = wpvivid_output_ajaxerror('retrieving the last backup log', textStatus, errorThrown);
jQuery('#wpvivid_last_backup_msg').html(error_message);
});
}
/**
* This function will control interface flow.
*/
function wpvivid_interface_flow_control(){
jQuery('#wpvivid_general_email_enable').click(function(){
if(jQuery('#wpvivid_general_email_enable').prop('checked') === true){
jQuery('#wpvivid_general_email_setting').show();
}
else{
jQuery('#wpvivid_general_email_setting').hide();
}
});
jQuery("input[name='schedule-backup-files']").bind("click",function(){
if(jQuery(this).val() === "custom"){
jQuery('#wpvivid_choosed_folders').show();
if(jQuery("input[name='wpvivid-schedule-custom-folders'][value='other']").prop('checked')){
jQuery('#wpvivid_file_tree_browser').show();
}
else{
jQuery('#wpvivid_file_tree_browser').hide();
}
}
else{
jQuery('#wpvivid_choosed_folders').hide();
jQuery('#wpvivid_file_tree_browser').hide();
}
});
jQuery("input[name='wpvivid-schedule-custom-folders']").bind("click",function(){
if(jQuery("input[name='wpvivid-schedule-custom-folders'][value='other']").prop('checked')){
jQuery('#wpvivid_file_tree_browser').show();
}
else{
jQuery('#wpvivid_file_tree_browser').hide();
}
});
jQuery('#settings-page input[type=checkbox]:not([option=junk-files])').on("change", function(){
wpvivid_settings_changed = true;
});
jQuery('#settings-page input[type=radio]').on("change", function(){
wpvivid_settings_changed = true;
});
jQuery('#settings-page input[type=text]').on("keyup", function(){
wpvivid_settings_changed = true;
});
/*jQuery("#wpvivid_storage_account_block input:not([type=checkbox])").on("keyup", function(){
wpvivid_settings_changed = true;
});*/
/*jQuery('#wpvivid_storage_account_block input[type=checkbox]').on("change", function(){
wpvivid_settings_changed = true;
});*/
jQuery('input:radio[option=restore]').click(function() {
jQuery('input:radio[option=restore]').each(function () {
if (jQuery(this).prop('checked')) {
jQuery('#wpvivid_restore_btn').css({'pointer-events': 'auto', 'opacity': '1'});
}
});
});
jQuery('input:radio[option=setting][name=backup_params]').click(function()
{
if(jQuery(this).prop('checked'))
{
var value = jQuery(this).prop('value');
if(value=='custom')
{
jQuery('#wpvivid_custom_backup_params').show();
}
else
{
jQuery('#wpvivid_custom_backup_params').hide();
}
}
});
}
/**
* Manage backup and download tasks. Retrieve the data every 3 seconds for checking if the backup or download tasks exist or not.
*/
function wpvivid_manage_task() {
if(m_need_update === true){
m_need_update = false;
wpvivid_check_runningtask();
}
else{
setTimeout(function(){
wpvivid_manage_task();
}, 3000);
}
}
function wpvivid_add_notice(notice_action, notice_type, notice_msg){
var notice_id="";
var tmp_notice_msg = "";
if(notice_type === "Warning"){
tmp_notice_msg = "Warning: " + notice_msg;
}
else if(notice_type === "Error"){
tmp_notice_msg = "Error: " + notice_msg;
}
else if(notice_type === "Success"){
tmp_notice_msg = "Success: " + notice_msg;
}
else if(notice_type === "Info"){
tmp_notice_msg = notice_msg;
}
switch(notice_action){
case "Backup":
notice_id="wpvivid_backup_notice";
break;
}
var bfind = false;
$div = jQuery('#'+notice_id).children('div').children('p');
$div.each(function (index, value) {
if(notice_action === "Backup" && notice_type === "Success"){
bfind = false;
return false;
}
if (value.innerHTML === tmp_notice_msg) {
bfind = true;
return false;
}
});
if (bfind === false) {
jQuery('#'+notice_id).show();
var div = '';
if(notice_type === "Warning"){
div = "<div class='notice notice-warning is-dismissible inline'><p>" + wpvividlion.warning + notice_msg + "</p>" +
"<button type='button' class='notice-dismiss' onclick='click_dismiss_notice(this);'>" +
"<span class='screen-reader-text'>Dismiss this notice.</span>" +
"</button>" +
"</div>";
}
else if(notice_type === "Error"){
div = "<div class=\"notice notice-error inline\"><p>" + wpvividlion.error + notice_msg + "</p></div>";
}
else if(notice_type === "Success"){
wpvivid_clear_notice('wpvivid_backup_notice');
jQuery('#wpvivid_backup_notice').show();
var success_msg = wpvivid_completed_backup + " backup tasks have been completed. Please switch to <a href=\"#\" onclick=\"wpvivid_click_switch_page('wrap', 'wpvivid_tab_log', true);\">Log</a> page to check the details.\n";
div = "<div class='notice notice-success is-dismissible inline'><p>" + success_msg + "</p>" +
"<button type='button' class='notice-dismiss' onclick='click_dismiss_notice(this);'>" +
"<span class='screen-reader-text'>Dismiss this notice.</span>" +
"</button>" +
"</div>";
wpvivid_completed_backup++;
}
else if(notice_type === "Info"){
div = "<div class='notice notice-info is-dismissible inline'><p>" + notice_msg + "</p>" +
"<button type='button' class='notice-dismiss' onclick='click_dismiss_notice(this);'>" +
"<span class='screen-reader-text'>Dismiss this notice.</span>" +
"</button>" +
"</div>";
}
jQuery('#'+notice_id).append(div);
}
}
function click_dismiss_notice(obj){
wpvivid_completed_backup = 1;
jQuery(obj).parent().remove();
}
function wpvivid_cron_task(){
jQuery.get(wpvivid_siteurl+'/wp-cron.php');
}
function wpvivid_clear_notice(notice_id){
var t = document.getElementById(notice_id);
if(t !== null)
{
var oDiv = t.getElementsByTagName("div");
var count = oDiv.length;
for (count; count > 0; count--) {
var i = count - 1;
oDiv[i].parentNode.removeChild(oDiv[i]);
}
}
jQuery('#'+notice_id).hide();
}
function wpvivid_click_switch_page(tab, type, scroll)
{
jQuery('.'+tab+'-tab-content:not(.' + type + ')').hide();
jQuery('.'+tab+'-tab-content.' + type).show();
jQuery('.'+tab+'-nav-tab:not(#' + type + ')').removeClass('nav-tab-active');
jQuery('.'+tab+'-nav-tab#' + type).addClass('nav-tab-active');
if(scroll == true){
var top = jQuery('#'+type).offset().top-jQuery('#'+type).height();
jQuery('html, body').animate({scrollTop:top}, 'slow');
}
}
function wpvivid_close_tab(event, hide_tab, type, show_tab){
event.stopPropagation();
jQuery('#'+hide_tab).hide();
if(hide_tab === 'wpvivid_tab_mainwp'){
wpvivid_hide_mainwp_tab_page();
}
wpvivid_click_switch_page(type, show_tab, true);
}
function wpvivid_hide_mainwp_tab_page(){
var ajax_data = {
'action': 'wpvivid_hide_mainwp_tab_page'
};
wpvivid_post_request(ajax_data, function(res){
}, function(XMLHttpRequest, textStatus, errorThrown) {
});
}
/**
* Output ajax error in a standard format.
*
* @param action - The specific operation
* @param textStatus - The textual status message returned by the server
* @param errorThrown - The error message thrown by server
*
* @returns {string}
*/
function wpvivid_output_ajaxerror(action, textStatus, errorThrown){
action = 'trying to establish communication with your server';
var error_msg = "wpvivid_request: "+ textStatus + "(" + errorThrown + "): an error occurred when " + action + ". " +
"This error may be request not reaching or server not responding. Please try again later.";
//"This error could be caused by an unstable internet connection. Please try again later.";
return error_msg;
}
function wpvivid_add_review_info(review){
var ajax_data={
'action': 'wpvivid_need_review',
'review': review
};
jQuery('#wpvivid_notice_rate').hide();
wpvivid_post_request(ajax_data, function(res){
if(typeof res != 'undefined' && res != ''){
var tempwindow=window.open('_blank');
tempwindow.location=res;
}
}, function(XMLHttpRequest, textStatus, errorThrown) {
});
}
function wpvivid_click_amazons3_notice(){
var ajax_data={
'action': 'wpvivid_amazons3_notice'
};
jQuery('#wpvivid_amazons3_notice').hide();
wpvivid_post_request(ajax_data, function(res){
}, function(XMLHttpRequest, textStatus, errorThrown) {
});
}
function wpvivid_ajax_data_transfer(data_type){
var json = {};
jQuery('input:checkbox[option='+data_type+']').each(function() {
var value = '0';
var key = jQuery(this).prop('name');
if(jQuery(this).prop('checked')) {
value = '1';
}
else {
value = '0';
}
json[key]=value;
});
jQuery('input:radio[option='+data_type+']').each(function() {
if(jQuery(this).prop('checked'))
{
var key = jQuery(this).prop('name');
var value = jQuery(this).prop('value');
json[key]=value;
}
});
jQuery('input:text[option='+data_type+']').each(function(){
var obj = {};
var key = jQuery(this).prop('name');
var value = jQuery(this).val();
json[key]=value;
});
jQuery('textarea[option='+data_type+']').each(function(){
var obj = {};
var key = jQuery(this).prop('name');
var value = jQuery(this).val();
json[key]=value;
});
jQuery('input:password[option='+data_type+']').each(function(){
var obj = {};
var key = jQuery(this).prop('name');
var value = jQuery(this).val();
json[key]=value;
});
jQuery('select[option='+data_type+']').each(function(){
var obj = {};
var key = jQuery(this).prop('name');
var value = jQuery(this).val();
json[key]=value;
});
return JSON.stringify(json);
}

View File

@@ -0,0 +1,18 @@
function wpvivid_post_request_quick(ajax_data, callback, error_callback, time_out){
if(typeof time_out === 'undefined') time_out = 30000;
ajax_data.nonce=wpvivid_quick_snapshot_ajax_object.ajax_nonce;
jQuery.ajax({
type: "post",
url: wpvivid_quick_snapshot_ajax_object.ajax_url,
data: ajax_data,
cache:false,
success: function (data) {
callback(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
error_callback(XMLHttpRequest, textStatus, errorThrown);
},
timeout: time_out
});
}