(function( $ ) { // ---------------------------------- // Bulk Awards/Revokes Tool // ---------------------------------- // On change requirement type $('#bulk-awards, #bulk-revokes').on('change', '#bulk_award_requirements_type, #bulk_revoke_requirements_type', function() { var target = $(this).closest('.cmb-row').next().find('select[data-post-type]'); var post_type = $(this).val(); if( post_type !== '' ) { target.val('').change(); target.data('post-type', post_type) } }); function gamipress_run_bulk_tool( button, loop ) { // Initialize loop if( loop === undefined ) loop = 0; var response_id = button.attr('id').replace('_button', '_response'); var active_tab = button.closest('.cmb-tabs-wrap').find('.cmb-tab.active'); var action = ( button.attr('id').indexOf('bulk_award_') !== -1 ? 'bulk_award' : 'bulk_revoke' ); var data; if( action === 'bulk_award' ) { data = { action: 'gamipress_bulk_awards_tool', nonce: gamipress_admin_tools.nonce, bulk_award: button.attr('id').replace('bulk_award_', '').replace('_button', ''), loop: loop }; } else if( action === 'bulk_revoke' ) { data = { action: 'gamipress_bulk_revokes_tool', nonce: gamipress_admin_tools.nonce, bulk_revoke: button.attr('id').replace('bulk_revoke_', '').replace('_button', ''), loop: loop }; } // Loop all fields to build the request data $(active_tab.data('fields')).find('input, select, textarea').each(function() { if( $(this).attr('type') === 'checkbox' ) { // Checkboxes are sent just when checked if( $(this).prop('checked') ) data[$(this).attr('name')] = $(this).val(); } else { data[$(this).attr('name')] = $(this).val(); } }); // Disable the button button.prop('disabled', true); if( ! $('#' + response_id).length ) button.parent().append(''); // Show the spinner if( loop === 0 ) $('#' + response_id).html(''); $.post( ajaxurl, data, function( response ) { // Run again utility if( response.data.run_again !== undefined && response.data.run_again && response.success === true ) { // Keep the spinner and add the server response $('#' + response_id).html( '' + '' + ( response.data.message !== undefined ? response.data.message : response.data ) + '' ); loop++; // Run again passing the next loop index gamipress_run_bulk_tool( button, loop ); return; } // Update response color text if( response.success === false ) $('#' + response_id).css({color:'#a00'}); else $('#' + response_id).css({color:''}); // Add the server response $('#' + response_id).html(response.data); // Increase loop count if( response.success !== false ) loop++; // Enable the button button.prop('disabled', false); } ).fail(function() { $('#' + response_id).html('The server has returned an internal error.'); // Enable the button button.prop('disabled', false); }); } $('#bulk_award_points_button, #bulk_award_achievements_button, #bulk_award_rank_button, #bulk_award_requirements_button, ' + '#bulk_revoke_points_button, #bulk_revoke_achievements_button, #bulk_revoke_rank_button, #bulk_revoke_requirements_button').on('click', function(e) { e.preventDefault(); gamipress_run_bulk_tool( $(this) ); }); // ---------------------------------- // Recount Activity Tool // ---------------------------------- function gamipress_run_recount_activity_tool( loop ) { if( loop === undefined ) loop = 0; var button = $("#recount_activity"); var activity = $('#activity_to_recount').val(); var limit = $('#entries_per_loop').val(); $.post( ajaxurl, { action: 'gamipress_recount_activity_tool', nonce: gamipress_admin_tools.nonce, activity: activity, limit: limit, loop: loop // Used on run again utility to let know to the tool in which loop we are now }, function( response ) { // Run again utility if( response.data.run_again !== undefined && response.data.run_again && response.success === true ) { var running_selector = '#recount-activity-response #running-' + activity; if( ! $(running_selector).length ) $('#recount-activity-response').append( '' ); $(running_selector).html( ( response.data.message !== undefined ? response.data.message : response.data ) ); if( response.data.log !== undefined && response.data.log.length ) { if( ! $('#recount-activity-log').length ) $( '
' + '

' + 'Show log' + ' | ' + 'Download log' + '

' + '' + '
' ).insertAfter( $('#recount-activity-response') ); $('#recount-activity-log-content').append( response.data.log ); } loop++; // Run again passing the next loop index gamipress_run_recount_activity_tool( loop ); return; } $('#recount-activity-notice').remove(); if( response.success === false ) $('#recount-activity-response').css({color:'#a00'}); else $('#recount-activity-response').css({color:''}); $('#recount-activity-response').html(response.data); // Enable the button and the activity select button.prop('disabled', false); $('#activity_to_recount').prop('disabled', false); } ).fail(function() { $('#recount-activity-notice').remove(); $('#recount-activity-response').html('The server has returned an internal error.'); if( $('#recount-activity-log').length ) $('#recount-activity-log-content').append('The server has returned an internal error.'); // Enable the button and the activity select button.prop('disabled', false); $('#activity_to_recount').prop('disabled', false); }); } $("#recount_activity").on('click', function(e) { e.preventDefault(); $('#recount-activity-warning').remove(); if( $('#activity_to_recount').val() === '' ) { $(this).parent().prepend('

You need to choose an activity to recount.

'); return false; } var $this = $(this); // Disable the button and the activity select $this.prop('disabled', true); $('#activity_to_recount').prop('disabled', true); // Reset the activity log if( $('#recount-activity-log').length ) $('#recount-activity-log').remove(); // Show a notice to let know to the user that process could take a while $this.parent().prepend('

' + gamipress_admin_tools.recount_activity_notice + '

'); if( ! $('#recount-activity-response').length ) $this.parent().append(''); // Show the spinner $('#recount-activity-response').html(''); // Make the ajax request gamipress_run_recount_activity_tool(); }); // Activity log toggle $('body').on('click', '#recount-activity-log-toggle', function(e) { e.preventDefault(); $('#recount-activity-log-content').toggle(); if( $(this).text() === 'Show log' ) { $(this).text( 'Hide log' ); } else { $(this).text( 'Show log' ); } }); // Download activity log $('body').on('click', '#recount-activity-log-download', function(e) { e.preventDefault(); var activity = $('#activity_to_recount').val(); gamipress_download_file( $('#recount-activity-log-content').text(), 'gamipress-activity-recount-' + activity, 'log' ); }); // ---------------------------------- // Logs Clean Up Tool // ---------------------------------- $('#logs_clean_up_count, #logs_clean_up').on('click', function(e) { e.preventDefault(); var $this = $(this); var form = $this.closest('#cmb2-metabox-logs-clean-up'); var id = $this.attr('id'); var response_id = 'logs-clean-up-response'; var log_types = []; var from = form.find('input[name="from"]').val(); var to = form.find('input[name="to"]').val(); var error = ''; form.find('input[name="logs_type[]"]:checked').each(function() { log_types.push( $(this).val() ) }); if( log_types.length === 0 ) error = 'Please, choose at least 1 log type.'; if( ! $('#' + response_id).length ) $this.parent().append(''); // Remove error messages $('#' + response_id).html(''); // If there is any error, show it to the user if( error !== '' ) { $('#' + response_id).css({color:'#a00'}); $('#' + response_id).html(error); return false; } // Disable both buttons $('#logs_clean_up_count, #logs_clean_up').prop('disabled', true); // Show the spinner $('#' + response_id).html(''); $.post( ajaxurl, { action: 'gamipress_' + id + '_tool', nonce: gamipress_admin_tools.nonce, log_types: log_types, from: from, to: to }, function( response ) { if( ! $('#' + response_id).length ) $this.parent().append(''); // Update response color text if( response.success === false ) $('#' + response_id).css({color:'#a00'}); else $('#' + response_id).css({color:''}); $('#' + response_id).html( ( response.data.message !== undefined ? response.data.message : response.data ) ); // Enable the buttons $('#logs_clean_up_count, #logs_clean_up').prop('disabled', false); } ).fail(function() { $('#' + response_id).html('The server has returned an internal error.'); // Enable the buttons $('#logs_clean_up_count, #logs_clean_up').prop('disabled', false); }); }); // ---------------------------------- // Reset Data Tool // ---------------------------------- var reset_data_dialog = $("#reset-data-dialog"); reset_data_dialog.dialog({ dialogClass : 'wp-dialog', modal : true, autoOpen : false, closeOnEscape : true, draggable : false, width : 500, buttons : [ { text: "Yes, delete it permanently", class: "button-primary reset-data-button", click: function() { $('.reset-data-button').prop('disabled', true); if( ! $('#reset-data-response').length ) $('.reset-data-button').parent().parent().prepend(''); // Show the spinner $('#reset-data-response').html(''); var items = []; $('.cmb2-id-data-to-reset input:checked').each(function() { items.push($(this).val()); }); $.post( ajaxurl, { action: 'gamipress_reset_data_tool', nonce: gamipress_admin_tools.nonce, items: items }, function( response ) { if( response.success === false ) $('#reset-data-response').css({color:'#a00'}); else $('#reset-data-response').css({color:''}); $('#reset-data-response').html(response.data); if( response.success === true ) { setTimeout(function() { $('.cmb2-id-data-to-reset input:checked').each(function() { $(this).prop( 'checked', false ); }); reset_data_dialog.dialog( "close" ); }, 5000); } $('.reset-data-button').prop('disabled', false); } ); } }, { text: "Cancel", class: "cancel-reset-data-button", click: function() { $( this ).dialog( "close" ); } } ] }); $("#reset_data").on('click', function(e) { e.preventDefault(); $('#reset-data-warning').remove(); var checked_options = $('.cmb2-id-data-to-reset input:checked'); if( checked_options.length ) { var reminder_html = ''; checked_options.each(function() { reminder_html += '
  • ' + $(this).next().text() + '
  • ' }); // Add a reminder with data to be removed $('#reset-data-reminder').html(''); // Open our dialog reset_data_dialog.dialog('open'); // Remove the initial jQuery UI Dialog auto focus $('.ui-dialog :button').blur(); } else { $(this).parent().prepend('

    You need to choose at least one option.

    '); } }); $('.cmb2-id-data-to-reset').on('change', 'input', function() { $('#reset-data-warning').remove(); var checked_option = $(this).val(); if( checked_option === 'achievement_types' ) { $('.cmb2-id-data-to-reset input[value="achievements"], .cmb2-id-data-to-reset input[value="steps"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option === 'achievements' ) { $('.cmb2-id-data-to-reset input[value="steps"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option === 'points_types' ) { $('.cmb2-id-data-to-reset input[value="points_awards"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.cmb2-id-data-to-reset input[value="points_deducts"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option === 'rank_types' ) { $('.cmb2-id-data-to-reset input[value="ranks"], .cmb2-id-data-to-reset input[value="rank_requirements"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option === 'ranks' ) { $('.cmb2-id-data-to-reset input[value="rank_requirements"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option === 'earnings' ) { $('.cmb2-id-data-to-reset input[value="earned_points"], .cmb2-id-data-to-reset input[value="earned_achievements"], .cmb2-id-data-to-reset input[value="earned_ranks"]').prop( 'checked', $(this).prop( 'checked' ) ); } }); // ---------------------------------- // Export Achievements, Points and Ranks Tool // ---------------------------------- $('#export_achievements, #export_points, #export_ranks, #export_earnings').on('click', function(e) { e.preventDefault(); var $this = $(this); var type; var error = ''; switch( $this.attr('id') ) { case 'export_achievements': // Achievements export type = 'achievements'; // Check achievement types if( ! $('input[name="export_achievements_achievement_types[]"]:checked').length ) { error = 'You need to choose at least 1 achievement type to export.'; } break; case 'export_points': // Points export type = 'points'; // Check points types if( ! $('input[name="export_points_points_types[]"]:checked').length ) { error = 'You need to choose at least 1 points type to export.'; } break; case 'export_ranks': // Ranks export type = 'ranks'; // Check rank types if( ! $('input[name="export_ranks_rank_types[]"]:checked').length ) { error = 'You need to choose at least 1 rank type to export.'; } break; case 'export_earnings': // Ranks export type = 'earnings'; // Check rank types if( ! $('input[name="export_earnings_types[]"]:checked').length ) { error = 'You need to choose at least 1 type to export.'; } break; } // Remove error messages $('#export-' + type + '-warning').remove(); // If there is any error, show it to the user if( error !== '' ) { $this.parent().prepend('

    ' + error + '

    '); return false; } // Reset the data to export to_export = []; gamipress_run_export_tool( type ); }); var to_export = []; // Function to handle the export process function gamipress_run_export_tool( type, loop ) { var button_element = $('#export_' + type ); var response_element = $('#export-' + type + '-response'); var data; if( loop === undefined ) loop = 0; // Disable the export button button_element.prop('disabled', true); // Check if response element exists if( ! response_element.length ) { button_element.parent().append(''); response_element = $('#export-' + type + '-response'); } // Show the spinner if( loop === 0 ) response_element.html(''); // Setup request data per type switch( type ) { case 'achievements': // Achievements data var achievement_types = []; $('input[name="export_achievements_achievement_types[]"]:checked').each(function() { achievement_types.push( $(this).val() ); }); data = { action: 'gamipress_import_export_achievements_tool_export', nonce: gamipress_admin_tools.nonce, achievement_types: achievement_types, user_field: $('#export_achievements_user_field').val(), achievement_field: $('#export_achievements_achievement_field').val(), loop: loop }; break; case 'points': // Points data var points_types = []; $('input[name="export_points_points_types[]"]:checked').each(function() { points_types.push( $(this).val() ); }); data = { action: 'gamipress_import_export_points_tool_export', nonce: gamipress_admin_tools.nonce, points_types: points_types, user_field: $('#export_points_user_field').val(), loop: loop }; break; case 'ranks': // Ranks data var rank_types = []; $('input[name="export_ranks_rank_types[]"]:checked').each(function() { rank_types.push( $(this).val() ); }); data = { action: 'gamipress_import_export_ranks_tool_export', nonce: gamipress_admin_tools.nonce, rank_types: rank_types, user_field: $('#export_ranks_user_field').val(), rank_field: $('#export_ranks_rank_field').val(), loop: loop }; break; case 'earnings': // Ranks data var types = []; $('input[name="export_earnings_types[]"]:checked').each(function() { types.push( $(this).val() ); }); data = { action: 'gamipress_import_export_earnings_tool_export', nonce: gamipress_admin_tools.nonce, types: types, user_field: $('#export_earnings_user_field').val(), post_field: $('#export_earnings_post_field').val(), from: $('#export_earnings_from').val(), to: $('#export_earnings_to').val(), loop: loop }; break; } $.post( ajaxurl, data, function( response ) { if( response.data.items !== undefined ) { // Concat received items to_export = to_export.concat( response.data.items ); } // Run again utility if( response.data.run_again !== undefined && response.data.run_again && response.success === true ) { response_element.html( ( response.data.message !== undefined ? response.data.message : response.data ) ); loop++; // Run again passing the next loop index gamipress_run_export_tool( type, loop ); return; } if( response.success === false ) response_element.css({color:'#a00'}); else response_element.css({color:''}); response_element.html( ( response.data.message !== undefined ? response.data.message : response.data ) ); // Enable the export button button_element.prop('disabled', false); if( to_export.length ) { // Download the CSV with the data gamipress_download_csv( to_export, 'gamipress-user-' + type + '-export' ); } } ).fail(function() { response_element.html('The server has returned an internal error.'); // Enable the export button button_element.prop('disabled', false); }); } // ---------------------------------- // Import Achievements, Points and Ranks Tool // ---------------------------------- $('#import_achievements, #import_points, #import_ranks').on('click', function(e) { e.preventDefault(); var $this = $(this); var type; switch( $this.attr('id') ) { case 'import_achievements': // Achievements import type = 'achievements'; break; case 'import_points': // Points import type = 'points'; break; case 'import_ranks': // Ranks import type = 'ranks'; break; } // Remove error messages $('#import-' + type + '-warning').remove(); // Remove old responses $('#import-' + type + '-response').remove(); // Check if CSV file has been chosen if( $('#import_' + type + '_file')[0].files[0] === undefined ) { $this.parent().prepend('

    You need to choose a CSV file to import.

    '); return false; } // Setup the form data to send var form_data = new FormData(); form_data.append( 'action', 'gamipress_import_export_' + type + '_tool_import' ); form_data.append( 'nonce', gamipress_admin_tools.nonce ); form_data.append( 'file', $('#import_' + type + '_file')[0].files[0] ); // Disable the button $this.prop('disabled', true); if( ! $('#import-' + type + '-response').length ) $this.parent().prepend('

    '); // Show the spinner $('#import-' + type + '-response').html(''); $.ajax({ url: ajaxurl, method: 'post', cache: false, contentType: false, processData: false, data: form_data, success: function(response) { // Set a red color to the response to let user known that something is going wrong if( response.success === false ) $('#import-' + type + '-response').css({color:'#a00'}); else $('#import-' + type + '-response').css({color:''}); // Update the response content $('#import-' + type + '-response').html( response.data ); // Re-enable the button $this.prop('disabled', false); } }); }); // ---------------------------------- // Download Achievements, Points and Ranks CSV Template // ---------------------------------- $('#download_achievements_csv_template, #download_points_csv_template, #download_ranks_csv_template').on('click', function(e) { e.preventDefault(); var type, sample_data; switch( $(this).attr('id') ) { case 'download_achievements_csv_template': // Achievements sample data type = 'achievements'; sample_data = [ { user: 'User (ID, username or email)', achievements: 'Achievements (Comma-separated list of IDs, titles and/or slugs)', notes: 'Notes (This column won\'t be processed by the tool)', }, { user: gamipress_admin_tools.user_id, achievements: '1,2,3', notes: 'Awarding by user ID and passing the achievements IDs', }, { user: gamipress_admin_tools.user_name, achievements: 'Test Badge,Custom Quest,Super Achievement', notes: 'Awarding by username and passing the achievements titles', }, { user: gamipress_admin_tools.user_email, achievements: 'test-badge,custom-quest,super-achievement', notes: 'Awarding by email and passing the achievements slugs', }, { user: gamipress_admin_tools.user_id, achievements: '-1,-Test Badge,-test-badge', notes: 'Adding a negative sign will revoke the achievements', }, ]; break; case 'download_points_csv_template': // Points sample data type = 'points'; sample_data = [ { user: 'User (ID, username or email)', points: 'Points', points_type: 'Points Type (slug)', log: 'Log Description (Optional)', notes: 'Notes (This column won\'t be processed by the tool)', }, { user: gamipress_admin_tools.user_id, points: '100', points_type: 'credits', log: '100 credits awarded through the user\'s ID', notes: 'Awarding points by user ID', }, { user: gamipress_admin_tools.user_name, points: '1000', points_type: 'coins', log: '1,000 coins awarded through the user\'s username', notes: 'Awarding points by username', }, { user: gamipress_admin_tools.user_email, points: '50', points_type: 'gems', log: '50 gems awarded through the user\'s email', notes: 'Awarding points by email', }, { user: gamipress_admin_tools.user_email, points: '-50', points_type: 'gems', log: '50 gems deducted through the user\'s email', notes: 'Adding a negative sign will deduct the points', }, ]; break; case 'download_ranks_csv_template': // Ranks sample data type = 'ranks'; sample_data = [ { user: 'User (ID, username or email)', rank: 'Rank (ID, title or slug of rank to assign to the user)', notes: 'Notes (This column won\'t be processed by the tool)', }, { user: gamipress_admin_tools.user_id, rank: '1', notes: 'Setting rank by user ID and passing the rank ID', }, { user: gamipress_admin_tools.user_name, rank: 'Test Rank', notes: 'Setting rank by username and passing the rank title', }, { user: gamipress_admin_tools.user_email, rank: 'test-rank', notes: 'Setting rank by email and passing the rank slug', }, { user: gamipress_admin_tools.user_id, rank: '-1', notes: 'Adding a negative sign will revoke the rank to the user and will try to assign the previous one (following the priority order)', }, ]; break; } if( Array.isArray( sample_data ) ) { gamipress_download_csv( sample_data, 'gamipress-' + type + '-csv-template' ); } }); // ---------------------------------- // Export Setup Tool // ---------------------------------- $('.gamipress-all-types-multicheck').on('change', 'input', function() { var box = $(this).closest('.cmb2-metabox').attr('id'); if( box === 'cmb2-metabox-import-export-setup' ) { $('#export-setup-warning').remove(); } else if( box === 'cmb2-metabox-import-export-earnings' ) { $('#export-earnings-warning').remove(); } var checked_option = $(this).val(); var type = ''; if( checked_option === 'all-points-types' ) { $('.gamipress-all-types-multicheck input[value$="-points-type"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value$="-points-awards"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value$="-points-deducts"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option.endsWith( '-points-type' ) ) { type = checked_option.replace( '-points-type', '' ); $('.gamipress-all-types-multicheck input[value="' + type + '-points-awards"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value="' + type + '-points-deducts"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option === 'all-achievement-types' ) { $('.gamipress-all-types-multicheck input[value$="-achievement-type"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value$="-achievements"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value$="-steps"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option.endsWith( '-achievement-type' ) ) { type = checked_option.replace( '-achievement-type', '' ); $('.gamipress-all-types-multicheck input[value="' + type + '-achievements"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value="' + type + '-steps"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option.endsWith( '-achievements' ) ) { type = checked_option.replace( '-achievements', '' ); $('.gamipress-all-types-multicheck input[value="' + type + '-steps"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option === 'all-rank-types' ) { $('.gamipress-all-types-multicheck input[value$="-rank-type"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value$="-ranks"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value$="-rank-requirements"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option.endsWith( '-rank-type' ) ) { type = checked_option.replace( '-rank-type', '' ); $('.gamipress-all-types-multicheck input[value="' + type + '-ranks"]').prop( 'checked', $(this).prop( 'checked' ) ); $('.gamipress-all-types-multicheck input[value="' + type + '-rank-requirements"]').prop( 'checked', $(this).prop( 'checked' ) ); } else if( checked_option.endsWith( '-ranks' ) ) { type = checked_option.replace( '-ranks', '' ); $('.gamipress-all-types-multicheck input[value="' + type + '-rank-requirements"]').prop( 'checked', $(this).prop( 'checked' ) ); } }); $("#export_setup").on('click', function(e) { e.preventDefault(); $('#export-setup-warning').remove(); var checked_options = $('.cmb2-id-export-setup-options input:checked'); if( checked_options.length === 0 ) { $(this).parent().prepend('

    You need to choose at least one option to export.

    '); return; } $('.export-setup-button').prop('disabled', true); if( ! $('#export-setup-response').length ) $('.export-setup-button').parent().parent().prepend(''); // Show the spinner $('#export-setup-response').html(''); var items = []; $('.cmb2-id-export-setup-options input:checked').each(function() { items.push($(this).val()); }); $.post( ajaxurl, { action: 'gamipress_export_setup_tool', nonce: gamipress_admin_tools.nonce, items: items }, function( response ) { if( response.success === false ) $('#export-setup-response').css({color:'#a00'}); else $('#export-setup-response').css({color:''}); $('#export-setup-response').html( ( response.data.message !== undefined ? response.data.message : response.data ) ); if( response.success === true ) { gamipress_download_file( response.data.setup, 'setup-export', 'txt', 'text/plain' ); } $('.export-setup-button').prop('disabled', false); } ); }); // ---------------------------------- // Import Setup Tool // ---------------------------------- $('#import_setup').on('click', function(e) { e.preventDefault(); $('#import-setup-warning').remove(); if( $('#import_setup_file')[0].files[0] === undefined ) { $(this).parent().prepend('

    You need to choose a configuration file to import.

    '); return false; } var $this = $(this); var form_data = new FormData(); form_data.append( 'action', 'gamipress_import_setup_tool' ); form_data.append( 'nonce', gamipress_admin_tools.nonce ); form_data.append( 'file', $('#import_setup_file')[0].files[0] ); // Disable the button $this.prop('disabled', true); if( ! $('#import-setup-response').length ) $this.parent().append(''); // Show the spinner $('#import-setup-response').html(''); $.ajax({ url: ajaxurl, method: 'post', cache: false, contentType: false, processData: false, data: form_data, success: function(response) { if( response.success === false ) $('#import-setup-response').css({color:'#a00'}); else $('#import-setup-response').css({color:''}); $('#import-setup-response').html(response.data); $this.prop('disabled', false); } }); }); // ---------------------------------- // Import Settings Tool // ---------------------------------- $('#import_settings').on('click', function(e) { e.preventDefault(); $('#import-settings-warning').remove(); if( $('#import_settings_file')[0].files[0] === undefined ) { $(this).parent().prepend('

    You need to choose a configuration file to import.

    '); return false; } var $this = $(this); var form_data = new FormData(); form_data.append( 'action', 'gamipress_import_settings_tool' ); form_data.append( 'nonce', gamipress_admin_tools.nonce ); form_data.append( 'file', $('#import_settings_file')[0].files[0] ); // Disable the button $this.prop('disabled', true); if( ! $('#import-settings-response').length ) $this.parent().append(''); // Show the spinner $('#import-settings-response').html(''); $.ajax({ url: ajaxurl, method: 'post', cache: false, contentType: false, processData: false, data: form_data, success: function(response) { if( response.success === false ) $('#import-settings-response').css({color:'#a00'}); else $('#import-settings-response').css({color:''}); $('#import-settings-response').html(response.data); $this.prop('disabled', false); } }); }); })( jQuery );