/** * Envoyer une action via AJAX. Un wrapper autour de jQuery.ajax. À l’avenir, tous les consommateurs pourront être examinés afin de simplifier certaines options, là où il existe des lacunes historiques. * NB updraft_iframe_modal() ci-dessous utilise l'URL AJAX pour l'attribut src de l'iframe * * @param {string} action - l'action à envoyer * @param {*} data - données à envoyer * @param {Function} callback - si spécifié, sera appelé avec les résultats * @param {object} options - autres options. Les propriétés pertinentes incluent : * - [json_parse=true] - s'il faut analyser les résultats au format JSON * - [alert_on_error=true] - s'il faut afficher une boîte d'alerte en cas de problème (sinon, la supprimer) * - [action='updraft_ajax'] - ce qu'il faut envoyer comme paramètre d'action sur la requête AJAX (NB le paramètre d'action de cette fonction correspond au paramètre « sous-action » de la requête AJAX) * - [nonce=updraft_credentialtest_nonce] - la valeur nonce à envoyer. * - [nonce_key='nonce'] - the key value for the nonce field * - [timeout=null] - set a timeout after this number of seconds (or if null, none is set) * - [async=true] - control whether the request is asynchronous (almost always wanted) or blocking (would need to have a specific reason) * - [type='POST'] - GET or POST */ function updraft_send_command(action, data, callback, options) { default_options = { json_parse: true, alert_on_error: true, action: 'updraft_ajax', nonce: updraft_credentialtest_nonce, nonce_key: 'nonce', timeout: null, async: true, type: 'POST' } if ('undefined' === typeof options) options = {}; for (var opt in default_options) { if (!options.hasOwnProperty(opt)) { options[opt] = default_options[opt]; } } var ajax_data = { action: options.action, subaction: action, }; ajax_data[options.nonce_key] = options.nonce; // TODO: Once all calls are routed through here, change the listener in admin.php to always take the data from the 'data' attribute, instead of in the naked $_POST/$_GET if (typeof data == 'object') { for (var attrname in data) { ajax_data[attrname] = data[attrname]; } } else { ajax_data.action_data = data; } var ajax_opts = { type: options.type, url: ajaxurl, data: ajax_data, success: function(response, status) { if (options.json_parse) { try { var resp = ud_parse_json(response); } catch (e) { if ('function' == typeof options.error_callback) { return options.error_callback(response, e, 502, resp); } else { console.log(e); console.log(response); if (options.alert_on_error) { if ('string' === typeof response && response.match(/security\scheck\s?/i)) response += ' (' + updraftlion.expired_tokens + ' ' + updraftlion.reload_page + ')'; alert(updraftlion.unexpectedresponse+' '+response); } return; } } if (resp.hasOwnProperty('fatal_error')) { if ('function' == typeof options.error_callback) { // 500 is internal server error code return options.error_callback(response, status, 500, resp); } else { console.error(resp.fatal_error_message); if (options.alert_on_error) { alert(resp.fatal_error_message); } return false; } } if ('function' == typeof callback) callback(resp, status, response); } else { if ('function' == typeof callback) callback(response, status); } }, error: function(response, status, error_code) { if ('function' == typeof options.error_callback) { options.error_callback(response, status, error_code); } else { console.log("updraft_send_command: error: "+status+" ("+error_code+")"); console.log(response); } }, dataType: 'text', async: options.async }; if (null != options.timeout) { ajax_opts.timeout = options.timeout; } jQuery.ajax(ajax_opts); } /** * Opens the dialog box for confirmation of whether to delete a backup, plus options if relevant * * @param {string} key - The UNIX timestamp of the backup * @param {string} nonce - The backup job ID * @param {boolean} showremote - Whether or not to show the "also delete from remote storage?" case à cocher */ function updraft_delete(key, nonce, showremote) { jQuery('#updraft_delete_timestamp').val(key); jQuery('#updraft_delete_nonce').val(nonce); if (showremote) { jQuery('#updraft-delete-remote-section, #updraft_delete_remote').prop('disabled', false).show(); } else { jQuery('#updraft-delete-remote-section, #updraft_delete_remote').hide().attr('disabled','disabled'); } if (key.indexOf(',') > -1) { jQuery('#updraft_delete_question_singular').hide(); jQuery('#updraft_delete_question_plural').show(); } else { jQuery('#updraft_delete_question_plural').hide(); jQuery('#updraft_delete_question_singular').show(); } jQuery('#updraft-delete-modal').dialog('open'); } function updraft_remote_storage_tab_activation(la_méthode){ jQuery('.updraftplusmethod').not('.error').hide(); jQuery('.remote-tab').data('active', false); jQuery('.remote-tab').removeClass('nav-tab-active'); jQuery('.updraftplusmethod.'+la_méthode).show(); jQuery('.remote-tab-'+la_méthode).data('active', true); jQuery('.remote-tab-'+la_méthode).addClass('nav-tab-active'); } /** * Faites défiler jusqu'à une configuration de stockage distant spécifique en ajoutant le hachage d'ancrage #remote-storage-{method_name} à l'URL. */ function updraft_scroll_to_remote_storage_config() { var url_hash_match = window.location.hash.match(/#remote-storage-([A-Za-z]+)/); if (url_hash_match && updraftlion.remote_storage_methods[url_hash_match[1]]) { if (jQuery('.updraft_servicecheckbox').hasClass('multi')) { updraft_remote_storage_tab_activation(url_hash_match[1]); } document.getElementById('remote-storage-'+url_hash_match[1]).scrollIntoView(); } } /** * Configurez le lien de configuration du stockage distant pour gérer l'événement de clic. Lorsqu'on clique dessus depuis la page des paramètres UDP, nous devons rouvrir l'onglet des paramètres avant de faire défiler jusqu'à la section de configuration du stockage à distance. */ function updraft_setup_remote_storage_config_link() { jQuery('.updraftplus-remote-storage-link').on('click', function(e) { if ('settings' == updraftlion.tab) { e.preventDefault(); updraft_open_main_tab('settings'); window.location.href = jQuery(this).attr('href'); updraft_scroll_to_remote_storage_config(); } }); } /** * Définissez le paramètre du rapport par e-mail sur une interface différente lorsque le stockage par e-mail est sélectionné * * @param {booléen} valeur Vrai pour définir le paramètre du rapport par e-mail sur une autre interface, sinon faux */ function set_email_report_storage_interface(value) { jQuery('#cb_not_email_storage_label').css('display', true === valeur ? 'none' : 'inline'); jQuery('#cb_email_storage_label').css('display', true === valeur ? '); } } /** * Check how many cron jobs are overdue, and display a message if it is several (as determined by the back-end) */ function updraft_check_overduecrons() { updraft_send_command('check_overdue_crons', null, function(response) { if (response && response.hasOwnProperty('m') && Array.isArray(response.m)) { for (var i in response.m) { jQuery('#updraft-insert-admin-warning').append(response.m[i]); } } }, { alert_on_error: false }); } function updraft_remote_storage_tabs_setup() { var anychecked = 0; var set = jQuery('.updraft_servicecheckbox:checked'); jQuery(set).each(function(ind, obj) { var ser = jQuery(obj).val(); jQuery('.error.updraftplusmethod.'+ser).show(); if (jQuery(obj).attr('id') != 'updraft_servicecheckbox_none') { anychecked++; } jQuery('.remote-tab-'+ser).show(); if (ind == jQuery(set).length-1) { updraft_remote_storage_tab_activation(ser); } }); if (anychecked > 0) { jQuery('.updraftplusmethod.none').hide(); jQuery('#remote_storage_tabs').show(); } else { jQuery('#remote_storage_tabs').hide(); } // To allow labelauty remote storage buttons to be used with keyboard jQuery(document).on('keyup', function(event) { if (32 === event.keyCode || 13 === event.keyCode) { if (jQuery(document.activeElement).is("input.labelauty + label")) { var for_box = jQuery(document.activeElement).attr("for"); if (for_box) { jQuery("#"+for_box).trigger('change'); } } } }); jQuery('.updraft_servicecheckbox').on('change', function() { var sclass = jQuery(this).attr('id'); if ('updraft_servicecheckbox_' == sclass.substring(0,24)) { var serv = sclass.substring(24); if (null != serv && '' != serv) { if (jQuery(this).is(':checked')) { anychecked++; jQuery('.error.updraftplusmethod.'+serv).show(); jQuery('.remote-tab-'+serv).fadeIn(); updraft_remote_storage_tab_activation(serv); if (jQuery('#updraft-navtab-settings-content #updraft_report_row_no_addon').length && 'email' === serv) set_email_report_storage_interface(true); } else { anychecked--; jQuery('.error.updraftplusmethod.'+serv).hide(); jQuery('.remote-tab-'+serv).hide(); // Check if this was the active tab, if yes, switch to another if (jQuery('.remote-tab-'+serv).data('active') == true) { updraft_remote_storage_tab_activation(jQuery('.remote-tab:visible').last().attr('name')); } if (jQuery('#updraft-navtab-settings-content #updraft_report_row_no_addon').length && 'email' === serv) set_email_report_storage_interface(false); } } } if (anychecked <= 0) { jQuery('.updraftplusmethod.none').fadeIn(); jQuery('#remote_storage_tabs').hide(); } else { jQuery('.updraftplusmethod.none').hide(); jQuery('#remote_storage_tabs').show(); } }); // Add stuff for free version jQuery('.updraft_servicecheckbox:not(.multi)').on('change', function() { set_email_report_storage_interface(false); var svalue = jQuery(this).attr('value'); if (jQuery(this).is(':not(:checked)')) { jQuery('.updraftplusmethod.'+svalue).hide(); jQuery('.updraftplusmethod.none').fadeIn(); } else { jQuery('.updraft_servicecheckbox').not(this).prop('checked', false); if ('email' === svalue) { set_email_report_storage_interface(true); } } }); var servicecheckbox = jQuery('.updraft_servicecheckbox'); if (typeof servicecheckbox.labelauty === 'function') { servicecheckbox.labelauty(); var $vault_label = jQuery('label[for=updraft_servicecheckbox_updraftvault]'); var $vault_info = jQuery('
?
'+updraftlion.updraftvault_info+'
'); $vault_label.append($vault_info); } } /** * Effectue un test de stockage distant * * @param {string} method - L'identifiant du stockage distant * @param {callback} result_callback - Une fonction de rappel à appeler avec le résultat * @param {string} instance_id - L'instance particulière (le cas échéant) du stockage distant à tester (pour les méthodes prenant en charge plusieurs instances) */ function updraft_remote_storage_test(method, result_callback, instance_id) { var $the_button; var settings_selector; if (instance_id) { $the_button = jQuery('#updraft-'+method+'-test-'+instance_id); settings_selector = '.updraftplusmethod.'+method+'-'+instance_id; } else { $the_button = jQuery('#updraft-'+method+'-test'); settings_selector = '.updraftplusmethod.'+method; } var method_label = $the_button.data('method_label'); $the_button.html(updraftlion.testing_settings.replace('%s', method_label)); var data = { method: method }; // Ajoutez les autres éléments à l'objet de données. Les paramètres du mode expert concernent les options SSL génériques. jQuery('#updraft-navtab-settings-content '+settings_selector+' input[data-updraft_settings_test], #updraft-navtab-settings-content .expertmode input[data-updraft_settings_test]').each(function(index, item) { var item_key = jQuery(item).data('updraft_settings_test'); var input_type = jQuery(item).attr('type'); if (!item_key) { return; } if (!input_type) { console.log("UpdraftPlus : élément d'entrée de test de paramètres sans type trouvé"); console.log(item); // Un input_type par défaut = 'text'; } var value = null; if ('checkbox' == input_type) { value = jQuery(item).is(':checked') ? 1 : 0; } else if ('text' == input_type || 'password' == input_type || 'hidden' == input_type) { value = jQuery(item).val(); } else { console.log("UpdraftPlus: settings test input item with unrecognised type ("+input_type+") found"); console.log(item); } data[item_key] = value; }); // Data from any text areas or select drop-downs jQuery('#updraft-navtab-settings-content '+settings_selector+' textarea[data-updraft_settings_test], #updraft-navtab-settings-content '+settings_selector+' select[data-updraft_settings_test]').each(function(index, item) { var item_key = jQuery(item).data('updraft_settings_test'); data[item_key] = jQuery(item).val(); }); updraft_send_command('test_storage_settings', data, function(response, status) { $the_button.html(updraftlion.test_settings.replace('%s', method_label)); if ('undefined' !== typeof result_callback && false != result_callback) { result_callback = result_callback.call(this, response, status, data); } if ('undefined' !== typeof result_callback && false === result_callback) { alert(updraftlion.settings_test_result.replace('%s', method_label)+' '+response.output); if (response.hasOwnProperty('data')) { console.log(response.data); } } }, { error_callback: function(response, status, error_code, resp) { $the_button.html(updraftlion.test_settings.replace('%s', method_label)); if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: error: "+status+" ("+error_code+")"; console.log(error_message); alert(error_message); console.log(response); } } }); } function backupnow_whichfiles_checked(onlythesefileentities){ jQuery('#backupnow_includefiles_moreoptions input[type="checkbox"]').each(function(index) { if (!jQuery(this).is(':checked')) { return; } var name = jQuery(this).attr('name'); if (name.substring(0, 16) != 'updraft_include_') { return; } var entity = name.substring(16); if (onlythesefileentities != '') { onlythesefileentities += ','; } onlythesefileentities += entity; }); // console.log(onlythesefileentities); return onlythesefileentities; } /** * A method to get all the selected table values from the backup now modal * * @param {string} onlythesetableentities an empty string to append values to * * @return {string} a string that contains the values of all selected table entities and the database the belong to */ function backupnow_whichtables_checked(onlythesetableentities){ var send_list = false; jQuery('#backupnow_database_moreoptions .updraft_db_entity').each(function(index) { if (!jQuery(this).is(':checked')) { send_list = true; return; } if (jQuery(this).is(':checked') && jQuery(this).data('non_wp_table')) { send_list = true; return; } }); onlythesetableentities = jQuery("input[name^='updraft_include_tables_']").serializeArray(); if (send_list) { return onlythesetableentities; } else { return true; } } function updraft_deleteallselected() { var howmany = 0; var remote_exists = 0; var key_all = ''; var nonce_all = ''; var remote_all = 0; jQuery('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected').each(function(index) { howmany++; var nonce = jQuery(this).data('nonce'); if (nonce_all) { nonce_all += ','; } nonce_all += nonce; var key = jQuery(this).data('key'); if (key_all) { key_all += ','; } key_all += key; var has_remote = jQuery(this).find('.updraftplus-remove').data('hasremote'); if (has_remote) remote_all++; }); updraft_delete(key_all, nonce_all, remote_all); } /** * Open main tab which is given as argument * * @param {string} active_tab_key A tab key which you would like to open */ function updraft_open_main_tab(active_tab_key) { updraftlion.main_tabs_keys.forEach(function(tab_key) { if (active_tab_key == tab_key) { jQuery('#updraft-navtab-' + tab_key + '-content').show(); jQuery('#updraft-navtab-' + tab_key).addClass('nav-tab-active'); } else { jQuery('#updraft-navtab-' + tab_key + '-content').hide(); jQuery('#updraft-navtab-' + tab_key).removeClass('nav-tab-active'); } updraft_console_focussed_tab = active_tab_key; }); } /** * Open an existing backups tab * * @param {Boolean} toggly Whether switch on updraft_historytimer or not */ function updraft_openrestorepanel(toggly) { // jQuery('.download-backups').slideDown(); updraft_historytimertoggle(1); jQuery('html,body').animate({scrollTop: jQuery('#updraft_lastlogcontainer').offset().top},'slow'); updraft_historytimertoggle(toggly); updraft_open_main_tab('backups'); } function updraft_delete_old_dirs() { return true; } function updraft_initiate_restore(whichset) { jQuery('#updraft-navtab-backups-content .updraft_existing_backups .restore-button button[data-backup_timestamp="'+whichset+'"]').trigger('click'); } function updraft_restore_setoptions(entities) { var howmany = 0; jQuery('input[name="updraft_restore[]"]').each(function(x,y) { var entity = jQuery(y).val(); var epat = '\/'+entity+'=([0-9,]+)'; var eregex = new RegExp(epat); var ematch = entities.match(eregex); if (ematch) { jQuery(y).prop('disabled', false).data('howmany', ematch[1]).parent().show(); howmany++; if ('db' == entity) { howmany += 4.5;} if (jQuery(y).is(':checked')) { // This element may or may not exist. Le but de l'appel explicite de show() est que Firefox, lors du rechargement (y compris via la navigation vers l'avant/vers l'arrière), se souviendra des états des cases à cocher, mais pas des éléments DOM affichés/masqués - ce qui peut entraîner le masquage de certains éléments alors qu'ils devraient être affichés, et l'utilisateur ne verra pas les options qui sont/ne sont pas cochées. jQuery('#updraft_restorer_'+entity+'options').show(); } } else { jQuery(y).attr('désactivé','désactivé').parent().hide(); } }); var cryptmatch = entity.match(/dbcrypted=1/); if (cryptmatch) { jQuery('#updraft_restore_db').data('crypté', 1); jQuery('.updraft_restore_crypteddb').show(); } else { jQuery('#updraft_restore_db').data('crypté', 0); jQuery('.updraft_restore_crypteddb').hide(); } jQuery('#updraft_restore_db').trigger('change'); var dmatch = entity.match(/meta_foreign=([12])/); if (dmatch) { jQuery('#updraft_restore_meta_foreign').val(dmatch[1]); } else { jQuery('#updraft_restore_meta_foreign').val('0'); } } /** * Ouvrir la boîte de dialogue « Sauvegarder maintenant » * * @param {string} type - le type de sauvegarde ; soit « nouveau » soit « incrémentiel » */ function updraft_backup_dialog_open(type) { type = ('undefined' === typeof type) ? 'nouveau' : type; si (0 == jQuery('#updraftplus_incremental_backup_link').data('incremental') && 'incremental' == type) { jQuery('#updraft-backupnow-modal .incremental-free-only').show(); type = 'nouveau'; } else { jQuery('#updraft-backupnow-modal .incremental-backups-only, #updraft-backupnow-modal .incremental-free-only').hide(); } jQuery('#backupnow_includefiles_moreoptions').hide(); si (!updraft_settings_form_changed || window.confirm(updraftlion.unsavedsettingsbackup)) { jQuery('#backupnow_label').val(''); si ('incrémental' == type) { update_file_entities_checkboxes(true, impossible_increment_entities); jQuery('#backupnow_includedb').prop('vérifié', false); jQuery('#backupnow_includefiles').prop('vérifié', true); jQuery('#backupnow_includefiles_label').text(updraftlion.files_incremental_backup); jQuery('#updraft-backupnow-modal .new-backups-only').hide(); jQuery('#updraft-backupnow-modal .incremental-backups-only').show(); } else { update_file_entities_checkboxes(false, impossible_increment_entities); jQuery('#backupnow_includedb').prop('vérifié', true); jQuery('#backupnow_includefiles_label').text(updraftlion.files_new_backup); jQuery('#updraft-backupnow-modal .new-backups-only').show(); jQuery('#updraft-backupnow-modal .incremental-backups-only').hide(); } jQuery('#updraft-backupnow-modal').data('backup-type', type); jQuery('#updraft-backupnow-modal').dialog('open'); } } /** * Ouvrir la boîte de dialogue « Sauvegarder maintenant » * * @param {string} type - le type de sauvegarde ; soit « nouveau » soit « incrémentiel » */ /** * Cette fonction activera et désactivera les options d'entité de fichier en fonction des entités auxquelles des incréments peuvent être ajoutés et s'il s'agit d'une nouvelle sauvegarde ou non. '); // L'événement de clic pour le bouton Enregistrer sera enregistré à chaque fois que le bouton est créé. Nous devons utiliser la méthode 'one' au lieu de la méthode 'on' pour nous assurer que l'événement de clic n'est exécuté qu'une seule fois. jQuery("#updraft-navtab-settings-content").one('click', '#updraftplus-floating-settings-save', function() { jQuery("#updraftplus-settings-save").trigger('click'); jQuery("#updraftplus-floating-settings-save").remove(); save_button_added = false; }); jQuery("#updraftplus-settings-save").one('click', function() { jQuery("#updraftplus-floating-settings-save").remove(); save_button_added = false; }); } } window.onbeforeunload = function(e) { if (updraft_settings_form_changed) return updraftlion.unsavedsettings; } /** * NB Cette fonction fonctionne à la fois sur la page des paramètres UD et ailleurs * * @param {boolean} firstload Vérifie s'il s'agit du premier chargement */ function updraft_check_page_visibility(firstload) { if ('hidden' == document["visibilityState"]) { updraft_page_is_visible = 0; } else { updraft_page_is_visible = 1; if (1 !== firstload) { if (jQuery('#updraft-navtab-backups-content').length) { updraft_activejobs_update(true); } } }; } // Voir http://caniuse.com/#feat=pagevisibility for compatibility (we don't bother with prefixes) if (typeof document.hidden !== "undefined") { document.addEventListener('visibilitychange', function() { updraft_check_page_visibility(0);}, false); } updraft_check_page_visibility(1); var updraft_poplog_log_nonce; var updraft_poplog_log_pointer = 0; var updraft_poplog_lastscroll = -1; var updraft_last_forced_jobid = -1; var updraft_last_forced_resumption = -1; var updraft_last_forced_when = -1; var updraft_backupnow_nonce = ''; var updraft_activejobslist_backupnownonce_only = 0; var updraft_inpage_hasbegun = 0; var updraft_activejobs_update_timer; var updraft_aborted_jobs = []; var updraft_clone_jobs = []; var temporary_clone_timeout; // Manage backups table selection var updraft_backups_selection = {}; // @codingStandardsIgnoreStart - to keep the doc blocks, as they're considered block comments by phpcs (function($) { /** * Toggle row seletion * * @param {HTMLDomElement|jQuery} el - row element */ updraft_backups_selection.toggle = function(el) { var $el = $(el); if ($el.is('.backuprowselected')) { this.deselect(el); } else { this.select(el); } }; /** * Select row * * @param {HTMLDomElement|jQuery} el - row element */ updraft_backups_selection.select = function(el) { $(el).addClass('backuprowselected'); $(el).find('.backup-select input').prop('checked', true); this.checkSelectionStatus(); }; /** * Deselect row * * @param {HTMLDomElement|jQuery} el - row element */ updraft_backups_selection.deselect = function(el) { $(el).removeClass('backuprowselected'); $(el).find('.backup-select input').prop('checked', false); this.checkSelectionStatus(); }; /** * Select all rows */ updraft_backups_selection.selectAll = function() { $('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row').each(function(index, el) { updraft_backups_selection.select(el); }) }; /** * Deselect all rows */ updraft_backups_selection.deselectAll = function() { $('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row').each(function(index, el) { updraft_backups_selection.deselect(el); }) }; /** * Actions after a row selection/deselection */ updraft_backups_selection.checkSelectionStatus = function() { var num_rows = $('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row').length; var num_selected = $('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected').length; // toggles actions upon seleted items if (num_selected > 0) { $('#ud_massactions').addClass('active'); $('.js--deselect-all-backups, .js--delete-selected-backups').prop('disabled', false); } else { $('#ud_massactions').removeClass('active'); $('.js--deselect-all-backups, .js--delete-selected-backups').prop('disabled', true); } // if all rows are selected, check the headind's checkbox if (num_rows === num_selected) { $('#cb-select-all').prop('checked', true); } else { $('#cb-select-all').prop('checked', false); } // if no backups, hide massaction if (!num_rows) { $('#ud_massactions').hide(); } else { $('#ud_massactions').show(); } } /** * Multiple range selection * * @param {HTMLDomElement|jQuery} el - row element */ updraft_backups_selection.selectAllInBetween = function(el) { var idx_start = this.firstMultipleSelectionIndex, idx_end = el.rowIndex-1; if (this.firstMultipleSelectionIndex > el.rowIndex-1) { idx_start = el.rowIndex-1; idx_end = this.firstMultipleSelectionIndex; } for (var i=idx_start; i<=idx_end; i++) { this.select($('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row').eq(i)); } } /** * Multiple range selection event handler that gets executed when hovering the mouse over the row of existing backups. ' }); // fermer la fenêtre contextuelle de réussite setTimeout(jQuery.unblockUI, 5000); jQuery('.blockUI .updraft-close-overlay').on('click', function() { jQuery.unblockUI(); }) } /** * Ouvre une fenêtre de dialogue affichant le fichier journal demandé (ou le plus récent), ainsi qu'une option pour le télécharger * * @param {string} backup_nonce - le nonce du journal à afficher, ou vide pour le plus récent */ function updraft_popuplog(backup_nonce) { var loading_message = updraftlion.loading_log_file; if (backup_nonce) { loading_message += ' (log.'+backup_nonce+'.txt)'; } jQuery('#updraft-poplog').dialog("option", "title", loading_message); jQuery('#updraft-poplog-content').html(''+chargement_message+' ... '); jQuery('#updraft-poplog').dialog("ouvrir"); updraft_send_command('get_log', backup_nonce, function(resp) { updraft_poplog_log_pointer = resp.pointer; updraft_poplog_log_nonce = resp.nonce; var download_url = '?page=updraftplus&action=downloadlog&force_download=1&updraftplus_backup_nonce='+resp.nonce; jQuery('#updraft-poplog-content').html(resp.log); var log_popup_buttons = {}; log_popup_buttons[updraftlion.downloadlogfile] = function() { window.location.href = download_url; }; log_popup_buttons[updraftlion.close] = function() { jQuery(this).dialog("close"); }; // Définir les boutons de dialogue : Télécharger le journal, Fermer le journal jQuery('#updraft-poplog').dialog("option", "boutons", log_popup_buttons); jQuery('#updraft-poplog').dialog("option", "titre", 'log.'+resp.nonce+'.txt'); updraft_poplog_lastscroll = -1; }, { type: 'GET', timeout: 60000, error_callback: function(response, status, error_code, resp) { if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); jQuery('#updraft-poplog-content').append(resp.fatal_error_message); } else { var msg = (status == error_code) ? code_erreur : code_erreur+" ("+status+")"; jQuery('#updraft-poplog-content').append(msg); console.log(response); } } }); } function updraft_showlastbackup() { updraft_send_command('get_fragment', 'last_backup_html', function(resp) { response = resp.output; if (lastbackup_laststatus == response) { setTimeout(function() { updraft_showlastbackup(); }, 7000); } else { jQuery('#updraft_last_backup').html(response); } lastbackup_laststatus = response; }, { type: 'GET' }); } var updraft_historytimer = 0; var calculated_diskspace = 0; var updraft_historytimer_notbefore = 0; var updraft_history_lastchecksum = false; function updraft_historytimertoggle(forceon) { if (!updraft_historytimer || forceon == 1) { updraft_updatehistory(0, 0); updraft_historytimer = setInterval(function() { updraft_updatehistory(0, 0);}, 30000); if (!calculated_diskspace) { updraftplus_diskspace(); calculated_diskspace = 1; } } else { clearTimeout(updraft_historytimer); updraft_historytimer = 0; } } /** * Mettre à jour le code HTML de la table « sauvegardes existantes » ; éventuellement, après une nouvelle analyse locale/à distance. * Rien n'est renvoyé ; toute mise à jour nécessaire est effectuée directement sur le DOM. * * @param {Integer} rescan - d'abord, ré-analyser le stockage local (0 ou 1) * @param {Integer} remotescan - d'abord, ré-analyser le stockage distant (vous devez également définir rescan sur 1 pour utiliser cela) * @param {Integer} debug - si 1, alors demander également des informations de débogage et les enregistrer sur la console * @param {Integer} backup_count - le nombre de sauvegardes que nous voulons afficher */ function updraft_updatehistory(rescan, remotescan, debug, backup_count) { if ('undefined' != typeof updraft_restore_screen && updraft_restore_screen) return; if ('undefined' === typeof debug) { debug = jQuery('#updraft_debug_mode').is(':checked') ?

'+updraftlion.rescanningremote+'

'); } else { updraft_history_lastchecksum = false; jQuery('#updraft-navtab-backups-content .updraft_existing_backups').html('

'+updraftlion.rescanning+'

'); } } var what_op = remotescan ? 'remotescan' : (rescanner ? 'rescan' : false); var data = { operation: what_op, debug: debug, backup_count: backup_count, } updraft_send_command('rescan', data, function(resp) { if (resp.hasOwnProperty('logs_exist') && resp.logs_exist) { // Afficher le lien « journal le plus récemment modifié », au cas où il aurait été précédemment masqué (s'il n'y avait pas de journaux jusqu'à présent) jQuery('#updraft_lastlogmessagerow .updraft-log-link').show(); } if (resp.hasOwnProperty('migrate_tab') && resp.migrate_tab) { if (!jQuery('#updraft-navtab-migrate').hasClass('nav-tab-active')) { jQuery('#updraft_migrate_tab_alt').html(''); jQuery('#updraft_migrate').replaceWith(jQuery(resp.migrate_tab).find('#updraft_migrate')); setup_migrate_tabs(); } } if (resp.hasOwnProperty('espace_disque_du_serveur_web')) { if ('' == resp.espace_disque_du_serveur_web) { console.log("UpdraftPlus : l'espace_disque_du_serveur_web est vide"); if (jQuery('#updraft-navtab-backups-content .updraft-server-disk-space').length) { jQuery('#updraft-navtab-backups-content .updraft-server-disk-space').slideUp('slow', function() { jQuery(this).remove(); }); } } else { if (jQuery('#updraft-navtab-backups-content .updraft-server-disk-space').length) { jQuery('#updraft-navtab-backups-content .updraft-server-disk-space').replaceWith(resp.web_server_disk_space); } else { jQuery('#updraft-navtab-backups-content .updraft-disk-space-actions').prepend(resp.web_server_disk_space); } } } update_backupnow_modal(resp); if (resp.hasOwnProperty('backupnow_file_entities')) { impossible_increment_entities = resp.backupnow_file_entities; } if (resp.n != null) { jQuery('#updraft-existing-backups-heading').html(resp.n); } if (resp.t != null) { if (resp.cksum != null) { if (resp.cksum == updraft_history_lastchecksum) { // Évitez d'actualiser inutilement le HTML si les données sont les mêmes. Cela permet d'éviter de réinitialiser le DOM (gênant lors du débogage) et de conserver les sélections de lignes de l'utilisateur. return; } updraft_history_lastchecksum = resp.cksum; } jQuery('#updraft-navtab-backups-content .updraft_existing_backups').html(resp.t); updraft_backups_selection.checkSelectionStatus(); if (resp.data) { console.log(resp.data); } } }); } /** * Cette fonction vérifiera si la réponse transmise contient du contenu pour la modale de sauvegarde maintenant qui doit être mise à jour sur la page * * @param {array} response - un tableau qui peut contenir du contenu backupnow_modal qui doit être mis à jour */ function update_backupnow_modal(response) { if (response.hasOwnProperty('modal_afterfileoptions')) { jQuery('.backupnow_modal_afterfileoptions').html(response.modal_afterfileoptions); } } /** * Exclure la mise à jour du champ de saisie masqué des entités * * @param {string} include_entity_name - nom de l'entité de sauvegarde */ function updraft_exclude_entity_update(include_entity_name) { var exclude_entities = []; jQuery('#updraft_include_'+include_entity_name+'_exclude_container .updraft_exclude_entity_wrapper .updraft_exclude_entity_field').each(function() { var data_val = jQuery(this).data('val').toString().trim(); if ('' != data_val) { exclude_entities.push(data_val); } }); jQuery('#updraft_include_'+include_entity_name+'_exclude').val(exclude_entities.join(',')); } /** * Vérifier l'unicité de la règle d'exclusion dans include_backup_file * * @param {string} exclude_rule - règle d'exclusion * @param {string} include_backup_file - le type de fichier de sauvegarde sur lequel exclude_rule sera appliqué * * @return {booléen} vrai si exclude_rule est unique sinon faux */ function updraft_is_unique_exclude_rule(exclude_rule, include_backup_file) { existing_exclude_rules_str = jQuery('#updraft_include_'+include_backup_file+'_exclude').val(); existing_exclude_rules = existing_exclude_rules_str.split(','); if (jQuery.inArray(exclude_rule, existing_exclude_rules) > -1) { alert(updraftlion.duplicate_exclude_rule_error_msg) return false; } else { return true; } } var updraft_interval_week_val = false; var updraft_interval_month_val = false; function updraft_intervals_monthly_or_not(selector_id, now_showing) { var selector = '#updraft-navtab-settings-content #'+selector_id; var current_length = jQuery(selector+' option').length; var is_monthly = ('mensuel' == now_showing) ? true : false; var existing_is_monthly = false; if (current_length > 10) { existing_is_monthly = true; } if (!is_monthly && !existing_is_monthly) { return; } if (is_monthly && existing_is_monthly) { if ('monthly' == now_showing) { // existing_is_monthly ne signifie pas la même chose que now_showing=='monthly'. existing_is_monthly fait référence à la liste déroulante, et non à son affichage. Nous devrons peut-être rajouter ces mots. '+updraftlion.jour+' ').après(' '+updraftlion.danslemois+' '); } return; } jQuery('.updraft_monthly_extra_words_'+selector_id).remove(); if (is_monthly) { // Enregistrer l'ancienne valeur updraft_interval_week_val = jQuery(selector+' option:selected').val(); jQuery(selector).html(updraftlion.mdayselector).before(''+updraftlion.jour+' ').après(' '+updraftlion.danslemois+' '); var select_mday = (updraft_interval_month_val === false) ? 1 : updraft_interval_month_val; // Convertir du jour du mois (ordinal) en index d'option (commence à 0) select_mday = select_mday - 1; jQuery(selector+" option").eq(select_mday).prop('selected', true); } else { // Enregistrer l'ancienne valeur updraft_interval_month_val = jQuery(selector+' option:selected').val(); jQuery(selector).html(updraftlion.dayselector); var select_day = (updraft_interval_week_val === false) ? 1 : updraft_interval_week_val; jQuery(selector+" option").eq(select_day).prop('selected', true); } } function updraft_check_same_times() { var dbmanual = 0; var file_interval = jQuery('#updraft-navtab-settings-content .updraft_interval').val(); if (file_interval == 'manual') { // jQuery('#updraft_files_timings').css('opacity', '0.25'); jQuery('#updraft-navtab-settings-content .updraft_files_timings').hide(); } else { // jQuery('#updraft_files_timings').css('opacity', 1); jQuery('#updraft-navtab-settings-content .updraft_files_timings').show(); } if ('weekly' == file_interval || 'fortnightly' == file_interval || 'monthly' == file_interval) { updraft_intervals_monthly_or_not('updraft_startday_files', file_interval); jQuery('#updraft-navtab-settings-content #updraft_startday_files').show(); } else { jQuery('.updraft_monthly_extra_words_updraft_startday_files').remove(); jQuery('#updraft-navtab-settings-content #updraft_startday_files').hide(); } var db_interval = jQuery('#updraft-navtab-settings-content .updraft_interval_database').val(); if (db_interval == 'manual') { dbmanual = 1; // jQuery('#updraft_db_timings').css('opacity', '0.25'); jQuery('#updraft-navtab-settings-content .updraft_db_timings').hide(); } if ('weekly' == db_interval || 'fortnightly' == db_interval || 'monthly' == db_interval) { updraft_intervals_monthly_or_not('updraft_startday_db', db_interval); jQuery('#updraft-navtab-settings-content #updraft_startday_db').show(); } else { jQuery('.updraft_monthly_extra_words_updraft_startday_db').remove(); jQuery('#updraft-navtab-settings-content #updraft_startday_db').hide(); } if (db_interval == file_interval) { // jQuery('#updraft_db_timings').css('opacity','0.25'); jQuery('#updraft-navtab-settings-content .updraft_db_timings').hide(); // jQuery('#updraft_same_schedules_message').show(); if (0 == dbmanual) { jQuery('#updraft-navtab-settings-content .updraft_same_schedules_message').show(); } else { jQuery('#updraft-navtab-settings-content .updraft_same_schedules_message').hide(); } } else { jQuery('#updraft-navtab-settings-content .updraft_same_schedules_message').hide(); if (0 == dbmanual) { // jQuery('#updraft_db_timings').css('opacity', '1'); jQuery('#updraft-navtab-settings-content .updraft_db_timings').show(); } } } // Visit the site in the background every 3.5 minutes - ensures that backups can progress if you've got the UD settings page open if ('undefined' !== typeof updraft_siteurl) { setInterval(function() { jQuery.get(updraft_siteurl+'/wp-cron.php');}, 210000); } function updraft_activejobs_delete(jobid) { updraft_aborted_jobs[jobid] = 1; jQuery('#updraft-jobid-'+jobid).closest('.updraft_row').addClass('deleting'); updraft_send_command('activejobs_delete', jobid, function(resp) { var job_row = jQuery('#updraft-jobid-'+jobid).closest('.updraft_row'); job_row.addClass('deleting'); if (resp.ok == 'Y') { jQuery('#updraft-jobid-'+jobid).html(resp.m); job_row.remove(); // inpage backup - Close modal if canceling backup if (jQuery('#updraft-backupnow-inpage-modal').dialog('isOpen')) jQuery('#updraft-backupnow-inpage-modal').dialog('close'); updraft_show_success_modal({ message: updraft_active_job_is_clone(jobid) ? '+updraftlion.calcul+''); updraft_send_command('get_fragment', { fragment: 'disk_usage', data: key }, function(response) { jQuery('#updraft_diskspaceused_'+key).html(response.output); }, { type: 'GET' }); } /** * Vérifie si le travail spécifié est un clone * * @param {string} job_id L'ID du travail * * @return {int} */ function updraft_active_job_is_clone(job_id) { return updraft_clone_jobs.filter(function(val) { return val == job_id; }).length; } /** * Ouvrir une fenêtre modale avec le contenu récupéré à partir d'une iframe * * @param {String} getwhat - le paramètre de sous-action à transmettre au gestionnaire AJAX d'UD * @param {String} title - le titre de la fenêtre modale */ function updraft_iframe_modal(getwhat, title) { var width = 780; var height = 500; jQuery('#updraft-iframe-modal-innards').html(''); jQuery('#updraft-iframe-modal').dialog({ titre: titre, resizeOnWindowResize: true, scrollWithViewport: true, resizeAccordingToViewport: true, useContentSize: false, ouvert: fonction(événement, interface utilisateur) { jQuery(this).dialog('option', 'largeur', largeur), jQuery(this).dialog('option', 'minHeight', 260); si (jQuery(fenêtre).height() > hauteur) { jQuery(this).dialog('option', 'hauteur', hauteur); } else { jQuery(this).dialog('option', 'hauteur', jQuery(fenêtre).height()-30); } } }).dialog('ouvrir'); } fonction updraft_html_modal(showwhat, titre, largeur, hauteur) { jQuery('#updraft-iframe-modal-innards').html(showwhat); var updraft_html_modal_buttons = {}; si (largeur < 450) { updraft_html_modal_buttons[updraftlion.close] = function() { jQuery(this).dialog("close"); }; } jQuery('#updraft-iframe-modal').dialog({ titre : titre, boutons : updraft_html_modal_buttons, resizeOnWindowResize : true, scrollWithViewport : true, resizeAccordingToViewport : true, useContentSize : false, open : function(événement, interface utilisateur) { jQuery(this).dialog('option', 'largeur', largeur), jQuery(this).dialog('option', 'minHeight', 260); if (jQuery(window).height() > height) { jQuery(this).dialog('option', 'height', height); } else { jQuery(this).dialog('option', 'height', jQuery(window).height()-30); } } }).dialog('open'); } fonction updraftplus_diskspace() { jQuery('#updraft-navtab-backups-content .updraft_diskspaceused').html(''+updraftlion.calcul+'updraft_send_command('get_fragment', { fragment: 'disk_usage', data: 'updraft' }, function(response) { jQuery('#updraft-navtab-backups-content .updraft_diskspaceused').html(response.output); }, { type: 'GET' }); } var lastlog_lastmessage = ""; function updraftplus_deletefromserver(timestamp, type, findex) { if (!findex) findex=0; var pdata = { stage: 'delete', timestamp: timestamp, type: type, findex: findex }; updraftplus_show_contents(timestamp, type, findex) { var modal_content = '

' + updraftlion.zip_fichier_contenu_info + ' -

'+updraftlion.browse_download_link+'
'; updraft_html_modal(modal_content, updraftlion.zip_file_contents, 780, 500); zip_files_jstree('zipbrowser', horodatage, type, findex); } /** * Crée le jstree et fait un appel au backend pour obtenir dynamiquement les nœuds de l'arbre * * @param {string} entity Entité pour le jstree * @param {integer} timestamp Horodatage du jstree * @param {string} type Type de fichier à afficher dans l'arbre JS * @param {array} findex Index du Zip */ function zip_files_jstree(entity, timestamp, type, findex) { jQuery('#updraft_zip_files_jstree').jstree({ "core": { "multiple": false, "data": function (nodeid, callback) { updraft_send_command('get_jstree_directory_nodes', {entity:entity, node:nodeid, timestamp:timestamp, type:type, findex:findex}, function(response) { if (response.hasOwnProperty('error')) { alert(response.error); } else { callback.call(this, response.nodes); } }, { error_callback: function(response, status, error_code, resp) { if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); jQuery('#updraft_zip_files_jstree').html('

'+resp.message_d'erreur_fatale+'

'); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: erreur: "+status+" ("+error_code+")"; jQuery('#updraft_zip_files_jstree').html('

'+message_d'erreur+'

'); console.log(error_message); alert(error_message); console.log(response); } } }); }, "error": function(error) { alert(error); console.log(error); }, }, "search": { "show_only_matches": true }, "plugins": ["search", "sort"], }); // Update modal title once tree loads jQuery('#updraft_zip_files_jstree').on('ready.jstree', function(e, data) { jQuery('#updraft-iframe-modal').dialog('option', 'title', updraftlion.zip_file_contents + ': ' + data.instance.get_node('#').children[0]) }); // Search function for jstree, this will hide nodes that don't match the search var timeout = false; jQuery('#zip_files_jstree_search').on('keyup', function () { if (timeout) { clearTimeout(timeout); } timeout = setTimeout(function () { var value = jQuery('#zip_files_jstree_search').val(); jQuery('#updraft_zip_files_jstree').jstree(true).search(value); }, 250); }); // Detect change on the tree and update the input that has been marked as editing jQuery('#updraft_zip_files_jstree').on("changed.jstree", function (e, data) { jQuery('#updraft_zip_path_text').text(data.node.li_attr.path); if (data.node.li_attr.size) { jQuery('#updraft_zip_size_text').text(data.node.li_attr.size); jQuery('#updraft_zip_download_item').show(); } else { jQuery('#updraft_zip_size_text').text(''); jQuery('#updraft_zip_download_item').hide(); } }); jQuery('#updraft_zip_download_item').on('click', function(event) { event.preventDefault(); var path = jQuery('#updraft_zip_path_text').text(); updraft_send_command('get_zipfile_download', {path:path, timestamp:timestamp, type:type, findex:findex}, function(response) { if (response.hasOwnProperty('error')) { alert(response.error); } else if (response.hasOwnProperty('path')) { location.href =ajaxurl+'?_wpnonce='+updraft_download_nonce+'×tamp='+timestamp+'&type='+type+'&stage=2&findex='+findex+'&filepath='+response.path+'&action=updraft_download_backup'; } else { alert(updraftlion.download_timeout); } }, { error_callback: function(response, status, error_code, resp) { if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: error: "+status+" ("+error_code+")"; console.log(error_message); alert(error_message); console.log(response); } } }); }); } /** * This function will clean up the updraft downloader UI * * @param {object} item - the object pressed in the UI * @param {string} what - the file entity */ function remove_updraft_downloader(item, what) { jQuery(item).closest('.updraftplus_downloader').fadeOut().remove(); if (0 == jQuery('.updraftplus_downloader_container_'+what+' .updraftplus_downloader').length) jQuery('.updraftplus_downloader_container_'+what).remove(); } /** * This function will prepare the downloader UI and kick of the request to download the file entities. * * @param {string} base - la chaîne de base pour l'ID * @param {integer} backup_timestamp - l'horodatage de sauvegarde * @param {string} what - l'entité du fichier * @param {string} whicharea - la zone à laquelle nous voulons ajouter le téléchargeur * @param {string} set_contents - le contenu que nous voulons télécharger * @param {string} prettydate - la jolie date de sauvegarde * @param {boolean} async - booléen pour indiquer s'il s'agit d'une requête asynchrone ou non */ function updraft_downloader(base, backup_timestamp, what, whicharea, set_contents, prettydate, async) { if (typeof set_contents !== "string") set_contents = set_contents.toString(); jQuery('.ud_downloadstatus').show(); var set_contents = set_contents.split(','); var prdate = (prettydate) ?
'); jQuery('.updraftplus_downloader_container_' + quoi).append('' + updraftlion.download + ' ' + quoi + ' (' + prdate + '):'); } for (var i = 0; i < set_contents.length; i++) { // Créer un endroit pour que le statut soit trouvé var stid = base+backup_timestamp+'_'+what+'_'+set_contents[i]; var stid_selector = '.'+stid; var show_index = parseInt(set_contents[i]); show_index++; var itext = (0 == set_contents[i]) ? '' : ' ('+show_index+')'; if (!jQuery(stid_selector).length) { jQuery('.updraftplus_downloader_container_'+what).append('
'+quoi+itexte+':
'+updraftlion.commencé à chercher+'
'); jQuery(stid_selector).data('downloaderfor', { base: base, nonce: backup_timestamp, what: what, index: set_contents[i] }); setTimeout(function() { updraft_activejobs_update(true); }, 1500); } jQuery(stid_selector).data('lasttimebegan', (new Date).getTime()); } // Envoyez maintenant la requête réelle pour tout lancer async = async ? true : false; var data = { type: what, timestamp: backup_timestamp, findex: set_contents }; var options = { action: 'updraft_download_backup', nonce_key: '_wpnonce', nonce: nonce, timeout: 10000, async: async } updraft_send_command('updraft_download_backup', data, null, options); // Nous ne voulons pas que le formulaire soit soumis car cela remplace le document return false; } /** * Analyser la chaîne JSON, y compris la détection automatique des entrées supplémentaires indésirables et leur ignorance * * @param {string} json_mix_str - Chaîne JSON qui doit être analysée et convertie en objet * @param {boolean} analyse - si vrai, alors le format de retour contiendra des informations sur l'analyse, et l'analyse ignorera la tentative de JSON.parse() la chaîne entière (commencera par essayer de localiser le JSON réel) * * @throws SyntaxError|String (y compris la transmission de ce que JSON.parse peut générer) si une erreur d'analyse se produit. * * @returns Objet JSON analysé mixte. Ne renverra que si l'analyse est réussie (sinon, lèvera). Si analyse est vrai, alors renverra plutôt un objet avec les propriétés (mixed)parsed, (integer)json_start_pos et (integer)json_end_pos */ function ud_parse_json(json_mix_str, analyse) { analyse = ('undefined' === typeof analyse) ? false : true; // Essayez-le simplement - ie le cas « par défaut » où les choses fonctionnent (qui peut inclure des espaces supplémentaires/sauts de ligne et des chaînes simples, etc.). if (!analyse) { try { var result = JSON.parse(json_mix_str); return result; } catch (e) { console.log('UpdraftPlus: Exception lors de la tentative d'analyse de JSON (1) - tentera de corriger/réanalyser en fonction des première/dernière accolades'); console.log(json_mix_str); } } var json_start_pos = json_mix_str.indexOf('{'); var json_last_pos = json_mix_str.lastIndexOf('}'); // Cas où une notice php peut être ajoutée après ou avant la chaîne json if (json_start_pos > -1 && json_last_pos > -1) { var json_str = json_mix_str.slice(json_start_pos, json_last_pos + 1); try { var parsed = JSON.parse(json_str); si (!analyse) { console.log('UpdraftPlus : réanalyse JSON réussie'); } renvoie analyse ? { parsed: parsed, json_start_pos: json_start_pos, json_last_pos: json_last_pos + 1 } : parsed; } catch (e) { console.log('UpdraftPlus: Exception lors de la tentative d'analyse de JSON (2) - tentera de corriger/réanalyser en fonction du comptage des crochets'); var cursor = json_start_pos; var open_count = 0; var last_character = ''; var inside_string = false; // Ne confondez pas cela avec un véritable analyseur JSON. Son objectif est d’améliorer les chances dans les cas réels observés, et non d’arriver à une perfection universelle. while ((open_count > 0 || curseur == json_start_pos) && curseur <= json_last_pos) { var current_character = json_mix_str.charAt(curseur); if (!inside_string && '{' == current_character) { open_count++; } else if (!inside_string && '}' == current_character) { open_count--; } else if ('"' == current_character && '\\' != last_character) { inside_string = inside_string ? false : true; } last_character = current_character; cursor++; } console.log("Commencé à cursor="+json_start_pos+", terminé à cursor="+cursor+" avec le résultat suivant :"); console.log(json_mix_str.substring(json_start_pos, cursor)); try { var parsed = JSON.parse(json_mix_str.substring(json_start_pos, cursor)); console.log('UpdraftPlus : réanalyse JSON réussie'); return analyse ? { parsed: parsed, json_start_pos: json_start_pos, json_last_pos: cursor } : parsed; } catch (e) { // Relancez-le pour que notre fonction fonctionne exactement comme JSON.parse() dans son comportement. throw e; } } } throw "UpdraftPlus : impossible d'analyser le JSON "; } // Intercepter les erreurs HTTP si la vérification de l'état de téléchargement les renvoie jQuery(document).ajaxError(function(event, jqxhr, settings, exception) { if (exception == null || exception == '') return; if (jqxhr.responseText == null || jqxhr.responseText == '') return; console.log("Erreur détectée par le gestionnaire ajaxError d'UpdraftPlus (suit) pour "+settings.url); console.log(exception); if (settings.url.search(ajaxurl) == 0) { // TODO subaction=downloadstatus n'est plus utilisé. Cela devrait être ajusté à la configuration actuelle. si (settings.url.search('subaction=downloadstatus') >= 0) { var horodatage = settings.url.match(/timestamp=\d+/); var type = settings.url.match(/type=[az]+/); var findex = settings.url.match(/findex=\d+/); var base = settings.url.match(/base=[a-z_]+/); findex = (findex instanceof Array) ? parseInt(findex[0].substr(7)) : 0; type = (type instanceof Array) ? type[0].substr(5) : ''; base = (instance de base du tableau) ? base[0].substr(5) : ''; horodatage = (instance d'horodatage du tableau) ? '+erreur de déviation vers le haut+' '+updraftlion.servererrorcode); } } else if (settings.url.search('subaction=restore_alldownloaded') >= 0) { // var horodatage = settings.url.match(/timestamp=\d+/); jQuery('#updraft-restore-modal-stage2a').append('
'+erreur de déviation vers le haut+' '+updraftlion.servererrorcode+': '+exception); } } }); function updraft_restorer_checkstage2(doalert) { // Combien en reste-t-il ? var stilldownloading = jQuery('#ud_downloadstatus2 .file').length; if (stilldownloading > 0) { if (doalert) { alert(updraftlion.stilldownloading); } return; } // Autoriser l'appui sur « Restaurer » pour continuer jQuery('.updraft-restore--next-step').prop('disabled', true); jQuery('#updraft-restore-modal-stage2a').html(' '+updraftlion.préparation_des_fichiers_de_sauvegarde); updraft_send_command('restore_alldownloaded', { horodatage : jQuery('#updraft_restore_timestamp').val(), options de restauration : jQuery('#updraft_restore_form').serialize() }, fonction(resp, statut, données) { var info = null; jQuery('#updraft_restorer_restore_options').val(''); jQuery('.updraft-restore--next-step').prop('désactivé', false); essayer { // var resp = ud_parse_json(données); si (null == resp) { jQuery('#updraft-restore-modal-stage2a').html(updraftlion.emptyresponse); retour; } var rapport = resp.m; si (resp.w != '') { rapport = rapport + '

' + avertissements de courant ascendant +'

' + resp.w + '
'; } si (resp.e != '') { rapport = rapport + '

' + updraftlion.erreurs + '

' + resp.e + '
'; } else { updraft_restore_stage = 3; } if (resp.hasOwnProperty('i')) { // Stocker les informations renvoyées par l'analyse de sauvegarde try { info = ud_parse_json(resp.i); // if (info.hasOwnProperty('multisite') && info.multisite && info.hasOwnProperty('same_url') && info.same_url) { if (info.hasOwnProperty('addui')) { console.log("D'autres options d'interface utilisateur sont affichées"); var addui = info.addui; report += '
'+addui+'
'; if (typeof JSON == 'object' && typeof JSON.stringify == 'function') { // Si possible, supprimez les informations stockées pour éviter de renvoyer de grandes quantités de données indésirables. delete info.addui; resp.i = JSON.stringify(info); } } if (info.hasOwnProperty('php_max_input_vars')) { php_max_input_vars = parseInt(info.php_max_input_vars); } if (info.hasOwnProperty('skipped_db_scan')) { skipped_db_scan = parseInt(info.skipped_db_scan); } } catch (err) { console.log(err); console.log(resp); } jQuery('#updraft_restorer_backup_info').val(resp.i); } else { jQuery('#updraft_restorer_backup_info').val(); } jQuery('#updraft-restore-modal-stage2a').html(rapport); jQuery('.updraft-restore--next-step').text(updraftlion.restore); if (jQuery('#updraft-restore-modal-stage2a .updraft_select2').length > 0) { jQuery('#updraft-restore-modal-stage2a .updraft_select2').select2(); } } catch (err) { console.log(données); console.log(err); jQuery('#updraft-restore-modal-stage2a').text(updraftlion.jsonnotunderstood+' '+updraftlion.errordata+": "+données).html(); } }, { error_callback: function(response, status, error_code, resp) { if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); jQuery('#updraft-restore-modal-stage2a').html('

'+resp.message_d'erreur_fatale+'

'); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: erreur: "+status+" ("+error_code+")"; jQuery('#updraft-restore-modal-stage2a').html('

'+message_d'erreur+'

'); console.log(error_message); alert(error_message); console.log(response); } } }); } function updraft_downloader_status(base, nonce, what, findex) { // Court-circuit. Voir les versions précédentes pour l'ancien code. return; } function updraft_downloader_status_update(download_status, response_raw) { var cancel_repeat = 0; jQuery(download_status).each(function (x, dstatus) { si (dstatus.base == '') return; var stid = dstatus.base + dstatus.timestamp + '_' + dstatus.what + '_' + dstatus.findex; var stid_selector = '.' + stid; si (dstatus.e != null) { jQuery(stid_selector + ' .raw').html('' + erreur de courant ascendant + ' ' + dstatus.e); console.log(dstatus); } else if (dstatus.p != null) { jQuery(stid_selector + '_st .dlfileprogress').width(dstatus.p + '%'); // jQuery(stid_selector+'_st .dlsofar').html(Math.round(dstatus.s/1024)); // jQuery(stid_selector+'_st .dlsize').html(Math.round(dstatus.t/1024)); // Un redémarrage est-il approprié ? // dstatus.a, s'il est défini, indique que a) le téléchargement est incomplet et b) la valeur est le nombre de secondes depuis la dernière modification du fichier... if (dstatus.a != null && dstatus.a > 0) { var timenow = (new Date).getTime(); // Rappelez-vous que c'est en millisecondes var sincelastrestart = timenow - lasttimebegan; if (dstatus.a > 90 && sincelastrestart > 60000) { console.log(dstatus.timestamp + " " + dstatus.what + " " + dstatus.findex + ": redémarrage du téléchargement: file_age=" + dstatus.a + ", sincelastrestart_ms=" + sincelastrestart); jQuery(stid_selector).data('lasttimebegan', (new Date).getTime()); var $original_button = jQuery('#updraft-navtab-backups-content .uddownloadform_' + dstatus.what + '_' + dstatus.timestamp + '_' + dstatus.findex); var données = { type : dstatus.quoi, horodatage : dstatus.horodatage, findex : dstatus.findex }; var options = { action : 'updraft_download_backup', nonce_key : '_wpnonce', nonce : $original_button.data('wp_nonce').toString(), délai d'attente : 10000 }; updraft_send_command('updraft_download_backup', données, null, options); jQuery(stid_selector).data('lasttimebegan', (new Date).getTime()); } } si (dstatus.m != null) { si (dstatus.p >= 100 && 'udrestoredlstatus_' == dstatus.base) { jQuery(stid_selector + ' .raw').html(dstatus.m); jQuery(stid_selector).fadeOut('slow', function () { remove_updraft_downloader(this, dstatus.what); updraft_restorer_checkstage2(0); }); } else if (dstatus.p >= 100 && dstatus.base == 'udclonedlstatus_') { jQuery(stid_selector + ' .raw').html(dstatus.m); jQuery(stid_selector).fadeOut('slow', function () { remove_updraft_downloader(this, dstatus.what); }); } else if (dstatus.p < 100 || dstatus.base != 'uddlstatus_') { jQuery(stid_selector + ' .raw').html(dstatus.m); } else { var file_ready_actions = updraftlion.fileready + ' ' + '(taille: ' + convert_numeric_size_to_text(dstatus.s) + '). ' + updraftlion.actions + ':\ \ '; si (dstatus.hasOwnProperty('can_show_contents') && dstatus.can_show_contents) { file_ready_actions += ' '; } jQuery(stid_selector + ' .raw').html(file_ready_actions); jQuery(stid_selector + '_st').remove(); } } // dlstatus_lastlog = response_raw; } else if (dstatus.m != null) { jQuery(stid_selector + ' .raw').html(dstatus.m); } else { jQuery(stid_selector + ' .raw').html(updraftlion.jsonnotunderstood + ' (' + response_raw + ')'); cancel_repeat = 1; } }); return cancel_repeat; } /** * Convertit un nombre d'octets en une valeur d'unité textuelle appropriée * * @param {long} octets * @returns chaîne */ function convert_numeric_size_to_text(octets) { if (1024 > octets) { return octets + " b"; } else if (1024 * 1024 > octets) { return (octets / 1024).toFixed(2) + " Ko"; } else if (1024 * 1024 * 1024 > octets ) { return (octets / (1024 * 1024)).toFixed(2) + " Mo"; } else { return (octets / (1024 * 1024 * 1024)).toFixed(2) + " Go"; } } /** * Fonction qui configure un appel ajax pour démarrer une sauvegarde * * @param {Integer} backupnow_nodb Indique si la base de données doit être sauvegardée : les valeurs valides sont 0, 1 * @param {Integer} backupnow_nofiles Indique si des fichiers doivent être sauvegardés : les valeurs valides sont 0, 1 * @param {Integer} backupnow_nocloud Indique si la sauvegarde doit être téléchargée vers le stockage cloud : les valeurs valides sont 0, 1 * @param {String} onlythesefileentities Une liste csv d'entités de fichier à sauvegarder * @param {String} onlythesetableentities Une liste csv d'entités de table à sauvegarder * @param {Array} extradata toutes les données supplémentaires à ajouter * @param {String} label Une étiquette facultative à ajouter à une sauvegarde * @param {String} only_these_cloud_services Un tableau d'emplacements de stockage distants à sauvegarder */ function updraft_backupnow_go(backupnow_nodb, backupnow_nofiles, backupnow_nocloud, onlythesefileentities, extradata, label, onlythesetableentities, only_these_cloud_services) { var params = { backupnow_nodb: backupnow_nodb, backupnow_nofiles: backupnow_nofiles, backupnow_nocloud: backupnow_nocloud, backupnow_label: label, extradata: extradata }; if ('' != onlythesefileentities) { params.onlythisfileentity = onlythesefileentities; } if ('' != onlythesetableentities) { params.onlythesetableentities = onlythesetableentities; } if ('' != only_these_cloud_services) { params.only_these_cloud_services = only_these_cloud_services; } params.always_keep = (typeof extradata.always_keep !== 'undefined') ? extradata.always_keep : 0 ; supprimer extradata.always_keep ; params.incremental = (typeof extradata.incremental !== 'undefined') ? extradata.incremental : 0 ; supprimer extradata.incremental ; params.db_anon_all = (typeof extradata.db_anon !== 'undefined' && typeof extradata.db_anon.all !== 'undefined') ? extradata.db_anon.all : 0; params.db_anon_non_staff = (typeof extradata.db_anon !== 'undefined' && typeof extradata.db_anon.non_staff !== 'undefined') ? extradata.db_anon.non_staff : 0; params.db_anon_wc_orders = (typeof extradata.db_anon !== 'undefined' && typeof extradata.db_anon.wc_orders !== 'undefined') ?
').html('updraft_activejobslist_backupnownonce_only = 3000; updraft_send_command('backupnow', params, function(resp) { if (resp.hasOwnProperty('error')) { jQuery('.updraft_requeststart').remove(); alert(resp.error); return; } jQuery('#updraft_backup_started').html(resp.m); if (resp.hasOwnProperty('nonce')) { // Impossible de le renvoyer à partir de ce contexte updraft_backupnow_nonce = resp.nonce; console.log("UpdraftPlus : ID de la tâche démarrée : "+updraft_backupnow_nonce); } setTimeout(function() { updraft_activejobs_update(true);}, 75000); }); } jQuery(function($) { // actionné lorsque l'intégration de la commande est terminée $(document).on('udp/checkout/done', function(e, data) { if (data.hasOwnProperty('product') && 'updraftpremium' === data.product && 'complete' === data.status) { $('.premium-upgrade-purchase-success').show(); $('.updraft_feat_table').closest('section').hide(); $('.updraft_premium_cta__action').hide(); } }); // Paramètres avancés nouveaux écouteurs de bouton de menu $('.expertmode .advanced_settings_container .advanced_tools_button').on('click', function() { advanced_tool_hide($(this).attr("id")); }); function $('.expertmode .advanced_settings_container .advanced_tools:not(".'+show_tool+'")').hide(); $('.expertmode .advanced_settings_container .advanced_tools.'+show_tool).fadeIn('slow'); $('.expertmode .advanced_settings_container .advanced_tools_button:not(#'+show_tool+')').removeClass('active'); $('.expertmode .advanced_settings_container .advanced_tools_button#'+show_tool).addClass('active'); } // https://github.com/select2/select2/issues/1246#issuecomment-71710835 if (jQuery.ui && jQuery.ui.dialog && jQuery.ui.dialog.prototype._allowInteraction) { var ui_dialog_interaction = jQuery.ui.dialog.prototype._allowInteraction; jQuery.ui.dialog.prototype._allowInteraction = function(e) { if (jQuery(e.target).closest('.select2-dropdown').length) return true; return ui_dialog_interaction.apply(this, arguments); }; } // Update WebDAV URL as user edits $('#updraft-navtab-settings-content #remote-storage-holder').on('change keyup paste', '.updraft_webdav_settings', function() { var attr_id = $(this).attr('id'); if ('string' !== typeof attr_id) return; var parsed_attr_id = attr_id.match(/updraft_webdav_(.+)_(s-[^_]+)$/i); if (!parsed_attr_id || !parsed_attr_id[1] || !parsed_attr_id[2]) return; var instance_id = parsed_attr_id[2], webdav_input = parsed_attr_id[1].toLowerCase(), masked_password = ''; if ('host' === webdav_input) { $('.webdav-'+instance_id+' .updraft_webdav_host_error').hide(); if ($(this).val().indexOf("@") >= 0) { $(this).val($(this).val().replaceAll('@', encodeURIComponent('@'))); } else if ($(this).val().indexOf("/") >= 0) { $(this).val($(this).val().replaceAll('/', '')); $('.webdav-'+instance_id+' .updraft_webdav_host_error').show(); } } else if ('path' === webdav_input && 0 == $(this).val().indexOf('/')) { $(this).val($(this).val().replace(/^[\/]+/, '')); } var webdav = $('#updraft_webdav_webdav_' + instance_id).val(), host = $('#updraft_webdav_host_' + instance_id).val() || '', user = $('#updraft_webdav_user_' + instance_id).val() || '', password = $('#updraft_webdav_pass_' + instance_id).val() || '', port = $('#updraft_webdav_port_' + instance_id).val() || '', path = $('#updraft_webdav_path_' + instance_id).val() || ''; if (password) { masked_password = password.replace(/./gi,'*'); } if (user && password) { user += ':'; } if ((user || password) && host) { masked_password += '@'; password += '@'; } if (host && port) { host += ':'; } if (path) { path = '/' + path; } $('#updraft_webdav_url_' + instance_id).val(webdav + user + password + host + port + path); $('#updraft_webdav_masked_url_' + instance_id).val(webdav + user + masked_password + host + port + path); }); $('div.ud-phpseclib-notice').on('click', 'button.notice-dismiss', function (event) { event.stopImmediatePropagation(); updraft_send_command('dismiss_phpseclib_notice', null, function(resp, status, response) { if (!resp.hasOwnProperty('success') || 1 !== resp.success) { console.log(resp); alert(updraftlion.unexpectedresponse+' '+response); } }); }); // Delete button $('#updraft-navtab-backups-content').on('click', '.js--delete-selected-backups', function(e) { e.preventDefault(); updraft_deleteallselected(); }); $('#updraft-navtab-backups-content').on('click', '.updraft_existing_backups .backup-select input', function(e) { // e.preventDefault(); updraft_backups_selection.toggle($(this).closest('.updraft_existing_backups_row')); }); $('#updraft-navtab-backups-content').on('click', '#cb-select-all', function(e) { if ($(this).is(':checked')) { updraft_backups_selection.selectAll(); } else { updraft_backups_selection.deselectAll(); } }); $('#updraft-wrap').on('click', '[id^=updraftplus_manual_authorisation_submit_]', function(e) { e.preventDefault(); var method = $(this).data('method'); var auth_data = $('#updraftplus_manual_authentication_data_'+method).val(); $('#updraftplus_manual_authentication_error_'+method).text(); $('#updraft-wrap #updraftplus_manual_authorisation_template_'+method+' .updraftplus_spinner.spinner').addClass('visible'); $('#updraftplus_manual_authorisation_submit_'+method).prop('disabled', true); manual_remote_storage_auth(method, auth_data); }); /** * This method will send the ajax request to manually authenticate the remote storage method and then update the page with the response * * @param {string} method - the remote storage method * @param {string} auth_data - the auth data as a base64 json encoded string */ function manual_remote_storage_auth(method, auth_data) { updraft_send_command('manual_remote_storage_authentication', {method: method, auth_data: auth_data}, function(response) { $('#updraft-wrap #updraftplus_manual_authorisation_template_'+method+' .updraftplus_spinner.spinner').removeClass('visible'); if (response.hasOwnProperty('result') && 'success' === response.result) { $('#updraft-wrap .updraftplus-top-menu').before(response.data); $('#updraft-wrap #updraftplus_manual_authorisation_template_'+method).parent().remove(); $('#updraft-wrap .updraft_authenticate_'+method).remove(); } else if (response.hasOwnProperty('result') && 'error' === response.result) { $('#updraftplus_manual_authentication_error_'+method).text(response.data); $('#updraftplus_manual_authorisation_submit_'+method).prop('disabled', false); } }); } $('#updraft-navtab-backups-content').on('click', '.js--select-all-backups', function(e) { updraft_backups_selection.selectAll(); }); $('#updraft-navtab-backups-content').on('click', '.js--deselect-all-backups', function(e) { updraft_backups_selection.deselectAll(); }); $('#updraft-navtab-backups-content').on('click', '.updraft_existing_backups .updraft_existing_backups_row', function(e) { if (!e.ctrlKey && !e.metaKey) return; if (e.shiftKey) { // it's multiple range selection, it requires the user to hold shift+ctrl buttons during the range selection, the initial and the new starting index is saved in firstMultipleSelectionIndex variable if ("undefined" == typeof updraft_backups_selection.firstMultipleSelectionIndex) { // if all the above conditions are fulfilled then we need to set up the keyup event handler only for range selection operation. .com/js/key.html $(document).on('keyup.MultipleSelection', function(e) { // l'opération de sélection de plage multiple nécessite que l'utilisateur maintienne les boutons ctrl/cmd + shift en permanence pendant les sélections, l'opération de sélection de plage sera annulée si l'utilisateur relâche l'un des boutons maintenus (shitf ou ctrl/cmd) et si cela se produit, le mode de surbrillance cessera de fonctionner updraft_backups_selection.unregister_highlight_mode(); // une fois que ce gestionnaire d'événements a été déclenché et que le mode de surbrillance a été désactivé, ce gestionnaire d'événements doit être supprimé en utilisant son espace de noms .MultipleSelection $(document).off('.MultipleSelection'); }); updraft_backups_selection.select(this); $(this).addClass('range-selection-start'); updraft_backups_selection.register_highlight_mode(); } else { updraft_backups_selection.selectAllInBetween(this); jQuery('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row').removeClass('range-selection'); } // définir le nouvel index de départ sur l'index de plage de fin updraft_backups_selection.firstMultipleSelectionIndex = this.rowIndex - 1; } else { updraft_backups_selection.toggle(this); } }); updraft_backups_selection.checkSelectionStatus(); $('#updraft-navtab-addons-content .wrap').on('click', '.updraftplus_com_login .ud_connectsubmit', function (e) { e.preventDefault(); var email = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_email').val(); var password = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_password').val(); var auto_update = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_updates').is(':checked') ? 1: 0; var auto_udc_connect = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_udc_connect').is(':checked') ? 1 : 0 ; var options = { email : e-mail, mot de passe : mot de passe, mise à jour automatique : mise à jour automatique, connexion_udc_auto : connexion_udc_auto }; updraftplus_com_login.submit(options); }); $('#updraft-navtab-addons-content .wrap').on('keydown', '.updraftplus_com_login input', function (e) { if (13 == e. which) { e. preventDefault(); var email = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_email').val(); var password = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_password').val(); var auto_update = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_updates').is(':checked') ? 1: 0; var auto_udc_connect = $('#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_udc_connect').is(':checked') ? 1: 0; var options = { email: email, mot de passe: mot de passe, mise_à_jour_automatique: mise_à_jour_automatique, connexion_udc_automatique: connexion_udc_automatique }; updraftplus_com_login.submit(options); } }); $('#updraft-navtab-migrate-content').on('click', '.updraftclone_show_step_1', function (e) { $('.updraftplus-clone').addClass('opened'); $('.updraftclone_show_step_1').hide(); $('.updraft_migrate_widget_temporary_clone_stage1').show(); $('.updraft_migrate_widget_temporary_clone_stage0').hide(); }); $('#updraft-navtab-migrate-content').on('click', '.updraft_migrate_widget_temporary_clone_show_stage0', function(e) { e.preventDefault(); $('.updraft_migrate_widget_temporary_clone_stage0').toggle(); }); // Configuration du premier onglet setup_migrate_tabs(); // masquer la section en cliquant sur le bouton de fermeture $('#updraft-navtab-migrate-content').on('click', '.updraft_migrate_widget_module_content .close', function (e) { $('.updraft_migrate_intro').show(); $(this).closest('.updraft_migrate_widget_module_content').hide(); }); $('#updraft-navtab-migrate-content').on('click', '#updraft_migrate_tab_alt .close', function (e) { e.preventDefault(); $('.updraft_migrate_intro').show(); $('#updraft_migrate_tab_alt').html('').hide(); }); // Migrer afficher le bouton Ajouter un site $('#updraft-navtab-migrate-content').on('click', '.updraft_migrate_add_site--trigger', function (e) { e.preventDefault(); $('.updraft_migrate_add_site').toggle(); }); $('#updraft-navtab-migrate-content').on('click', '.updraft_migrate_widget_module_content .updraftplus_com_login .ud_connectsubmit', function (e) { e.preventDefault(); var email = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_email').val(); var password = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_password').val(); var tfa = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #options_de_clonage_temporaire_code_à_deux_facteurs').val(); var consentement = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .conditions_générales_du_clonage_temporaire').is(':checked') ? ' + erreur de courant ascendant + ' ' + updraftlion.nom_utilisateur_mot_de_passe_required).show(); } else { temporary_clone_submit(options); } }); $('#updraft-navtab-migrate-content').on('keydown', '.updraft_migrate_widget_module_content .updraftplus_com_login input', function (e) { if (13 == e. which) { e. preventDefault(); var email = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_email').val(); var password = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_password').val(); var tfa = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code').val(); var consent = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .temporary_clone_terms_and_conditions').is(':checked') ? 1 : 0; var options = { form_data: { email: email, password: password, two_factor_code: tfa, consent: consent } }; if (!email || !password) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status').html('' + erreur de courant ascendant + ' ' + updraftlion.nom_utilisateur_mot_de_passe_required).show(); } else { temporary_clone_submit(options); } } }); $('#updraft-navtab-migrate-content').on('click', '.updraft_migrate_widget_module_content .updraftplus_com_key .ud_key_connectsubmit', function (e) { e.preventDefault(); var clone_key = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key #temporary_clone_options_key').val(); var consentement = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .temporary_clone_terms_and_conditions').is(':checked') ? 1 : 0; var options = { form_data: { clone_key: clone_key, consentement: consentement } }; si (!clone_key) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status').html('' + erreur de courant ascendant + ' ' + updraftlion.clone_key_required).show(); } else { temporary_clone_key_submit(options); } }); $('#updraft-navtab-migrate-content').on('keydown', '.updraft_migrate_widget_module_content .updraftplus_com_key input', function (e) { if (13 == e. which) { e. preventDefault(); var clone_key = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key #temporary_clone_options_key').val(); var consentement = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .temporary_clone_terms_and_conditions').is(':checked') ? 1 : 0; var options = { form_data: { clone_key: clone_key, consentement : consentement } }; si (!clone_key) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status').html('' + erreur de courant ascendant + ' ' + updraftlion.clone_key_required).show(); } else { temporary_clone_key_submit(options); } } }); $('#updraft-navtab-migrate-content').on('change', '.updraft_migrate_widget_module_content #updraftplus_clone_php_options', function () { var php_version = $(this).data('php_version'); var selected_version = $(this).val(); if (selected_version < php_version) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html(updraftlion.clone_version_warning); } else { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html(''); } }); $('#updraft-navtab-migrate-content').on('change', '.updraft_migrate_widget_module_content #updraftplus_clone_wp_options', function () { var wp_version = $(this).data('wp_version'); var selected_version = $(this).val(); if (selected_version < wp_version) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html(updraftlion.clone_version_warning); } else { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html(''); } }); $('#updraft-navtab-migrate-content').on('change', '.updraft_migrate_widget_module_content #updraftplus_clone_backup_options', function() { // reset the package list $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options > option').each(function() { var value = $(this).val(); if ('starter' == value) $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+value+'"]').prop('selected', true); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+value+'"]').prop("disabled", false); }); var clone_backup_select = $(this).find('option:selected'); if ('current' == $(clone_backup_select).data('nonce') || 'wp_only' == $(clone_backup_select).data('nonce')) return; var total_size = $(clone_backup_select).data('size'); // Disable packages that are to small for this backup set, then set the first available package as the selected option $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options > option').each(function() { var size = $(this).data('size'); var value = $(this).val(); if (total_size >= size) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+value+'"]').prop("disabled", true); } else { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+value+'"]').prop('selected', true); return false; } }); }); $('#updraft-navtab-migrate-content').on('click', '.updraft_migrate_widget_module_content #updraft_migrate_createclone', function (e) { e.preventDefault(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone').prop('disabled', true); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html(''); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner').addClass('visible'); var clone_id = $(this).data('clone_id'); var secret_token = $(this).data('secret_token'); var php_version = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_php_options').val(); var wp_version = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_wp_options').val(); var region = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_region_options').val(); var package = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options').val(); var updraftclone_branch = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_updraftclone_branch').val(); var updraftplus_branch = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_updraftplus_branch').val(); var admin_only = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_admin_login_options').is(':checked'); var use_queue = $('#updraftplus_clone_use_queue').is(':checked') ? 1 : 0 ; var db_anon_all = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_all').is(':checked') ? 1 : 0 ; var db_anon_non_staff = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_non_staff').is(':checked') ? 1 : 0 ; var db_anon_wc_orders = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_wc_order_data').is(':checked') ? 1 : 0 ; var backup_nonce = 'current' ; var backup_timestamp = 'current' ; var clone_backup_select_length = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backup_options').length ; var clone_backup_select = $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backup_options').find('option:selected'); if (0 !== clone_backup_select_length && 'undefined' !== typeof clone_backup_select) { backup_nonce = clone_backup_select.data('nonce'); backup_timestamp = clone_backup_select.data('timestamp'); } var options = { form_data: { clone_id: clone_id, secret_token: secret_token, install_info: { php_version: php_version, wp_version: wp_version, region: region, package: package, admin_only: admin_only, updraftclone_branch: ('undefined' === typeof updraftclone_branch) ? '' : updraftclone_branch, updraftplus_branch : ('undefined' === typeof updraftplus_branch) ? '' : updraftplus_branch, use_queue : ('undefined' === typeof use_queue) ? 1 : use_queue } } }; var backup_options = { db_anon_all: db_anon_all, db_anon_non_staff: db_anon_non_staff, db_anon_wc_orders: db_anon_wc_orders, clone_region: region } if ('wp_only' === backup_nonce) { options['form_data']['install_info']['wp_only'] = 1; } temporary_clone_process_create(options, backup_timestamp, backup_nonce, backup_options); }); // Créer un objet updraftplus_com_login, pour stocker des fonctions et des variables var updraftplus_com_login = {}; updraftplus_com_login.set_status = function(status) { $('#updraft-navtab-addons-content .wrap').find('.updraftplus_spinner.spinner').text(status); } updraftplus_com_login.show_loader = function() { $('#updraft-navtab-addons-content .wrap').find('.updraftplus_spinner.spinner').addClass('visible'); $('#updraft-navtab-addons-content .wrap').find('.ud_connectsubmit').prop('désactivé', 'désactivé'); } updraftplus_com_login.hide_loader = function() { $('#updraft-navtab-addons-content .wrap').find('.updraftplus_spinner.spinner').removeClass('visible').text(updraftlion.processing); $('#updraft-navtab-addons-content .wrap').find('.ud_connectsubmit').prop('disabled', false); } /* Cette fonction enverra une requête AJAX au backend pour vérifier les informations d'identification des utilisateurs, puis elle informera l'utilisateur de toute erreur ou s'il n'y en a pas, elle soumettra le formulaire. @param {array} options - un tableau qui inclut l'e-mail et le mot de passe des utilisateurs */ updraftplus_com_login.submit = function(options) { $('#updraft-navtab-addons-content .wrap .updraftplus_com_login_status').html('').hide(); if (this.stage) { switch (this.stage) { case 'connect_udc': case 'connect_udc_TFA': // mettre à jour les données dans l'objet var email = $('#updraftplus-addons_options_email').val(); var password = $('#updraftplus-addons_options_password').val(); this.login_data.email = email; this.login_data.password = password; // reconnectez_udc this.connect_udc(); break; case 'create_key': this.create_key(); break; default: this.stage = null; updraftplus_com_login.submit(); break; } return; } this.set_status(updraftlion.connecting); this.show_loader(); updraft_send_command('updraftplus_com_login_submit', { data: options, }, function (response) { if (response.hasOwnProperty('success')) { // la connexion a réussi, créez donc une clé si la case à cocher a été cochée. if ($('#updraftplus-addons_options_auto_udc_connect').is(':checked')) { this.login_data = { email: options.email, password: options.password, i_consent: 1, two_factor_code: '' }; // CRÉER LA CLÉ updraftplus_com_login.create_key(); } else { updraftplus_com_login.hide_loader(); $('#updraft-navtab-addons-content .wrap .updraftplus_com_login').trigger('submit'); } } else if (response.hasOwnProperty('error')) { updraftplus_com_login.hide_loader(); $('#updraft-navtab-addons-content.wrap.updraftplus_com_login_status').html(response.message).show(); } }.bind(this)); } updraftplus_com_login.create_key = function() { this.stage = 'create_key'; this.set_status(updraftlion.udc_cloud_connected); this.show_loader(); var command_data = { where_send: '__updraftpluscom', key_description: '', key_size: null, mothership_firewalled: 0 }; // updraftcentral_cloud_show_spinner(modal); updraftcentral_create_key, command_data, function(response) { // updraftcentral_cloud_hide_spinner(modal); essayer { var data = ud_parse_json(response); si (data.hasOwnProperty('error')) { console.log(data); retourner; } si (data.hasOwnProperty('bundle')) { console.log('bundle', data.bundle); this.login_data.key = data.bundle, this.stage = 'connect_udc'; updraftplus_com_login.connect_udc(); } sinon { si (data.hasOwnProperty('r')) { $('#updraft-navtab-addons-content .wrap .état_connexion_updraftplus_com').html(updraftlion.trouble_connecting).show(); alert(data.r); } else { $('#updraft-navtab-addons-content .wrap .état_connexion_updraftplus_com').html(updraftlion.trouble_connecting).show(); console.log(data); } updraftplus_com_login.hide_loader(); } } catch (err) { console.log(err); updraftplus_com_login.hide_loader(); } }.bind(this), { json_parse: false }); } updraftplus_com_login.connect_udc = function() { var container = $('#updraft-navtab-addons-content .wrap'); updraftplus_com_login.set_status(updraftlion.udc_cloud_key_created); updraftplus_com_login.show_loader(); if ('connect_udc_TFA' == this.stage) { this.login_data.two_factor_code = container.find('input#updraftplus-addons_options_two_factor_code').val(); updraftplus_com_login.set_status(updraftlion.checking_tfa_code); } var login_data = { form_data: this.login_data }; login_data.form_data.addons_options_connect = 1; // Dernière étape, connectez l'UDC avec la clé et tout. updraft_send_command('process_updraftcentral_login', login_data, function(login_response) { try { var data = ud_parse_json(login_response); if (data.hasOwnProperty('error')) { if ('incorrect_password' === data.code) { container.find('.tfa_fields').hide(); container.find('.non_tfa_fields').show(); container.find('input#updraftplus-addons_options_two_factor_code').val(''); container.find('input#updraftplus-addons_options_password').val('').trigger('focus'); } if ('no_key_found' === data.code) { this.stage = 'create_key'; } // Continuer avec le compte UpdraftPlus même si l'utilisateur a utilisé toutes les licences UpdraftCentral si ('no_licences_available' === data.code) { $('#updraft-navtab-addons-content .wrap .updraftplus_com_login_status').html(updraftlion.login_udc_no_licences_short).show(); data.status = 'authenticated'; container.find('input[name="_wp_http_referer"]').val(function(index, val) { return val + '&udc_connect=0'; }); } else { $('#updraft-navtab-addons-content .wrap .updraftplus_com_login_status').html(data.message).show(); $('#updraft-navtab-addons-content .wrap .updraftplus_com_login_status').find('a').attr('target', '_blank'); console.log(data); updraftplus_com_login.hide_loader(); return; } } if (data.hasOwnProperty('tfa_enabled') && true == data.tfa_enabled) { $('#updraft-navtab-addons-content .wrap .updraftplus_com_login_status').html('').hide(); container.find('.non_tfa_fields').hide(); container.find('.tfa_fields').show(); container.find('input#updraftplus-addons_options_two_factor_code').trigger('focus'); this.stage = 'connect_udc_TFA'; } if ('authenticated' === data.status) { container.find('.non_tfa_fields').hide(); container.find('.tfa_fields').hide(); container.find('.updraft-after-form-table').hide(); this.stage = null; $('#updraft-navtab-addons-content .wrap .updraftplus_com_login_status').html(updraftlion.login_successful_short).show().addClass('success'); // soumettre le formulaire (pour recharger la page). setTimeout(function() { $('#updraft-navtab-addons-content .wrap form.updraftplus_com_login').trigger('submit'); }, 1000); } } catch (err) { console.log(err); } updraftplus_com_login.hide_loader(); }.bind(this), { json_parse: false }); } /** * Cette fonction enverra une requête AJAX au backend pour vérifier les informations d'identification des utilisateurs, puis elle informera l'utilisateur de toute erreur ou affichera des éléments d'interface utilisateur qui incluent leur nombre de jetons et un moyen de créer de nouveaux clones. * * @param {array} options - an array that includes the users email and password */ function temporary_clone_submit(options) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status').html('').hide(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .updraftplus_spinner.spinner').addClass('visible'); updraft_send_command('process_updraftplus_clone_login', options, function (response) { try { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .updraftplus_spinner.spinner').removeClass('visible'); if (response.hasOwnProperty('status') && 'error' == response.status) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status').html(response.message).show(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields').hide(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields').show(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code').val(''); return; } if (response.hasOwnProperty('tfa_enabled') && true == response.tfa_enabled) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields').hide(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields').show(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 input#temporary_clone_options_two_factor_code').trigger('focus'); } if ('authenticated' === response.status) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1').hide(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields').show(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields').hide(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 input#temporary_clone_options_two_factor_code').val(''); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2').show(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2').html(response.html); if (response.hasOwnProperty('clone_info') && response.clone_info.hasOwnProperty('expires_after')) temporary_clone_timer(response.clone_info.expires_after); } } catch (err) { console.log(err); } }); } /** * This function will send an AJAX request to the backend to check the clone key, then it will either inform the user of any errors or display UI elements that include their token count and a way to create new clones.

' + ou message_d'erreur_fatal + '

'); } else { var error_message = "updraft_send_command: erreur: " + statut + " (" + code_erreur + ")"; $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html('

' + message_erreur + '

'); console.log(error_message); console.log(response); } } }); } setTimeout(function () { if (0 != which_to_download.length) { temporary_clone_process_create(options, backup_timestamp, backup_nonce, backup_options); return; } var clone_id = options['form_data']['clone_id']; var secret_token = options['form_data']['secret_token']; updraft_send_command('process_updraftplus_clone_create', options, function (response) { try { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone').prop('disabled', false); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner').removeClass('visible'); if (response.hasOwnProperty('status') && 'error' == response.status) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html(updraftlion.error + ' ' + response.message).show(); return; } if ('success' === response.status) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2').hide(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage3').show(); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage3').html(response.html); // remove the clone timeout as the clone has now been created if (temporary_clone_timeout) clearTimeout(temporary_clone_timeout); // check if the response includes a secret token, if it does we have claimed a clone from the queue and need to update our current secret token to the one that belongs to the claimed clone if (response.hasOwnProperty('secret_token')) { secret_token = response.secret_token; } if ('wp_only' === backup_nonce) { jQuery('#updraft_clone_progress .updraftplus_spinner.spinner').addClass('visible'); temporary_clone_poll(clone_id, secret_token); } else { jQuery('#updraft_clone_progress .updraftplus_spinner.spinner').addClass('visible'); temporary_clone_boot_backup(clone_id, secret_token, response.url, response.key, backup_nonce, backup_timestamp, backup_options); } } } catch (err) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone').prop('disabled', false); console.log("Error when processing the response of process_updraftplus_clone_create (as follows)"); console.log(err); } }); }, 5000); } /** * This function will send an AJAX request to the backend to start a clone backup job * * @param {string} clone_id - the clone id * @param {string} secret_token - the clone secret * @param {string} clone_url - the clone url * @param {string} key - the migration key * @param {string} backup_nonce - the nonce for the backup we want to use or 'current' for a fresh backup * @param {string} backup_timestamp - the timestamp for the backup we want to use or 'current' for a fresh backup * @param {array} backup_options - an array of options for the backup */ function temporary_clone_boot_backup(clone_id, secret_token, clone_url, key, backup_nonce, backup_timestamp, backup_options) { var params = { updraftplus_clone_backup: 1, backupnow_nodb: 0, backupnow_nofiles: 0, backupnow_nocloud: 0, backupnow_label: 'UpdraftClone', extradata: '', onlythisfileentity: 'plugins,themes,uploads,others', clone_id: clone_id, secret_token: secret_token, clone_url: clone_url, key: key, backup_nonce: backup_nonce, backup_timestamp: backup_timestamp, db_anon_all: backup_options['db_anon_all'], db_anon_non_staff: backup_options['db_anon_non_staff'], db_anon_wc_orders: backup_options['db_anon_wc_orders'], clone_region: backup_options['clone_region'] }; updraft_activejobslist_backupnownonce_only = 1; updraft_send_command('backupnow', params, function (response) { jQuery('#updraft_clone_progress .updraftplus_spinner.spinner').removeClass('visible'); jQuery('#updraft_backup_started').html(response.m); if (response.hasOwnProperty('nonce')) { // Can't return it from this context updraft_backupnow_nonce = response.nonce; updraft_clone_jobs.push(updraft_backupnow_nonce); updraft_inpage_success_callback = function () { jQuery('#updraft_clone_activejobsrow').hide(); // If user aborts the job if (updraft_aborted_jobs[updraft_backupnow_nonce]) { jQuery('#updraft_clone_progress').html(updraftlion.clone_backup_aborted); } else { jQuery('#updraft_clone_progress').html(updraftlion.clone_backup_complete); } }; console.log("UpdraftPlus: ID of started job: " + updraft_backupnow_nonce); } updraft_activejobs_update(true); }); } /** * This function will send an AJAX request to the backend to poll for the clones install information * * @param {string} clone_id - the clone id * @param {string} secret_token - the clone secret */ function temporary_clone_poll(clone_id, secret_token) { var options = { clone_id: clone_id, secret_token: secret_token, }; setTimeout(function () { updraft_send_command('process_updraftplus_clone_poll', options, function (response) { if (response.hasOwnProperty('status')) { if ('error' == response.status) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status').html(updraftlion.error + ' ' + response.message).show(); return; } if ('success' === response.status) { if (response.hasOwnProperty('data') && response.data.hasOwnProperty('wordpress_credentials')) { $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner').removeClass('visible'); $('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_clone_progress').append('
WordPress ' + updraftlion.credentials + ':
' + updraftlion.username + ': ' + response.data.wordpress_credentials.username + '
' + updraftlion.password + ': ' + response.data.wordpress_credentials.password); return; } } } else { console.log(response); } temporary_clone_poll(clone_id, secret_token); }); }, 60000); } $('#updraft-navtab-settings-content #remote-storage-holder').on('click', '.updraftplusmethod a.updraft_add_instance', function(e) { e.preventDefault(); updraft_settings_form_changed = true; load_save_button(); var method = $(this).data('method'); add_new_instance(method); }); $('#updraft-navtab-settings-content #remote-storage-holder').on('click', '.updraftplusmethod a.updraft_delete_instance', function(e) { e.preventDefault(); updraft_settings_form_changed = true; load_save_button(); var method = $(this).data('method'); var instance_id = $(this).data('instance_id'); if (1 === $('.' + method + '_updraft_remote_storage_border').length) { add_new_instance(method); } $('.' + method + '-' + instance_id).hide('slow', function() { $(this).remove(); }); }); $('#updraft-navtab-settings-content #remote-storage-holder').on('click', '.updraftplusmethod .updraft_edit_label_instance', function(e) { $(this).find('span').hide(); $(this).attr('contentEditable', true).trigger('focus'); }); $('#updraft-navtab-settings-content #remote-storage-holder').on('keyup', '.updraftplusmethod .updraft_edit_label_instance', function(e) { var method = jQuery(this).data('method'); var instance_id = jQuery(this).data('instance_id'); var content = jQuery(this).text(); $('#updraft_' + method + '_instance_label_' + instance_id).val(content); }); $('#updraft-navtab-settings-content #remote-storage-holder').on('flou', '.updraftplusmethod .updraft_edit_label_instance', function(e) { $(this).attr('contentEditable', false); $(this).find('span').show(); }); $('#updraft-navtab-settings-content #remote-storage-holder').on('touche pressée', '.updraftplusmethod .updraft_edit_label_instance', function(e) { if (13 === e. which) { $(this).attr('contentEditable', false); $(this).find('span').show(); $(this).trigger('flou'); } }); /** * Cette méthode récupérera les options par défaut et compilera un modèle avec elles * * @param {string} method - le nom du stockage distant * @param {boolean} first_instance - indique s'il s'agit de la première instance de ce type */ function add_new_instance(method) { var template = Guidon.compile(updraftlion.remote_storage_templates[method]); var context = {}; // Initier une référence en attribuant un objet vide à une variable (dans ce cas, la variable de contexte) afin qu'elle puisse être utilisée comme cible de fusion d'un ou plusieurs autres objets. Contrairement aux valeurs de base (booléen, chaîne, entier, etc.), en Javascript, les objets et les tableaux sont passés par référence // copiez ce qui se trouve dans les propriétés du modèle dans le contexte en écrasant les mêmes propriétés d'objet, puis copiez ce qui se trouve dans les paramètres d'instance par défaut dans le contexte en écrasant toutes les mêmes propriétés de l'opération de fusion précédente (le cas échéant). Les propriétés de contexte sont écrasées par d'autres objets qui ont les mêmes propriétés plus loin dans l'ordre des paramètres Object.assign(context, updraftlion.remote_storage_options[method]['template_properties'], updraftlion.remote_storage_options[method]['default']); var method_name = updraftlion.remote_storage_methods[method]; context['instance_id'] = 's-' + generate_instance_id(32); context['instance_enabled'] = 1; context['instance_label'] = method_name + ' (' + (jQuery('.' + méthode + '_updraft_remote_storage_border').length + 1) + ')'; context['instance_conditional_logic'] = { type: '', // toujours par défaut règles: [], day_of_the_week_options: updraftlion.conditional_logic.day_of_the_week_options, logic_options: updraftlion.conditional_logic.logic_options, operand_options: updraftlion.conditional_logic.operand_options, operator_options: updraftlion.conditional_logic.operator_options, }; var html = template(context); jQuery(html).hide().insertAfter(jQuery('.' ').text(updraftlion.conditional_logic.day_of_the_week_options[i].value)); } } else if ('jour_du_mois' === jQuery(this).val()) { for (var i=1; i<=31; i++) { jQuery(this).parent().find('select:nth(2)').append(jQuery('').text(i)); } } }); jQuery('#updraft-navtab-settings-content #remote-storage-holder').on("cliquez", "div.conditional_remote_backup ul.rules li span", function () { updraft_settings_form_changed = true; load_save_button(); var $ul = jQuery(this).parents('ul.rules'); if (jQuery(this).hasClass('remove-rule')) { jQuery(this).parent().slideUp(function() { jQuery(this).remove(); if (jQuery($ul).find('> li').length < 2) { jQuery('li:nth(0) span.remove-rule', $ul).remove(); } }); } }); jQuery('#updraft-navtab-settings-content #remote-storage-holder').on("clic", "div.conditional_remote_backup input.add-new-rule", function () { var $ul = jQuery(this).parent().find('ul.rules'); if (jQuery($ul).find('> li').length < 2) { jQuery($ul).find('li:nth(0)').append(''); } $cloned_item = jQuery($ul).find('> li').last().clone(); jQuery($cloned_item).find('> select').each(function() { jQuery(this).prop('name', jQuery(this).prop('name').replace(/\[instance_conditional_logic\]\[rules\]\[[0-9]+\]/gi, '[instance_conditional_logic][rules]['+jQuery($ul).data('rules')+']')); }); jQuery($ul).append($cloned_item); jQuery($ul).data('rules', parseInt(jQuery($ul).data('rules')) + 1); jQuery($cloned_item).find('select[name*="[operand]"]').trigger('change'); }); jQuery('#updraft-navtab-settings-content #remote-storage-holder').on('click', '.updraftplusmethod button.updraft-test-button', function() { var method = jQuery(this).data('method'); var instance_id = jQuery(this).data('instance_id'); updraft_remote_storage_test(method, function(response, status, data) { if ('sftp' != method) { return false; } if (data.hasOwnProperty('scp') && data.scp) { alert(updraftlion.settings_test_result.replace('%s', 'SCP')+' '+response.output); } else { alert(updraftlion.settings_test_result.replace('%s', 'SFTP')+' '+response.output); } if (response.hasOwnProperty('data') && response.data) { if (response.data.hasOwnProperty('valid_md5_fingerprint') && response.data.valid_md5_fingerprint) { $('#updraft_sftp_fingerprint_'+instance_id).val(response.data.valid_md5_fingerprint); } } return true; }, instance_id); }); $('#updraft-navtab-settings-content select.updraft_interval, #updraft-navtab-settings-content select.updraft_interval_database').on('change', function() { updraft_check_same_times(); }); $('#backupnow_includefiles_showmoreoptions').on('click', function(e) { e.preventDefault(); $('#backupnow_includefiles_moreoptions').toggle(); }); $('#backupnow_database_showmoreoptions').on('click', function(e) { e.preventDefault(); $('#backupnow_database_moreoptions').toggle(); }); $('#updraft-navtab-migrate-content').on('click', '#backupnow_database_showmoreoptions', function (e) { e.preventDefault(); $('#updraft-navtab-migrate-content #backupnow_database_moreoptions').toggle(); }); $('#backupnow_db_anon_all').on('click', function(e) { if ($('#backupnow_db_anon_non_staff').prop('checked')) $('#backupnow_db_anon_non_staff').prop("checked", false); }); $('#backupnow_db_anon_non_staff').on('click', function(e) { if ($('#backupnow_db_anon_all').prop('checked')) $('#backupnow_db_anon_all').prop("checked", false); }); $('#updraft-navtab-migrate-content').on('click', '#updraftplus_migration_backupnow_db_anon_all', function() { if ($('#updraftplus_migration_backupnow_db_anon_non_staff').prop('checked')) $('#updraftplus_migration_backupnow_db_anon_non_staff').prop("checked", false); }); $('#updraft-navtab-migrate-content').on('click', '#updraftplus_migration_backupnow_db_anon_non_staff', function() { if ($('#updraftplus_migration_backupnow_db_anon_all').prop('checked')) $('#updraftplus_migration_backupnow_db_anon_all').prop("checked", false); }); $('#updraft-navtab-migrate-content').on('click', '#updraftplus_clone_backupnow_db_anon_all', function() { if ($('#updraftplus_clone_backupnow_db_anon_non_staff').prop('checked')) $('#updraftplus_clone_backupnow_db_anon_non_staff').prop("checked", false); }); $('#updraft-navtab-migrate-content').on('click', '#updraftplus_clone_backupnow_db_anon_non_staff', function() { if ($('#updraftplus_clone_backupnow_db_anon_all').prop('checked')) $('#updraftplus_clone_backupnow_db_anon_all').prop("checked", false); }); $('#updraft-backupnow-modal').on('click', '#backupnow_includecloud_showmoreoptions', function(e) { e.preventDefault(); $('#backupnow_includecloud_moreoptions').toggle(); }); $('#updraft-navtab-backups-content').on('click', 'a.updraft_diskspaceused_update',function(e) { e.preventDefault(); updraftplus_diskspace(); }); // For Advanced Tools > Site information > Web-server disk space in use by UpdraftPlus $('.advanced_settings_content a.updraft_diskspaceused_update').on('click', function(e) { e.preventDefault(); jQuery('.advanced_settings_content .updraft_diskspaceused').html(''+updraftlion.calcul+''); updraft_send_command('get_fragment', { fragment: 'disk_usage', data: 'updraft' }, function(response) { jQuery('.advanced_settings_content .updraft_diskspaceused').html(response.output); }, { type: 'GET' }); }); $('#updraft-navtab-backups-content a.updraft_uploader_toggle').on('click', function(e) { e.preventDefault(); $('#updraft-plupload-modal').slideToggle(); }); $('#updraft-navtab-backups-content a.updraft_rescan_local').on('click', function(e) { e.preventDefault(); updraft_updatehistory(1, 0); }); $('#updraft-navtab-backups-content a.updraft_rescan_remote').on('click', function(e) { e.preventDefault(); if (!confirm(updraftlion.remote_scan_warning)) return; updraft_updatehistory(1, 1); }); $('#updraftplus-remote-rescan-debug').on('click', function(e) { e.preventDefault(); updraft_updatehistory(1, 1, 1); }); jQuery('#updraft_reset_sid').on('click', function(e) { e.preventDefault(); updraft_send_command('reset_site_id', null, function(response) { jQuery('#updraft_show_sid').html(response); }, { json_parse: false }); }); jQuery("#updraft-navtab-settings-content").on('input', "form input:not('.udignorechange'), form textarea:not('.udignorechange')", function(e) { updraft_settings_form_changed = true; load_save_button(); }); jQuery("#updraft-navtab-settings-content").on('change', "form select", function(e) { updraft_settings_form_changed = true; load_save_button(); }); jQuery("#updraft-navtab-settings-content").on('click', "form input[type='submit']", function (e) { updraft_settings_form_changed = false; }); var bigbutton_width = 180; jQuery('.updraft-bigbutton').each(function(x,y) { var bwid = jQuery(y).width(); if (bwid > bigbutton_width) bigbutton_width = bwid; }); if (bigbutton_width > 180) jQuery('.updraft-bigbutton').width(bigbutton_width); if (jQuery('#updraft-navtab-backups-content').length) { // setTimeout(function(){updraft_showlastlog(true);}, 1200); setInterval(function() { updraft_activejobs_update(false);}, 1250); } // Prevent profusion of notices setTimeout(function() { jQuery('#setting-error-settings_updated').slideUp();}, 5000); jQuery('#updraft_restore_db').on('change', function() { if (jQuery('#updraft_restore_db').is(':checked') && 1 == jQuery(this).data('encrypted')) { jQuery('#updraft_restorer_dboptions').slideDown(); } else { jQuery('#updraft_restorer_dboptions').slideUp(); } }); updraft_check_same_times(); var updraft_message_modal_buttons = {}; updraft_message_modal_buttons[updraftlion.close] = function() { jQuery(this).dialog("close"); }; jQuery("#updraft-message-modal").dialog({ autoOpen: false, resizeOnWindowResize: true, scrollWithViewport: true, resizeAccordingToViewport: true, useContentSize: false, open: function(event, ui) { $(this).dialog('option', 'width', 520); $(this).dialog('option', 'minHeight', 260); if ($(window).height() > 360 ) { $(this).dialog('option', 'height', 360); } else { $(this).dialog('option', 'height', $(window).height()-30); } }, modal: true, buttons: updraft_message_modal_buttons }); var updraft_delete_modal_buttons = {}; updraft_delete_modal_buttons[updraftlion.deletebutton] = function() { updraft_remove_backup_sets(0, 0, 0, 0, [], false); }; /** * Perform a manual backup sets deletion * * @param {integer} deleted_counter - The total number of local and remote files that have successfully been removed already. Ce paramètre et les trois suivants sont utilisés de manière récursive afin que le total final puisse être affiché à l'utilisateur dans un message d'affichage. '+resp.count_backups+''); } var deleted_timestamps = resp.deleted_timestamps.split(','); for (var i = 0; i < deleted_timestamps.length; i++) { var timestamp = deleted_timestamps[i]; jQuery('#updraft-navtab-backups-content .updraft_existing_backups_row_' + timestamp).slideUp().remove(); } updraft_backups_selection.checkSelectionStatus(); updraft_history_lastchecksum = false; local_deleted = local_deleted + resp.backup_local; remote_deleted = remote_deleted + resp.backup_remote; sets_deleted = sets_deleted + resp.backup_sets; if ('' != resp.error_messages) { error_log_prompt = updraftlion.delete_error_log_prompt; } setTimeout(function() { alert(resp.set_message + " " + sets_deleted + "\n" + resp.local_message + " " + local_deleted + "\n" + resp.remote_message + " " + remote_deleted + "\n\n" + resp.error_messages + "\n" + error_log_prompt); }, 900); } }); }; updraft_delete_modal_buttons[updraftlion.cancel] = function() { jQuery(this).dialog("close"); }; jQuery("#updraft-delete-modal").dialog({ autoOpen: false, resizeOnWindowResize: true, scrollWithViewport: true, resizeAccordingToViewport: true, useContentSize: false, open: function(event, ui) { $(this).css('minHeight', 83); }, modal: true, buttons: updraft_delete_modal_buttons }); var updraft_restore_modal = { initialized: false, init: function() { if (this.initialized) return; this.initialized = true; // Setup cancel button events $('.updraft-restore--cancel').on('click', function(e) { e.preventDefault(); jQuery('#ud_downloadstatus2').html(''); this.close(); }.bind(this)); this.default_next_text = $('.updraft-restore--next-step').eq(0).text(); // Setup next button event $('.updraft-restore--next-step').on('click', function(e) { e.preventDefault(); this.process_next_action(); }.bind(this)); }, close: function() { $('.updraft_restore_container').hide(); $('body').removeClass('updraft-modal-is-opened'); }, open: function() { this.init(); // reset elements $('#updraft-restore-modal-stage1').show(); $('#updraft-restore-modal-stage2').hide(); $('#updraft-restore-modal-stage2a').html(''); $('.updraft-restore--next-step').text(this.default_next_text); $('.updraft-restore--stages li').removeClass('active').first().addClass('active'); // Show restoration window $('.updraft_restore_container').show(); $('body').addClass('updraft-modal-is-opened'); }, process_next_action: function() { var anyselected = 0; var moreselected = 0; var dbselected = 0; var pluginselected = 0; var themeselected = 0; var whichselected = []; // Make a list of what files we want var already_added_wpcore = 0; var meta_foreign = $('#updraft_restore_meta_foreign').val(); $('input[name="updraft_restore[]"]').each(function(x, y) { if ($(y).is(':checked') && !$(y).is(':disabled')) { anyselected = 1; var howmany = $(y).data('howmany'); var type = $(y).val(); if ('more' == type) moreselected = 1; if ('db' == type) dbselected = 1; if ('plugins' == type) pluginselected = 1; if ('themes' == type) themeselected = 1; if (1 == meta_foreign || (2 == meta_foreign && 'db' != type)) { if ('wpcore' != type) { howmany = $('#updraft_restore_form #updraft_restore_wpcore').data('howmany'); } type = 'wpcore'; } if ('wpcore' != type || already_added_wpcore == 0) { var restobj = [ type, howmany ]; whichselected.push(restobj); // alert($(y).val()); if ('wpcore' == type) { already_added_wpcore = 1; } } } }); if (1 == anyselected) { // Work out what to download if (1 == updraft_restore_stage) { // meta_foreign == 1 : All-in-one format: the only thing to download, always, is wpcore // if ('1' == meta_foreign) { // whichselected = []; // whichselected.push([ 'wpcore', 0 ]); // } else if ('2' == meta_foreign) { // $(whichselected).each(function(x,y) { // restobj = whichselected[x]; // }); // whichselected = []; // whichselected.push([ 'wpcore', 0 ]); // } $('.updraft-restore--stages li').removeClass('active').eq(1).addClass('active'); $('#updraft-restore-modal-stage1').slideUp('slow', function() { $('#updraft-restore-modal-stage2').show(100, function() { updraft_restore_stage = 2; var pretty_date = $('.updraft_restore_date').first().text(); // Create the downloader active widgets // See if we some are already known to be downloaded - in which case, skip creating the download widget. (Cela permet d'économiser sur les allers-retours HTTP, car chaque widget crée une nouvelle requête POST. Bien sûr, c'est au prix d'un de plus ici). '+updraftlion.maybe_downloading_entities); updraft_send_command(' whichdownloadsneeded', { downloads: whichselected, timestamp: backup_timestamp }, function(response) { $('.updraft-restore--next-step').prop('disabled', false); if (response.hasOwnProperty('downloads')) { console.log('UpdraftPlus: les éléments qui nécessitent encore un téléchargement suivent'); which_to_download = response.downloads; console.log( which_to_download); } // Lancer tous les téléchargements, si nécessaire if (0 == which_to_download.length) { updraft_restorer_checkstage2(0); } else { for (var i=0; i'+resp.message_d'erreur_fatale+'

'); } else { var error_message = "updraft_send_command: erreur: "+status+" ("+error_code+")"; $('#updraft-restore-modal-stage2a').html('

'+message_d'erreur+'

'); console.log(error_message); console.log(response); } } }); } catch (err) { console.log("UpdraftPlus: error (follows) when looking for items needing downloading"); console.log(err); alert(updraftlion.jsonnotunderstood); } }); }); // Make sure all are downloaded } else if (2 == updraft_restore_stage) { updraft_restorer_checkstage2(1); } else if (3 == updraft_restore_stage) { var continue_restore = 1; jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', true); $('#updraft_restoreoptions_ui input.required').each(function(index) { if (continue_restore == 0) return; var sitename = $(this).val(); if (sitename == '') { alert(updraftlion.pleasefillinrequired); jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', false); continue_restore = 0; } else if ($(this).attr('pattern') != '') { var pattern = $(this).attr('pattern'); var re = new RegExp(pattern, "g"); if (!re.test(sitename)) { alert($(this).data('invalidpattern')); jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', false); continue_restore = 0; } } }); if (1 == dbselected) { anyselected = 0; jQuery('input[name="updraft_restore_tables_options[]"').each(function (x, y) { if (jQuery(y).is(':checked') && !jQuery(y).is(':disabled')) anyselected = 1; }); if (0 == anyselected && !skipped_db_scan) { alert(updraftlion.youdidnotselectany); jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', false); return; } } if (1 == pluginselected) { anyselected = 0; if (!jQuery(".updraftplus_restore_plugins_options_container").length) anyselected = 1; jQuery('input[name="updraft_restore_plugins_options[]"').each(function (x, y) { if (jQuery(y).is(':checked') && !jQuery(y).is(':disabled')) anyselected = 1; }); if (0 == anyselected) { alert(updraftlion.youdidnotselectany); jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', false); return; } } if (1 == themeselected) { anyselected = 0; if (!jQuery(".updraftplus_restore_themes_options_container").length) anyselected = 1; jQuery('input[name="updraft_restore_themes_options[]"').each(function (x, y) { if (jQuery(y).is(':checked') && !jQuery(y).is(':disabled')) anyselected = 1; }); if (0 == anyselected) { alert(updraftlion.youdidnotselectany); jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', false); return; } } if (1 == moreselected) { anyselected = 0; jQuery('input[name="updraft_include_more_index[]"').each(function (x, y) { if (jQuery(y).is(':checked') && !jQuery(y).is(':disabled')) { anyselected = 1; if ('' == jQuery('#updraft_include_more_path_restore' + x).val()) { alert(updraftlion.emptyrestorepath); } } }); if (0 == anyselected) { alert(updraftlion.youdidnotselectany); jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', false); return; } } if (!continue_restore) return; var restore_options = $('#updraft_restoreoptions_ui select, #updraft_restoreoptions_ui input').serialize(); // jQuery serialize does not pick up unchecked checkboxes, but we want to include these so that we have a list of table/plugins/themes the user does not want to restore we prepend these with udp-skip-{entity}- and check this on the backend var entities = ['table', 'plugins', 'themes']; jQuery.each(entities, function(i, entity) { jQuery.each(jQuery('input[name="updraft_restore_' + entity + '_options[]').filter(function(idx) { return jQuery(this).prop('checked') === false }), function(idx, el) { restore_options += '&' + jQuery(el).attr('name') + '=' + 'udp-skip-' + entity + '-' + jQuery(el).val(); }); }) console.log("Restore options: "+restore_options); if (typeof php_max_input_vars !== 'undefined') { var restore_options_length = restore_options.split("&").length; var warning_template_start = '

' + avertissements de courant ascendant +'

    '; var avertissement_template_end = '
'; // Si nous ne pouvons pas détecter les php_max_input_vars, supposons que la valeur par défaut de PHP est de 1000 si (!php_max_input_vars && 1000 <= restore_options_length) { console.log('Options de restauration : ' + restore_options_length + ' Variables d'entrée maximales PHP non détectées ; utilisation de la valeur par défaut : 1000'); } else if (php_max_input_vars && restore_options_length >= php_max_input_vars) { var warning = '
  • ' + updraftlion.php_max_input_vars_detected_warning + '
  • '; if (1 != jQuery('#updraft-restore-modal-stage2a .notice-warning').length) { var final_warning = warning_template_start + warning + warning_template_end; jQuery('#updraft_restoreoptions_ui').prepend(final_warning); } else { jQuery('#updraft-restore-modal-stage2a #updraft_restore_warnings').append(warning); } console.log('Options de restauration : ' + restore_options_length + ' Variables d'entrée max. PHP : ' + php_max_input_vars); jQuery('.updraft-restore--next-step, .updraft-restore--cancel').prop('disabled', false); php_max_input_vars = undefined; return; } } $('#updraft_restorer_restore_options').val(restore_options); // Ceci doit être fait en dernier, car cela efface la section avec #updraft_restoreoptions_ui $('#updraft-restore-modal-stage2a').html(updraftlion.restore_proceeding); $('#updraft_restore_form').trigger('submit'); // En cours ; empêcher le bouton d'être appuyé à nouveau updraft_restore_stage = 4; } } else { alert(updraftlion.youdidnotselectany); } } } var original_restore_main_activity_width = $('.updraft_restore_main--activity').width(); jQuery('#activity-full-log').on('clic', fonction() { var activity_log_max_width = $('.updraft_restore_main').css('max-width') == '1460px' ? '860px' : '1460px'; var restore_main_activity_width = $('.updraft_restore_main--activity').width() == original_restore_main_activity_width ? '100%' : largeur_d'activité_principale_restaurée_originale + 'px'; var activity_log_max_height = $('.updraft_restore_main--activity').css('min-height') == '600px' ? '0px' : '600px'; var activity_log_icon_title = $('#activity-full-log').attr('title') == updraftlion.restoreactivitylogscreenexit ? $('#activity-full-log').toggleClass('dashicons-fullscreen-exit-alt'); $('#activity-full-log').attr('title', activity_log_icon_title); $('.updraft_restore_main--components').toggle('fast'); $('.updraft_restore_main--header').toggle('fast'); $('.updraft_restore_main--activity').animate({minHeight: activity_log_max_height, width: restore_main_activity_width}); $('.updraft_restore_main').animate({maxWidth: activity_log_max_width}); }); jQuery("#updraft-iframe-modal").dialog({ autoOpen: false, hauteur: 500, largeur: 780, modal: true }); jQuery("#updraft-backupnow-inpage-modal").dialog({ autoOpen: false, modal: true, resizeOnWindowResize: true, scrollWithViewport: true, resizeAccordingToViewport: true, useContentSize: false, open: function(event, ui) { $(this).dialog('option', 'width', 580); $(this).dialog('option', 'minHeight', 261); $(this).dialog('option', 'height', 380); }, }); var backupnow_modal_buttons = {}; backupnow_modal_buttons[updraftlion.backupnow] = function() { var backupnow_nodb = jQuery('#backupnow_includedb').is(':checked') ? 0 : 1 ; var backupnow_nofiles = jQuery('#backupnow_includefiles').is(':checked') ? 0 : 1 ; var backupnow_nocloud = jQuery('#backupnow_includecloud').is(':checked') ? 0 : 1 ; var db_anon_all = jQuery('#backupnow_db_anon_all').is(':checked') ? 1 : 0 ; var db_anon_non_staff = jQuery('#backupnow_db_anon_non_staff').is(':checked') ? 1 : 0 ; var db_anon_wc_orders = jQuery('#backupnow_db_anon_wc_order_data').is(':checked') ? 1 : 0 ; var onlythesetableentities = backupnow_whichtables_checked(''); var always_keep = jQuery('#always_keep').is(':checked') ? 1 : 0 ; var incrémental = ('incrémental' == jQuery('#updraft-backupnow-modal').data('backup-type')) ?

    '+resp.message_d'erreur_fatale+'

    '); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: erreur: "+status+" ("+error_code+")"; jQuery('#updraft_zip_files_jstree').html('

    '+message_d'erreur+'

    '); console.log(message_d'erreur); alert(message_d'erreur); console.log(réponse); } } }); }, "erreur": function(erreur) { alert(erreur); console.log(erreur); }, }, "recherche": { "afficher_uniquement_les_correspondances": vrai }, "plugins": ["trier"], }); } else if ('contain-clause' == panel) { jQuery('#updraft_exclude_files_folders_wildcards_jstree').jstree({ "core": { "multiple": false, "data": function (nodeid, callback) { updraft_send_command('get_jstree_directory_nodes', {entity: 'filebrowser', directories_only: 1, node:nodeid, path: jQuery('#updraft_exclude_modal_path').val(), findex: 0, skip_root_node: 0}, function(response) { if (response.hasOwnProperty('error')) { alert(response.error); } else { callback.call(this, response.nodes); } }, { error_callback: function(response, status, error_code, resp) { si (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); jQuery('#updraft_zip_files_jstree').html('

    '+resp.message_d'erreur_fatale+'

    '); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: erreur: "+status+" ("+error_code+")"; jQuery('#updraft_zip_files_jstree').html('

    '+message_d'erreur+'

    '); console.log(error_message); alert(error_message); console.log(response); } } }); }, "error": function(error) { alert(error); console.log(error); }, }, "search": { "show_only_matches": true }, "plugins": ["sort"], }); } jQuery('#updraft_exclude_modal_main').slideUp(); jQuery('.updraft-exclude-panel').hide(); jQuery('.updraft-exclude-panel[data-panel='+panel+']').slideDown(); }); jQuery('.updraft-exclude-modal-reset').on('click', function(event) { event.preventDefault(); jQuery('#updraft_exclude_files_folders_jstree').jstree("destroy"); jQuery('#updraft_exclude_files_folders_wildcards_jstree').jstree("destroy"); jQuery('#updraft_exclude_extension_field').val(''); jQuery('#updraft_exclude_prefix_field').val(''); jQuery('.updraft-exclude-panel').slideUp(); jQuery('#updraft_exclude_modal_main').slideDown(); }); jQuery('.updraft-exclude-submit').on('click', function() { var panel = jQuery(this).data('panel'); var exclude_item_val = ''; switch (panel) { case 'file-dir': var exclude_jstree_selected = jQuery("#updraft_exclude_files_folders_jstree").jstree("get_selected"); if (0 == exclude_jstree_selected.length) { alert(updraftlion.exclude_select_file_or_folder_msg); return; } var selected_file_or_folder = exclude_jstree_selected[0]; var prefix_path = jQuery('#updraft_exclude_modal_path').val(); if (selected_file_or_folder.substr(0, prefix_path.length) == prefix_path) { selected_file_or_folder = selected_file_or_folder.substr(prefix_path.length, selected_file_or_folder.length); } if ('/' == selected_file_or_folder.charAt(0)) selected_file_or_folder = selected_file_or_folder.substr(1); if ('/' == selected_file_or_folder.charAt(selected_file_or_folder.length - 1)) selected_file_or_folder = selected_file_or_folder.substr(0, selected_file_or_folder.length - 1); exclude_item_val = selected_file_or_folder; break; case 'extension': var exclude_extension = jQuery('#updraft_exclude_extension_field').val(); if ('' == exclude_extension) { alert(updraftlion.exclude_type_ext_msg); return; } if (!exclude_extension.match(/^[0-9a-zA-Z]+$/)) { alert(updraftlion.exclude_ext_error_msg); return; } exclude_item_val = 'ext:'+exclude_extension; break; case 'begin-with': var prefix = jQuery('#updraft_exclude_prefix_field').val(); if ('' == prefix) { alert(updraftlion.exclude_type_prefix_msg); return; } if (!prefix.match(/^\s*[a-z-_\d,\s]+\s*$/i)) { alert(updraftlion.exclude_prefix_error_msg); return; } exclude_item_val = 'prefix:'+prefix; break; case 'contain-clause': var exclude_jstree_selected = jQuery("#updraft_exclude_files_folders_wildcards_jstree").jstree("get_selected"); if (0 == exclude_jstree_selected.length) { alert(updraftlion.exclude_select_folder_wildcards_msg); return; } var clause_val = jQuery(this).parents('div.updraft-exclude-panel').find('div.clause-input-container input').val(); jQuery(this).parents('div.updraft-exclude-panel').find('div.clause-input-container input').val(''); var clause_type = jQuery(this).parents('div.updraft-exclude-panel').find('div.clause-input-container select').val(); if ('' == clause_val) { alert(updraftlion.exclude_contain_error_msg); return; } jQuery(this).parents('div.updraft-exclude-panel').find('div.clause-input-container select option').eq(0).prop('selected', true); var selected_file_or_folder = exclude_jstree_selected[0]; var prefix_path = jQuery('#updraft_exclude_modal_path').val(); if (selected_file_or_folder.substr(0, prefix_path.length) == prefix_path) { selected_file_or_folder = selected_file_or_folder.substr(prefix_path.length, selected_file_or_folder.length); } if ('/' == selected_file_or_folder.charAt(0)) selected_file_or_folder = selected_file_or_folder.substr(1); if ('/' == selected_file_or_folder.charAt(selected_file_or_folder.length - 1)) selected_file_or_folder = selected_file_or_folder.substr(0, selected_file_or_folder.length - 1); exclude_item_val = selected_file_or_folder; if ('' !== exclude_item_val) exclude_item_val += '/'; clause_val = clause_val.replace(/\*/g, '\\*'); if ('beginning' === clause_type) { exclude_item_val += clause_val + '*'; } else if ('middle' === clause_type) { exclude_item_val += '*' + clause_val + '*'; } else if ('end' === clause_type) { exclude_item_val += '*' + clause_val; } break; default: return; } var include_backup_file = jQuery('#updraft_exclude_modal_for').val(); if (!updraft_is_unique_exclude_rule(exclude_item_val, include_backup_file)) return; var exclude_entity_html = '
    '; jQuery('.updraft_exclude_entity_container[data-include-backup-file="' + include_backup_file + '"]').append(exclude_entity_html); updraft_exclude_entity_update(include_backup_file); jQuery('#updraft_exclude_modal').dialog('close'); }); // TODO : ceci est suspecté d'être obsolète. Confirmer + supprimer. jQuery('#updraft-navtab-settings-content .updraft-service').on('change', function() { var active_class = jQuery(this).val(); jQuery('#updraft-navtab-settings-content .updraftplusmethod').hide(); jQuery('#updraft-navtab-settings-content .'+active_class).show(); }); jQuery('#updraft-navtab-settings-content a.updraft_show_decryption_widget').on('click', function(e) { e.preventDefault(); jQuery('#updraftplus_db_decrypt').val(jQuery('#updraft_encryptionphrase').val()); jQuery('#updraft-manualdecrypt-modal').slideToggle(); }); jQuery('#updraftplus-phpinfo').on('click', function(e) { e.preventDefault(); updraft_iframe_modal('phpinfo', updraftlion.phpinfo); }); jQuery('#updraftplus-rawbackuphistory').on('click', function(e) { e.preventDefault(); updraft_iframe_modal('rawbackuphistory', updraftlion.raw); }); // + Added addons navtab jQuery('#updraft-navtab-status').on('click', function(e) { e.preventDefault(); updraft_open_main_tab('status'); updraft_page_is_visible = 1; updraft_console_focussed_tab = 'status'; // Refresh the console, as its next update might be far away updraft_activejobs_update(true); }); jQuery('#updraft-navtab-expert').on('click', function(e) { e.preventDefault(); updraft_open_main_tab('expert'); updraft_page_is_visible = 1; }); jQuery('#updraft-navtab-settings, #updraft-navtab-settings2, #updraft_backupnow_gotosettings').on('click', function(e) { e.preventDefault(); // These next two should only do anything if the relevant selector was clicked jQuery(this).parents('.updraftmessage').remove(); jQuery('#updraft-backupnow-modal').dialog('close'); updraft_open_main_tab('settings'); updraft_page_is_visible = 1; }); jQuery('#updraft-navtab-addons').on('click', function(e) { e.preventDefault(); jQuery(this).addClass('b#nav-tab-active'); updraft_open_main_tab('addons'); updraft_page_is_visible = 1; }); jQuery('#updraft-navtab-backups').on('click', function(e) { e.preventDefault(); updraft_console_focussed_tab = 'backups'; updraft_historytimertoggle(1); updraft_open_main_tab('backups'); }); jQuery('#updraft-navtab-migrate').on('click', function(e) { e.preventDefault(); jQuery('#updraft_migrate_tab_alt').html('').hide(); updraft_open_main_tab('migrate'); updraft_page_is_visible = 1; if (!jQuery('#updraft_migrate .updraft_migrate_widget_module_content').is(':visible')) { jQuery('.updraft_migrate_intro').show(); } }); if ('migrate' == updraftlion.tab) jQuery('#updraft-navtab-migrate').trigger('click'); updraft_send_command('ping', null, function(data, response) { if ('success' == response && data != 'pong' && data.indexOf('pong')>=0) { jQuery('#updraft-navtab-backups-content .ud-whitespace-warning').show(); console.log("UpdraftPlus: Extra output warning: response (which should be just (string)'pong') follows."); console.log(data); } }, { json_parse: false, type: 'GET' }); // Section: Plupload try { if (typeof updraft_plupload_config !== 'undefined') { plupload_init(); } } catch (err) { console.log(err); } function plupload_init() { // create the uploader and pass the config from above var uploader = new plupload.Uploader(updraft_plupload_config); // checks if browser supports drag and drop upload, makes some css adjustments if necessary uploader.bind('Init', function(up) { var uploaddiv = jQuery('#plupload-upload-ui'); if (up.features.dragdrop) { uploaddiv.addClass('drag-drop'); jQuery('#drag-drop-area') .on('dragover.wp-uploader', function() { uploaddiv.addClass('drag-over'); }) .on('dragleave.wp-uploader, drop.wp-uploader', function() { uploaddiv.removeClass('drag-over'); }); } else { uploaddiv.removeClass('drag-drop'); jQuery('#drag-drop-area').off('.wp-uploader'); } }); uploader.init(); // a file was added in the queue uploader.bind('FilesAdded', function(up, files) { if ($('#updraft-plupload-modal').is(':hidden')) { $('#updraft-plupload-modal').slideToggle(); } // var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10); plupload.each(files, function(file) { // @codingStandardsIgnoreLine if (! /^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+([0-9]+?)?(\.(zip|gz|gz\.crypt))?$/i.test(file.name) && ! '+fichier.nom+"

    "+updraftlion.notarchive2); jQuery('#updraft-message-modal').dialog('open'); } else { alert(file.name+": "+updraftlion.notarchive); } uploader.removeFile(file); return; } } // un fichier a été ajouté, vous souhaiterez peut-être mettre à jour votre DOM ici... jQuery('#filelist').append( '
    ' + nom.fichier + ' (' + plupload.formatSize(0) + '/' + plupload.formatSize(fichier.taille) + ') ' + '
    '); }); up.refresh(); up.start(); }); uploader.bind('UploadProgress', function(up, fichier) { jQuery('#' + fichier.id + " .fileprogress").width(fichier.pourcentage + "%"); jQuery('#' + fichier.id + " span").html(plupload.formatSize(parseInt(fichier.size * fichier.pourcentage / 100))); if (fichier.size == fichier.chargé) { jQuery('#' + fichier.id).html('
    ' + nom.fichier + ' (' + plupload.formatSize(parseInt(fichier.taille * fichier.pourcentage / 100)) + '/' + plupload.formatSize(fichier.taille) + ') - ' + updraftlion.comcomplet + '
    '); // Supprimé
    (juste avant la fermeture
    ) pour être plus clair, c'est complet. jQuery('#' + file.id + " .fileprogress").width(file.percent + "%"); } }); uploader.bind('Erreur', function(up, error) { console.log(error); var err_makesure; if (error.code == "-200") { err_makesure = '\n'+updraftlion.makesure2; } else { err_makesure = updraftlion.makesure; } var msg = updraftlion.uploaderr+' (code '+error.code+') : '+error.message; if (error.hasOwnProperty('status') && error.status) { msg += ' ('+updraftlion.http_code+' '+error.status+')'; } if (error.hasOwnProperty('response')) { console.log('UpdraftPlus: erreur plupload: '+error.response); si (error.response.length < 100) msg ​​+= ' '+updraftlion.error+' '+error.response+'\n'; } msg += ' '+err_makesure; alert(msg); }); // un fichier a été téléchargé uploader.bind('FileUploaded', function(up, file, response) { if (response.status == '200') { // ceci est votre réponse ajax, mettez à jour le DOM avec ou quelque chose... try { resp = ud_parse_json(response.response); if (resp.e) { alert(updraftlion.uploaderror+" "+resp.e); } else if (resp.dm) { alert(resp.dm); updraft_updatehistory(1, 0); } else if (resp.m) { updraft_updatehistory(1, 0); } else { alert('Réponse du serveur inconnu : '+response.response); } } catch (err) { console.log(response); alert(updraftlion.jsonnotunderstood); } } else { alert('Serveur inconnu état de la réponse : '+response.code); console.log(response); } }); } // Fonctions dans la console de débogage jQuery('#updraftplus_httpget_go').on('click', function(e) { e.preventDefault(); updraftplus_httpget_go(0); }); jQuery('#updraftplus_httpget_gocurl').on('click', function(e) { e.preventDefault(); updraftplus_httpget_go(1); }); jQuery('#updraftplus_callwpaction_go').on('click', function(e) { e.preventDefault(); params = { wpaction: jQuery('#updraftplus_callwpaction').val() }; updraft_send_command('call_wordpress_action', params, function(response) { if (response.e) { alert(response.e); } else if (response.s) { // Silence } else if (response.r) { jQuery('#updraftplus_callwpaction_results').html(response.r); } else { console.log(response); alert(updraftlion.jsonnotunderstood); } }); }); fonction updraftplus_httpget_go(curl) { params = { uri: jQuery('#updraftplus_httpget_uri').val() }; params.curl = curl; updraft_send_command('httpget', params, function(resp) { if (resp.e) { alert(resp.e); } if (resp.r) { jQuery('#updraftplus_httpget_results').html('
    '+resp.r+'
    '); } else { console.log(resp); } }, { type: 'GET' }); } jQuery('#updraft_activejobs_table, #updraft-navtab-migrate-content').on('click', '.updraft_jobinfo_delete', function(e) { e.preventDefault(); var job_id = jQuery(this).data('jobid'); if (job_id) { $(this).addClass('disabled'); updraft_activejobs_delete(job_id); } else { console.log("UpdraftPlus : un lien d'arrêt de tâche a été cliqué, mais l'ID de tâche est introuvable"); } }); jQuery('#updraft_activejobs_table, #updraft-navtab-backups-content .updraft_existing_backups, #updraft-backupnow-inpage-modal, #updraft-navtab-migrate-content').on('click', '.updraft-log-link', function(e) { e.preventDefault(); var file_id = jQuery(this).data('fileid'); var job_id = jQuery(this).data('jobid'); if (file_id) { updraft_popuplog(file_id); } else if (job_id) { updraft_popuplog(job_id); } else { console.log("UpdraftPlus : un lien de journal a été cliqué, mais l'ID de tâche est introuvable "); } }); fonction updraft_restore_setup(entités, clé, afficher_données) { updraft_restore_setoptions(entités); jQuery('#updraft_restore_timestamp').val(clé); jQuery('.updraft_restore_date').html(afficher_données); updraft_restore_stage = 1; // jQuery('#updraft-restore-modal').dialog('ouvrir'); updraft_restore_modal.open(); updraft_activejobs_update(true); } jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', 'button.choose-components-button', function(e) { var entity = jQuery(this).data('entities'); var backup_timestamp = jQuery(this).data('backup_timestamp'); var show_data = jQuery(this).data('showdata'); updraft_restore_setup(entities, backup_timestamp, show_data); }); /** * Obtenir la valeur d'un paramètre d'URL nommé - https://stackoverflow.com/questions/4548487/jquery-read-query-string * * @param {string} name - URL parameter to return the value of * * @returns {string} */ function get_parameter_by_name(name) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regex_s = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp(regex_s); var results = regex.exec(window.location.href); if (results == null) { return ''; } else { return decodeURIComponent(results[1].replace(/\+/g, ' ')); } } if (get_parameter_by_name('udaction') == 'initiate_restore') { var entities = get_parameter_by_name('entities'); var backup_timestamp = get_parameter_by_name('backup_timestamp'); var show_data = get_parameter_by_name('showdata'); updraft_restore_setup(entities, backup_timestamp, show_data); } var updraft_upload_modal_buttons = {}; updraft_upload_modal_buttons[updraftlion.uploadbutton] = function () { var key = jQuery('#updraft_upload_timestamp').val(); var nonce = jQuery('#updraft_upload_nonce').val(); var services = ''; var send_list = false; jQuery('.updraft_remote_storage_destination').each(function (index) { if (jQuery(this).is(':checked')) { send_list = true; } }); if (!send_list) { jQuery('#updraft-upload-modal-error').html(updraftlion.local_upload_error); return; } else { services = jQuery("input[name^='updraft_remote_storage_destination_']").serializeArray(); } jQuery(this).dialog("close"); alert(updraftlion.local_upload_started); updraft_send_command('upload_local_backup', { use_nonce: nonce, use_timestamp: key, services: services }); }; updraft_upload_modal_buttons[updraftlion.cancel] = function () { jQuery(this).dialog("close"); }; jQuery("#updraft-upload-modal").dialog({ autoOpen: false, modal: true, resizeOnWindowResize: true, scrollWithViewport: true, resizeAccordingToViewport: true, useContentSize: false, open: function(event, ui) { $(this).parent().trigger('focus'); $(this).dialog('option', 'width', 308); if (jQuery(window).height() > 460) { $(this).dialog('option', 'height', 318); } else if (jQuery(window).height() > 250 && jQuery(window).height() < 461) { $(this).dialog('option', 'height', 460); } else { $(this).dialog('option', 'height', jQuery(window).height() - 20); } }, buttons: updraft_upload_modal_buttons }); jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', 'button.updraft-upload-link', function (e) { e.preventDefault(); var nonce = jQuery(this).data('nonce').toString(); var key = jQuery(this).data('key').toString(); var services = jQuery(this).data('services').toString(); if (nonce) { updraft_upload(key, nonce, services); } else { console.log("UpdraftPlus: A upload link was clicked, but the Job ID could not be found"); } }); jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', '.updraft-load-more-backups', function (e) { e.preventDefault(); var backup_count = parseInt(jQuery('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row').length) + parseInt(updraftlion.existing_backups_limit); updraft_updatehistory(0, 0, 0, backup_count); }); jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', '.updraft-load-all-backups', function (e) { e.preventDefault(); updraft_updatehistory(0, 0, 0, 9999999); }); /** * Opens the dialog box for confirmation of where to upload the backup * * @param {string} key - The UNIX timestamp of the backup * @param {string} nonce - The backup job ID * @param {string} services - A list of services that have not been uploaded to yet */ function updraft_upload(key, nonce, services) { jQuery('#updraft_upload_timestamp').val(key); jQuery('#updraft_upload_nonce').val(nonce); var services_array = services.split(","); jQuery('.updraft_remote_storage_destination').each(function (index) { var name = jQuery(this).val(); if (jQuery.inArray(name, services_array) == -1) { jQuery(this).prop('checked', false); jQuery(this).prop('disabled', true); var label = $(this).prop("labels"); jQuery(label).find('span').show(); } }); jQuery('#updraft-upload-modal').dialog('open'); } jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', '.updraft-delete-link', function(e) { e.preventDefault(); var hasremote = jQuery(this).data('hasremote'); var nonce = jQuery(this).data('nonce').toString(); var key = jQuery(this).data('key').toString(); if (nonce) { updraft_delete(key, nonce, hasremote); } else { console.log("UpdraftPlus: A delete link was clicked, but the Job ID could not be found"); } }); jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', 'button.updraft_download_button', function(e) { e.preventDefault(); var base = 'uddlstatus_'; var backup_timestamp = jQuery(this).data('backup_timestamp'); var what = jQuery(this).data('what'); var whicharea = '.ud_downloadstatus'; var set_contents = jQuery(this).data('set_contents'); var prettydate = jQuery(this).data('prettydate'); var async = true; updraft_downloader(base, backup_timestamp, what, whicharea, set_contents, prettydate, async); }); jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('dblclick', '.updraft_existingbackup_date', function (e) { e.preventDefault(); var nonce = jQuery(this).data('nonce').toString(); var timestamp = jQuery(this).data('timestamp').toString(); updraft_send_command('rawbackup_history', { timestamp: timestamp, nonce: nonce }, function (response) { if (response.hasOwnProperty('rawbackup')) { var textArea = document.createElement('textarea'); textArea.innerHTML = response.rawbackup; updraft_html_modal(textArea.value, updraftlion.raw, 780, 500); } else { updraft_html_modal(updraftlion.jsonnotunderstood, updraftlion.raw, 780, 500); } }, { type: 'POST' }); updraft_html_modal('

    '+ chargement ascendant +'
    ', updraftlion.raw, 780, 500); }); jQuery('#backupnow_database_moreoptions').on('click', 'div.backupnow-db-tables > a', function(e) { e.preventDefault(); jQuery('> input', jQuery(this).parents('div.backupnow-db-tables')).prop('checked', false); if (jQuery(this).hasClass('backupnow-select-all-table')) { jQuery('> input', jQuery(this).parents('div.backupnow-db-tables')).prop('checked', true); } else if (jQuery(this).hasClass('backupnow-select-all-this-site')) { jQuery('> input', jQuery(this).parents('div.backupnow-db-tables')).not('[data-non_wp_table]').prop('checked', true); } }); jQuery('#updraft-restore-modal').on('click', '.updraft_restore_select_all_themes', function(e) { e.preventDefault(); jQuery('.updraft_restore_themes_options').prop('checked', true); }); jQuery('#updraft-restore-modal').on('click', '.updraft_restore_deselect_all_themes', function(e) { e.preventDefault(); jQuery('.updraft_restore_themes_options').prop('checked', false); }); jQuery('#updraft-restore-modal').on('click', '.updraft_restore_select_all_plugins', function(e) { e.preventDefault(); jQuery('.updraft_restore_plugins_options').prop('checked', true); }); jQuery('#updraft-restore-modal').on('click', '.updraft_restore_deselect_all_plugins', function(e) { e.preventDefault(); jQuery('.updraft_restore_plugins_options').prop('checked', false); }); jQuery('.updraftmessage.admin-warning-litespeed').on('click', '.notice-dismiss', function(e) { e.preventDefault(); updraft_send_command('dismiss_admin_warning_litespeed'); }); jQuery('.updraftmessage.admin-warning-pclzip').on('click', '.notice-dismiss', function(e) { e.preventDefault(); updraft_send_command('dismiss_admin_warning_pclzip'); }); function apply_search_on_db_size() { var value = jQuery('.db-search').val().toLowerCase(); jQuery(".db-size-content tr").filter(function() { jQuery(this).toggle(jQuery(this).text().toLowerCase().indexOf(value) > -1) }); } jQuery('#db_size.advanced_tools_button, .db-size-refresh').on('click', function(e) { e.preventDefault(); var $total_size = jQuery('.advanced_settings_content .advanced_tools.db_size .total-size'); var $table_body = jQuery('.advanced_settings_content .advanced_tools.db_size tbody.db-size-content'); // trigger the ajax from the 'Database size' menu only for the first time if (jQuery(this).hasClass('advanced_tools_button') && '' != $table_body.html()) { return; } $table_body.html(''); updraft_send_command('db_size', 1, function (response) { $total_size.html(response.size); $table_body.html(response.html); apply_search_on_db_size(); }); }); jQuery('.db-search').on('input', function() { apply_search_on_db_size(); }); jQuery('.db-search-clear').on('click', function(e) { e.preventDefault(); jQuery('.db-search').val(''); apply_search_on_db_size(); }); jQuery('.updraft_restore_main').on('click', 'button#updraft_restore_abort', function(e) { e.preventDefault(); jQuery('#updraft_restore_continue_action').val('updraft_restore_abort'); jQuery(this).parent('form').trigger('submit'); }); }); // UpdraftVault jQuery(function($) { var settings_css_prefix = '#updraft-navtab-settings-content '; $(settings_css_prefix+'#remote-storage-holder').on('click', '.updraftvault_backtostart', function(e) { e.preventDefault(); $(settings_css_prefix+'#updraftvault_settings_showoptions').slideUp(); $(settings_css_prefix+'#updraftvault_settings_connect').slideUp(); $(settings_css_prefix+'#updraftvault_settings_connected').slideUp(); $(settings_css_prefix+'#updraftvault_settings_default').slideDown(); }); // Prevent default event when pressing return in the form $(settings_css_prefix).on('keypress','#updraftvault_settings_connect input', function(e) { if (13 == e.which) { $(settings_css_prefix+'#updraftvault_connect_go').trigger('click'); return false; } }); $(settings_css_prefix+'#remote-storage-holder').on('click', '#updraftvault_recountquota', function(e) { e.preventDefault(); $(settings_css_prefix+'#updraftvault_recountquota').html(updraftlion.counting); try { updraft_send_command('vault_recountquota', { instance_id: $('#updraftvault_settings_connect').data('instance_id') }, function(response) { $(settings_css_prefix+'#updraftvault_recountquota').html(updraftlion.updatequotacount); if (response.hasOwnProperty('html')) { $(settings_css_prefix+'#updraftvault_settings_connected').html(response.html); if (response.hasOwnProperty('connected')) { if (response.connected) { $(settings_css_prefix+'#updraftvault_settings_default').hide(); $(settings_css_prefix+'#updraftvault_settings_connected').show(); } else { $(settings_css_prefix+'#updraftvault_settings_connected').hide(); $(settings_css_prefix+'#updraftvault_settings_default').show(); } } } }, { error_callback: function(response, status, error_code, resp) { $(settings_css_prefix+'#updraftvault_recountquota').html(updraftlion.updatequotacount); if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: error: "+status+" ("+error_code+")"; console.log(error_message); alert(error_message); console.log(response); } } }); } catch (err) { $(settings_css_prefix+'#updraftvault_recountquota').html(updraftlion.updatequotacount); console.log(err); } }); $(settings_css_prefix+'#remote-storage-holder').on('click', '#updraftvault_disconnect', function(e) { e.preventDefault(); $(settings_css_prefix+'#updraftvault_disconnect').html(updraftlion.disconnecting); try { updraft_send_command('vault_disconnect', { immediate_echo: true, instance_id: $('#updraftvault_settings_connect').data('instance_id') }, function(response) { $(settings_css_prefix+'#updraftvault_disconnect').html(updraftlion.disconnect); if (response.hasOwnProperty('html')) { $(settings_css_prefix+'#updraftvault_settings_connected').html(response.html).slideUp(); $(settings_css_prefix+'#updraftvault_settings_default').slideDown(); } }, { error_callback: function(response, status, error_code, resp) { $(settings_css_prefix+'#updraftvault_disconnect').html(updraftlion.disconnect); if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: error: "+status+" ("+error_code+")"; console.log(error_message); alert(error_message); console.log(response); } } }); } catch (err) { $(settings_css_prefix+'#updraftvault_disconnect').html(updraftlion.disconnect); console.log(err); } }); $(settings_css_prefix+'#remote-storage-holder').on('click', '#updraftvault_connect', function(e) { e.preventDefault(); $(settings_css_prefix+'#updraftvault_settings_default').slideUp(); $(settings_css_prefix+'#updraftvault_settings_connect').slideDown(); }); $(settings_css_prefix+'#remote-storage-holder').on('click', '#updraftvault_showoptions', function(e) { e.preventDefault(); $(settings_css_prefix+'#updraftvault_settings_default').slideUp(); $(settings_css_prefix+'#updraftvault_settings_showoptions').slideDown(); }); $('#remote-storage-holder').on('keyup', '.updraftplus_onedrive_folder_input', function(e) { var folder = $(this).val(); var td_container = $(this).closest('td') if (0 == folder.indexOf('https:') || 0 == folder.indexOf('http:')) { if (!td_container.find('.onedrive_folder_error').length) { td_container.append('
    '+updraftlion.onedrive_folder_url_warning+'
    '); } } else { td_container.find('.onedrive_folder_error').slideUp('lent', function() { td_container.find('.onedrive_folder_error').remove(); }); } }); $(settings_css_prefix+'#remote-storage-holder').on('click', '#updraftvault_connect_go', function(e) { $(settings_css_prefix+'#updraftvault_connect_go').html(updraftlion.connecting); updraft_send_command('vault_connect', { email: $('#updraftvault_email').val(), pass: $('#updraftvault_pass').val(), instance_id: $('#updraftvault_settings_connect').data('instance_id'), }, function(resp, status, response) { $(settings_css_prefix+'#updraftvault_connect_go').html(updraftlion.connect); if (resp.hasOwnProperty('e')) { updraft_html_modal('

    '+updraftlion.errornocolon+'

    '+resp.e+'

    ', updraftlion.disconnect, 400, 250); si (resp.hasOwnProperty('code') && resp.code == 'no_quota') { $(settings_css_prefix+'#updraftvault_settings_connect').slideUp(); $(settings_css_prefix+'#updraftvault_settings_default').slideDown(); } } sinon si (resp.hasOwnProperty('connected') && resp.connected && resp.hasOwnProperty('html')) { $(settings_css_prefix+'#updraftvault_settings_connect').slideUp(); $(settings_css_prefix+'#updraftvault_settings_connected').html(resp.html).slideDown(); } else { console.log(resp); alert(updraftlion.unexpectedresponse+' '+response); } }, { error_callback: function(response, status, error_code, resp) { $(settings_css_prefix+'#updraftvault_connect_go').html(updraftlion.connect); if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: error: "+status+" ("+error_code+")"; console.log(error_message); alert(error_message); console.log(response); } } }); return false; }); // Marquer une sauvegarde comme toujours conserver (ne pas supprimer) $('#updraft-iframe-modal').on('change', '#always_keep_this_backup', function() { var backup_key = $(this).data('backup_key'); var params = { backup_key: backup_key, always_keep: $(this).is(':checked') ? 1 : 0, }; updraft_send_command('toujours_conserver_cette_sauvegarde', params, function(resp) { if (resp.hasOwnProperty('rawbackup')) { jQuery('#updraft-iframe-modal').dialog('close'); jQuery('.updraft_existing_backups_row_'+backup_key+' .updraft_existingbackup_date').data('rawbackup', resp.rawbackup); updraft_html_modal(jQuery('.updraft_existing_backups_row_'+backup_key+' .updraft_existingbackup_date').data('rawbackup'), updraftlion.raw, 780, 500); } }); }); }); // Fin de la sauvegarde Vault // Suivant : la base de données chiffrée pluploader jQuery(function($) { try { if (typeof updraft_plupload_config2 !== 'undefined') { plupload_init(); } } catch (err) { console.log(err); } function plupload_init() { // crée l'uploader et passe la configuration ci-dessus var uploader = new plupload.Uploader(updraft_plupload_config2); // vérifie si le navigateur prend en charge le téléchargement par glisser-déposer, effectue quelques ajustements CSS si nécessaire uploader.bind('Init', function(up) { var uploaddiv = jQuery('#plupload-upload-ui2'); if (up.features.dragdrop) { uploaddiv.addClass('drag-drop'); jQuery('#drag-drop-area2') .on('dragover.wp-uploader', function() { uploaddiv.addClass('drag-over'); }) .on('dragleave.wp-uploader, drop.wp-uploader', function() { uploaddiv.removeClass('drag-over'); }); } else { uploaddiv.removeClass('drag-drop'); jQuery('#drag-drop-area2').off('.wp-uploader'); } }); uploader.init(); // un fichier a été ajouté dans la file d'attente uploader.bind('FilesAdded', function(up, files) { // var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10); plupload.each(files, function(file) { // @codingStandardsIgnoreLine if (!/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-db([0-9]+)?\.(gz\.crypt)$/i.test(file.name)) { alert(file.name+': '+updraftlion.notdba); uploader.removeFile(file); return; } // un fichier a été ajouté, vous souhaiterez peut-être mettre à jour votre DOM ici...
    ' + nom.fichier + ' (' + plupload.formatSize(0) + '/' + plupload.formatSize(fichier.taille) + ') ' + '
    '); }); up.refresh(); up.start(); }); uploader.bind('UploadProgress', function(up, fichier) { jQuery('#' + fichier.id + " .fileprogress").width(fichier.pourcentage + "%"); jQuery('#' + fichier.id + " span").html(plupload.formatSize(parseInt(fichier.size * fichier.pourcentage / 100))); }); uploader.bind('Erreur', function(up, erreur) { if ('-200' == error.code) { err_makesure = '\n'+updraftlion.makesure2; } else { err_makesure = updraftlion.makesure; } alert(updraftlion.uploaderr+' (code '+error.code+") : "+error.message+" "+err_makesure); }); // un fichier a été téléchargé uploader.bind('FileUploaded', function(up, file, response) { if (response.status == '200') { // ceci est votre réponse ajax, mettez à jour le DOM avec ou quelque chose... if (response.response.substring(0,6) == 'ERROR:') { alert(updraftlion.uploaderror+" "+response.response.substring(6)); } else if (response.response.substring(0,3) == 'OK:') { bkey = response.response.substring(3); jQuery('#' + file.id + " .fileprogress").hide(); jQuery('#' + file.id).append(updraftlion.uploaded+' '+updraftlion.followlink+' '+updraftlion.thiskey+' '+jQuery('#updraftplus_db_decrypt').val().replace(/&/g, "&").replace(//g, ">")); } else { alert(updraftlion.unknownresp+' '+response.response); } } else { alert(updraftlion.ukrespstatus+' '+response.code); } }); } jQuery('#updraft-hidethis').remove(); /* * Une fonction d'assistance de Handlebarsjs qui est utilisée pour comparer * deux valeurs si elles sont égales. Veuillez vous référer à l'exemple ci-dessous. * En supposant que "comment_status" contienne la valeur "spam". * * @param {mixed} a La première valeur à comparer * @param {mixed} b La deuxième valeur à comparer * * @example * // renvoie "Je suis un spam !", sinon "Je ne suis pas un spam !" * {{#ifeq "spam" comment_status}} * Je suis un spam ! * {{autre}} * Je ne suis pas un spam ! * {{/ifeq}} * * @return {string} */ Handlebars.registerHelper('ifeq', function (a, b, opts) { if ('string' !== typeof a && 'undefined' !== typeof a && null !== a) a = a.toString(); if ('string' !== typeof b && 'undefined' !== typeof b && null !== b) b = b.toString(); if (a === b) { return opts.fn(this); } else { return opts.inverse(this); } }); /* * Fonction d'assistance de Handlebars pour remplacer tous les caractères de mot de passe par un caractère astérisque * * @param {string} mot de passe Obligatoire. Le mot de passe en texte brut * * @return {string} */ Handlebars.registerHelper('maskPassword', function(password) { return password.replace(/./gi,'*'); }); /* * Fonction d'assistance de Handlebars qui encapsule le composant JavaScript encodeURIComponent afin qu'il puisse encoder les caractères suivants : , / ? : @ & = + $ # * * @param {string} uri Obligatoire. L'URI à encoder */ Handlebars.registerHelper('encodeURIComponent', function(uri) { return encodeURIComponent(uri); }); /** * Fonction d'assistance de Handlebars pour comparer deux valeurs à l'aide d'un opérateur spécifié * * @see https://stackoverflow.com/questions/8853396/operateur-logique-dans-un-guidon-js-si-conditionnel#answer-16315366 * * @param {mixed} v1 la première valeur à comparer * @param {mixed} v2 la deuxième valeur à comparer * * @return {booléen} vrai si la première valeur correspond à la deuxième valeur, faux sinon */ Handlebars.registerHelper('ifCond', function(v1, operator, v2, options) { switch (operator) { case '==': return (v1 == v2) ? options.fn(this) : options.inverse(this); cas '===': retour (v1 === v2) ? options.fn(this) : options.inverse(this); cas '!=': retour (v1 != v2) ? options.fn(this) : options.inverse(this); cas '!==': retour (v1 !== v2) ? options.fn(this) : options.inverse(this); cas '<': retour (v1 < v2) ? options.fn(this) : options.inverse(this); cas '<=': retour (v1 <= v2) ? options.fn(this) : options.inverse(this); cas '>': retour (v1 > v2) ? options.fn(this) : options.inverse(this); case '>=': return (v1 >= v2) ? options.fn(this) : options.inverse(this); cas '&&' : retour (v1 && v2) ? options.fn(this) : options.inverse(this); cas '||': retour (v1 || v2) ? options.fn(this) : options.inverse(this); cas 'typeof': retour (v1 === typeof v2) ? options.fn(this) : options.inverse(this); cas 'not_typeof' : retour (v1 !== typeof v2) ? options.fn(this) : options.inverse(this); par défaut : return options.inverse(this); } }); /** * Fonction d'assistance de Handlebars pour parcourir un bloc de code un nombre spécifié de fois * * @param {mixed} de la valeur de départ * @param {mixed} jusqu'à la valeur de fin où la boucle s'arrêtera * @param {mixed} incr le numéro d'incrément * * @return {mixed} le numéro de traitement actuel */ Handlebars.registerHelper('for', function(from, to, incr, block) { var accum = ''; for (var i = from; i < to; i += incr) accum += block.fn(i); return accum; }); /** * Affecter une valeur à une variable * * @param {string} name le nom de la variable * @param {mixed} val la valeur */ Handlebars.registerHelper('set_var', function(name, val, options) { if (!options.data.root) { options.data.root = {}; } options.data.root[name] = val; }); /** * Obtenir la longueur d'un tableau/objet * * @param {mixed} object l'objet */ Handlebars.registerHelper('get_length', function(object) { if ("undefined" !== typeof object && false === object instanceof Array) { return Object.keys(object).length; } else if (true === object instanceof Array) { return object.length; } else { return 0; } }); /** * Renvoie une liste séparée par des espaces de classes CSS adaptées aux lignes de la section de configuration * * @see UpdraftPlus_BackupModule::get_css_classes() * * @param {boolean} include_instance une valeur booléenne pour indiquer si nous voulons inclure l'instance_id dans la classe css, nous pouvons ne pas vouloir inclure l'instance s'il s'agit d'un élément d'interface utilisateur que nous ne voulons pas supprimer avec d'autres éléments d'interface utilisateur qui incluent un identifiant d'instance * @return {string} la liste des classes CSS */ Handlebars.registerHelper('get_template_css_classes', function(include_instance, options) { var css_classes = options.data.root.css_class + ' ' + options.data.root.method_id; if (!include_instance || !options.data.root['is_multi_options_feature_supported']) return css_classes; if (options.data.root['is_config_templates_feature_supported']) { css_classes += ' ' + options.data.root.method_id + '-' + options.data.root.instance_id; } else { css_classes += ' ' + options.data.root.method_id + '-' + options.data.root._instance_id; } return css_classes; }); /** * Affiche la valeur d'un attribut id ou name, comme s'il se trouvait actuellement dans une balise d'entrée * Cela suppose une gestion des options standardisée (c'est-à-dire que le tableau d'options est updraft_(method-id)) * * @see UpdraftPlus_BackupModule::output_settings_field_name_and_id() * * @param {string} input_attribute L'attribut d'une balise d'entrée * @param {mixed} fields les identifiants de champ * @return {string} une valeur spécifique à l'attribut d'entrée donné */ Handlebars.registerHelper('get_template_input_attribute_value', function(input_attribute, fields, options) { var instance_id = options.data.root['is_config_templates_feature_supported'] ? \ \ \

    \ \

    \ \ '; }); // Ajouter des méthodes distantes html en utilisant handlebarjs if ($('#remote-storage-holder').length) { var html = ''; var not_instance_ids = ['default', 'template_properties']; for (var method in updraftlion.remote_storage_templates) { if ('undefined' != typeof updraftlion.remote_storage_options[method] && not_instance_ids.length < Object.keys(updraftlion.remote_storage_options[method]).length) { var template = Guidon.compile(updraftlion.remote_storage_templates[méthode]); for (var partial_template_name in updraftlion.remote_storage_partial_templates[méthode]) { Guidon.registerPartial(partial_template_name, Guidon.compile(updraftlion.remote_storage_partial_templates[method][partial_template_name])); } var first_instance = true; var instance_count = 1; for (var instance_id in updraftlion.remote_storage_options[method]) { if (not_instance_ids.indexOf(instance_id) > -1) continue; var context = {}; // Initier une référence en affectant un objet vide à une variable (dans ce cas, la variable de contexte) afin qu'il puisse être utilisé comme cible de fusion d'un ou plusieurs autres objets. Contrairement aux valeurs de base (booléen, chaîne, entier, etc.), en Javascript, les objets et les tableaux sont passés par référence // copiez ce qui se trouve dans les propriétés du modèle dans le contexte en écrasant les mêmes propriétés d'objet, puis copiez ce qui se trouve dans les paramètres d'instance dans le contexte en écrasant toutes les mêmes propriétés de l'opération de fusion précédente (le cas échéant).

    '+updraftlion.saving+'
    ' }); var form_data = rassemblez_updraft_settings('chaîne'); // POST les paramètres vers le gestionnaire AJAX updraft_send_command('savesettings', { settings: form_data, updraftplus_version: updraftlion.updraftplus_version }, function(resp, status, response) { // Ajouter des mises à jour de page, etc. en fonction de la réponse updraft_handle_page_updates(resp, response); $('#updraft-wrap .fade').delay(6000).fadeOut(2000); if (window.updraft_main_tour && !window.updraft_main_tour.canceled) { window.updraft_main_tour.show('settings_saved'); check_cloud_authentication(); } else { $('html, body').animate({ scrollTop: $("#updraft-wrap").offset().top }, 1000, function() { check_cloud_authentication() }); } $.unblockUI(); }, { action: 'updraft_savesettings', error_callback: function(response, status, error_code, resp) { $.unblockUI(); if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: error: "+status+" ("+error_code+")"; console.log(error_message); alert(error_message); console.log(response); } }, nonce: updraftplus_settings_nonce}); }); $('#updraftplus-settings-export').on('clic', function() { if (updraft_settings_form_changed) { alert(updraftlion.unsaved_settings_export); } export_settings(); }); $('#updraftplus-settings-import').on('clic', function() { $.blockUI({ css: { largeur: '300px', bordure: 'none', 'border-radius': '10px', gauche: 'calc(50% - 150px)', remplissage: '20px', }, message: '

    '+updraftlion.importation+'
    ' }); var updraft_import_file_input = document.getElementById('import_settings'); if (updraft_import_file_input.files.length == 0) { alert(updraftlion.import_select_file); $.unblockUI(); return; } var updraft_import_file_file = updraft_import_file_input.files[0]; var updraft_import_file_reader = new FileReader(); updraft_import_file_reader.onload = function() { import_settings(this.result); }; updraft_import_file_reader.readAsText(updraft_import_file_file); }); function export_settings() { var form_data = rassemble_updraft_settings('object'); var date_now = new Date(); // L'attribut 'version' indique la dernière fois que le format a changé, c'est-à-dire ne pas mettre à jour ceci à moins qu'il y ait un changement de format form_data = JSON.stringify({ version: '1.12.40', epoch_date: date_now.getTime(), local_date: date_now.toLocaleString(), network_site_url: updraftlion.network_site_url, data: form_data }); // Attachez ces données à une ancre sur la page var link = document.body.appendChild(document.createElement('a')); link.setAttribute('download', updraftlion.export_settings_file_name); link.setAttribute('style', "display:none;"); link.setAttribute('href', 'data:text/json' + ';charset=UTF-8,' + encodeURIComponent(form_data)); link.click(); } function import_settings(updraft_file_result) { var parsed; essayez { parsed = ud_parse_json(updraft_file_result); } catch (e) { $.unblockUI(); jQuery('#import_settings').val(''); console.log(updraft_file_result); console.log(e); alert(updraftlion.import_invalid_json_file); return; } if (window.confirm(updraftlion.importing_data_from + ' ' + parsed['network_site_url'] + "\n" + updraftlion.exported_on + ' ' + parsed['local_date'] + "\n" + updraftlion.continue_import)) { // RECUPERER les paramètres au gestionnaire AJAX var stringified = JSON.stringify(parsed['data']); updraft_send_command('importsettings', { settings: stringified, updraftplus_version: updraftlion.updraftplus_version, }, function(decoded_response, status, response) { var resp = updraft_handle_page_updates(decoded_response); if (!resp.hasOwnProperty('saved') || resp.saved) { // Empêcher l'utilisateur d'être informé qu'il a des paramètres non enregistrés updraft_settings_form_changed = false; // Ajouter des mises à jour de page, etc. en fonction de la réponse location.replace(updraftlion.updraft_settings_url); } else { $.unblockUI(); if (resp.hasOwnProperty('error_message') && resp.error_message) { alert(resp.error_message); } } }, { action: 'updraft_importsettings', nonce: updraftplus_settings_nonce, error_callback: function(response, status, error_code, resp) { $.unblockUI(); if (typeof resp !== 'undefined' && resp.hasOwnProperty('fatal_error')) { console.error(resp.fatal_error_message); alert(resp.fatal_error_message); } else { var error_message = "updraft_send_command: error: "+status+" ("+error_code+")"; console.log(error_message); console.log(response); alert(error_message); } } }); } else { $.unblockUI(); } } /** * Récupère les paramètres actuels du DOM * * @param {string} output_format - le format de sortie; les valeurs valides sont 'string' ou 'object' * * @returns String|Object */ function rassemble_updraft_settings(output_format) { var form_data = ''; var output_format = ('undefined' === typeof output_format) ? 'string' : output_format; if ('object' == output_format) { // L'exclusion de l'entrée 'action' inutile évite de déclencher une règle mod_security très mal conçue observée sur le site d'un utilisateur form_data = $("#updraft-navtab-settings-content form input[name!='action'][name!='option_page'][name!='_wpnonce'][name!='_wp_http_referer'], #updraft-navtab-settings-content form textarea, #updraft-navtab-settings-content form select, #updraft-navtab-settings-content form input[type=checkbox]").serializeJSON({checkboxUncheckedValue: '0', useIntKeysAsArrayIndex: true}); } else { // L'exclusion de l'entrée « action » inutile évite de déclencher une règle mod_security très mal conçue observée sur le site d'un utilisateur form_data = $("#updraft-navtab-settings-content form input[name!='action'], #updraft-navtab-settings-content form textarea, #updraft-navtab-settings-content form select").serialize(); // inclure les cases à cocher non cochées. filtre utilisateur pour inclure uniquement les cases non cochées. $.each($('#updraft-navtab-settings-content form input[type=checkbox]') .filter(function(idx) { return $(this).prop('checked') == false }), function(idx, el) { // attache les noms d'éléments correspondants aux données de formulaire avec la valeur choisie. var empty_val = '0'; form_data += '&' + $(el).attr('name') + '=' + empty_val; } ); } return form_data; } /** * Method to parse the response from the backend and update the page with the returned content or display error messages if failed * * @param {array} resp - the JSON-decoded response containing information to update the settings page with * @param {string} response - the JSON-encoded response containing information to update the settings page with * * @return {object} - the decoded response (empty if decoding was not successful) */ function updraft_handle_page_updates(resp, response) { try { var messages = resp.messages; // var debug = resp.changed.updraft_debug_mode; // If backup dir is not writable, change the text, and grey out the 'Backup Now' button var backup_dir_writable = resp.backup_dir.writable; var backup_dir_message = resp.backup_dir.message; var backup_button_title = resp.backup_dir.button_title; } catch (e) { console.log(e); console.log(response); alert(updraftlion.jsonnotunderstood); $.unblockUI(); return {}; } if (resp.hasOwnProperty('changed')) { console.log("UpdraftPlus: savesettings: some values were changed after being filtered"); console.log(resp.changed); for (prop in resp.changed) { if ('object' === typeof resp.changed[prop]) { for (innerprop in resp.changed[prop]) { if (!$("[name='"+innerprop+"']").is(':checkbox')) { $("[name='"+prop+"["+innerprop+"]']").val(resp.changed[prop][innerprop]); } } } else { if (!$("[name='"+prop+"']").is(':checkbox')) { $("[name='"+prop+"']").val(resp.changed[prop]); } } } } $('#updraft_writable_mess').html(backup_dir_message); if (false == backup_dir_writable) { $('#updraft-backupnow-button').attr('disabled', 'disabled'); $('#updraft-backupnow-button').attr('title', backup_button_title); $('.backupdirrow').css('display', 'table-row'); } else { $('#updraft-backupnow-button').prop('disabled', false); $('#updraft-backupnow-button').removeAttr('title'); // $('.backupdirrow').hide(); } if (resp.hasOwnProperty('updraft_include_more_path')) { $('#backupnow_includefiles_moreoptions').html(resp.updraft_include_more_path); } if (resp.hasOwnProperty('backup_now_message')) { $('#backupnow_remote_container').html(resp.backup_now_message); } // Move from 2 to 1 $('.updraftmessage').remove(); $('#updraft_backup_started').before(resp.messages); updraft_setup_remote_storage_config_link(); console.log(resp); // $('#updraft-next-backup-inner').html(resp.scheduled); $('#updraft-next-files-backup-inner').html(resp.files_scheduled); $('#updraft-next-database-backup-inner').html(resp.database_scheduled); return resp; } /** * This function has the workings for checking if any cloud storage needs authentication * If so, these are amended to the HTML and the popup is shown to the users.

    '+jQuery(this).html()+'

    '); show_auth_modal = true; }); if (show_auth_modal) { var updraft_authenticate_modal_buttons = {}; updraft_authenticate_modal_buttons[updraftlion.cancel] = function() { jQuery(this).dialog("close"); }; jQuery('#updraft-authenticate-modal').dialog({autoOpen: true, modal: true, redimensionnable: false, déplaçable: false, resizeOnWindowResize: true, scrollWithViewport: true, resizeAccordingToViewport: true, useContentSize: false, ouvrir: function(événement, interface utilisateur) { $(this).dialog('option', 'largeur', 860); $(this).dialog('option', 'hauteur', 260); }, boutons: updraft_authenticate_modal_buttons}).dialog('ouvrir'); } } $('.udp-replace-with-iframe--js').on('click', function(e) { e.preventDefault(); var url = $(this).prop('href'); var iframe = $('