%PDF- %PDF-
Direktori : /www/pinecnj.cz/old/www.pinecnj.cz/wp-content/plugins/wp-optimize/js/ |
Current File : //www/pinecnj.cz/old/www.pinecnj.cz/wp-content/plugins/wp-optimize/js/wpadmin.js |
/** * Send an action via admin-ajax.php * * @param {string} action - the action to send * @param * data - data to send * @param Callback [callback] - will be called with the results * @param {boolean} [json_parse=true] - JSON parse the results */ var wp_optimize_send_command_admin_ajax = function(action, data, callback, json_parse) { json_parse = ('undefined' === typeof json_parse) ? true : json_parse; var ajax_data = { action: 'wp_optimize_ajax', subaction: action, nonce: wp_optimize_ajax_nonce, data: data }; jQuery.post(ajaxurl, ajax_data, function(response) { if (json_parse) { try { var resp = JSON.parse(response); } catch (e) { console.log(e); console.log(response); alert(wpoptimize.error_unexpected_response); return; } if ('undefined' !== typeof callback) callback(resp); } else { if ('undefined' !== typeof callback) callback(response); } }); } jQuery(document).ready(function($) { WP_Optimize = WP_Optimize(wp_optimize_send_command_admin_ajax); }); /** * Function for sending communications * * @callable sendcommandCallable * @param {string} action - the action to send * @param * data - data to send * @param Callback [callback] - will be called with the results * @param {boolean} [json_parse=true] - JSON parse the results */ /** * Main WP_Optimize * * @param {sendcommandCallable} send_command - function for sending remote communications via */ var WP_Optimize = function(send_command) { var $ = jQuery; var debug_level = 0; var queue = new Updraft_Queue(); /** * Either display normally, or grey-out, the scheduling options, depending on whether any schedule has been selected */ function enable_or_disable_schedule_options() { var schedule_enabled = $('#enable-schedule').is(':checked'); if (schedule_enabled) { $('#wp-optimize-auto-options').css('opacity', '1'); //.find('input').prop('disabled', false); } else { $('#wp-optimize-auto-options').css('opacity', '0.5') //.find('input').prop('disabled', true); } } enable_or_disable_schedule_options(); $('#enable-schedule').change(function() { enable_or_disable_schedule_options(); }); /** * Temporarily show a dashboard notice, and then remove it. The HTML will be prepended to the .wrap.wp-optimize-wrap element. * * @param {string} html_contents - HTML to display * @param {string} where - CSS selector of where to prepend the HTML to * @param {number} [delay=15] - the number of seconds to wait before removing the message */ function temporarily_display_notice(html_contents, where, delay) { where = ('undefined' === typeof where) ? '#wp-optimize-wrap' : where; delay = ('undefined' === typeof delay) ? 15 : delay; $(html_contents).hide().prependTo(where).slideDown('slow').delay(delay*1000).slideUp('slow', function() { $(this).remove(); });; } /** * Send a request to disable or enable comments or trackbacks * * @param (string) type - either "comments" or "trackbacks" * @param (boolean) enable - whether to enable, or, to disable */ function enable_or_disable_feature(type, enable) { var data = { type: type, enable: enable ? 1 : 0 }; $('#'+type+'_spinner').show(); send_command('enable_or_disable_feature', data, function(resp) { $('#'+type+'_spinner').hide(); if (resp && resp.hasOwnProperty('output')) { for (var i = 0, len = resp.output.length; i < len; i++) { var new_html = '<div class="updated">'+resp.output[i]+'</div>'; temporarily_display_notice(new_html, '#actions-results-area'); } } }); } $('#wp-optimize-disable-enable-trackbacks-enable').click(function() { enable_or_disable_feature('trackbacks', true); }); $('#wp-optimize-disable-enable-trackbacks-disable').click(function() { enable_or_disable_feature('trackbacks', false); }); $('#wp-optimize-disable-enable-comments-enable').click(function() { enable_or_disable_feature('comments', true); }); $('#wp-optimize-disable-enable-comments-disable').click(function() { enable_or_disable_feature('comments', false); }); $('#wp-optimize-nav-tab-wrapper .nav-tab').click(function(e) { var clicked_tab_id = $(this).attr('id'); if (!clicked_tab_id) { return; } if ('wp-optimize-nav-tab-' != clicked_tab_id.substring(0, 20)) { return; } var clicked_tab_id = clicked_tab_id.substring(20); e.preventDefault(); $('#wp-optimize-nav-tab-wrapper .nav-tab:not(#wp-optimize-nav-tab-'+clicked_tab_id+')').removeClass('nav-tab-active'); $(this).addClass('nav-tab-active'); $('#wp-optimize-wrap .wp-optimize-nav-tab-contents:not(#wp-optimize-nav-tab-contents-'+clicked_tab_id+')').hide(); $('#wp-optimize-nav-tab-contents-'+clicked_tab_id).show(); }); /** * Gathers the settings from the settings tab * * @returns (string) - serialized settings */ function gather_settings() { // Excluding the unnecessary 'action' input avoids triggering a very mis-conceived mod_security rule seen on one user's site var form_data = $("#wp-optimize-nav-tab-contents-settings form input[name!='action'], #wp-optimize-nav-tab-contents-settings form textarea, #wp-optimize-nav-tab-contents-settings form select").serialize(); //include unchecked checkboxes. user filter to only include unchecked boxes. $.each($('#wp-optimize-nav-tab-contents-settings form input[type=checkbox]') .filter(function(idx){ return $(this).prop('checked') == false }), function(idx, el){ //attach matched element names to the form_data with chosen value. var empty_val = '0'; form_data += '&' + $(el).attr('name') + '=' + empty_val; } ); return form_data; } /** * Proceses the queue */ function process_queue() { if (!queue.get_lock()) { if (debug_level > 0) { console.log("WP-Optimize: process_queue(): queue is currently locked - exiting"); } return; } if (debug_level > 0) { console.log("WP-Optimize: process_queue(): got queue lock"); } var id = queue.peek(); //check to see if an object has been returned if (typeof id == 'object') { data = id; id = id.optimization_id; } else { data = {}; } if ('undefined' === typeof id) { if (debug_level > 0) console.log("WP-Optimize: process_queue(): queue is apparently empty - exiting"); queue.unlock(); return; } if (debug_level > 0) console.log("WP-Optimize: process_queue(): processing item: "+id); queue.dequeue(); send_command('do_optimization', { optimization_id: id, data: data }, function(response) { $('#optimization_spinner_'+id).hide(); $('#optimization_checkbox_'+id).show(); $('.optimization_button_'+id).prop('disabled', false); if (response) { var total_output = ''; for (var i = 0, len = response.errors.length; i < len; i++) { total_output += '<span class="error">'+response.errors[i]+'</span><br>'; } for (var i = 0, len = response.messages.length; i < len; i++) { total_output += response.errors[i]+'<br>'; } for (var i = 0, len = response.result.output.length; i < len; i++) { total_output += response.result.output[i]+'<br>'; } $('#optimization_info_'+id).html(total_output); if (response.hasOwnProperty('status_box_contents')) { $('#wp_optimize_status_box').css('opacity', '1').find('.inside').html(response.status_box_contents); } if (response.hasOwnProperty('table_list')) { $('#wpoptimize_table_list tbody').replaceWith(response.table_list); } if (response.hasOwnProperty('total_size')) { $('#optimize_current_db_size').html(response.total_size); } //Status check if optimizing tables if (id == 'optimizetables' && data.optimization_table) { if(queue.is_empty()){ $('#optimization_spinner_'+id).hide(); $('#optimization_checkbox_'+id).show(); $('.optimization_button_'+id).prop('disabled', false); $('#optimization_info_'+id).html(wpoptimize.optimization_complete); } else { $('#optimization_checkbox_'+id).hide(); $('#optimization_spinner_'+id).show(); $('.optimization_button_'+id).prop('disabled', true); } } } setTimeout(function() { queue.unlock(); process_queue(); }, 10); }); } /** * Runs a specified optimization, displaying the progress and results in the optimization's row * * @param {string} id - The optimization ID */ function do_optimization(id) { var $optimization_row = $('#wp-optimize-nav-tab-contents-optimize .wp-optimize-settings-'+id); if (!$optimization_row) { console.log("do_optimization: row corresponding to this optimization ("+id+") not found"); } $('#optimization_checkbox_'+id).hide(); $('#optimization_spinner_'+id).show(); $('.optimization_button_'+id).prop('disabled', true); $('#optimization_info_'+id).html('...'); //check if it is DB optimize if ('optimizetables' == id) { var optimization_tables = $('#wpoptimize_table_list #the-list tr'); //check if there are any tables to be optimized $(optimization_tables).each(function(index) { //get information from each td var $table_information = $(this).find('td'); //get table type information table_type = $table_information.eq(5).text(); table = $table_information.eq(1).text(); optimizable = $table_information.eq(5).data('optimizable'); //make sure the table isnt blank if ('' != table){ //check if table is InnboDB as we do not want to optimize it if ('1' == optimizable){ var data = { optimization_id: id, optimization_table: $table_information.eq(1).text(), optimization_table_type: table_type, }; queue.enqueue(data); } } }); } else { //for all other options queue.enqueue(id); } process_queue(); } $('#wp-optimize-nav-tab-contents-optimize').on('click', 'button.wp-optimize-settings-optimization-run-button', function() { var optimization_id = $(this).closest('.wp-optimize-settings').data('optimization_id'); if (!optimization_id) { console.log("Optimization ID corresponding to pressed button not found"); return; } do_optimization(optimization_id); }); $('#wp-optimize-nav-tab-contents-optimize').on('click', '#wp-optimize', function(e) { e.preventDefault(); var auto_backup = false; if ($('#enable-auto-backup').is(":checked")) { auto_backup = true; } //save the click option send_command('save_auto_backup_option', {'auto_backup': auto_backup}); //only run the backup if tick box is checked if (auto_backup == true && typeof updraft_backupnow_inpage_go === 'function') { updraft_backupnow_inpage_go(function () { //close the backup dialogue $('#updraft-backupnow-inpage-modal').dialog('close'); //run optimizations run_optimization(); }, '', 'autobackup', null, 1, 0, 0); } else { //run optimizations run_optimization(); } }); /** * Running the optimizations for the selected options * @return {[type]} optimizations */ function run_optimization() { $optimizations = $('#optimizations_list .optimization_checkbox:checked'); $optimizations.sort(function(a, b) { // convert to IDs a = $(a).closest('.wp-optimize-settings').data('optimization_run_sort_order'); b = $(b).closest('.wp-optimize-settings').data('optimization_run_sort_order'); if (a > b) { return 1; } else if (a < b) { return -1; } else { return 0; } }); var optimization_options = {}; $optimizations.each(function(index) { var optimization_id = $(this).closest('.wp-optimize-settings').data('optimization_id'); if (!optimization_id) { console.log("Optimization ID corresponding to pressed button not found"); return; } // An empty object - in future, options may be implemented optimization_options[optimization_id] = { active: 1 }; do_optimization(optimization_id); }); send_command('save_manual_run_optimization_options', optimization_options); } $('#wp_optimize_table_list_refresh').click(function() { $('#wpoptimize_table_list tbody').css('opacity', '0.5'); send_command('get_table_list', false, function(response) { $('#wpoptimize_table_list tbody').css('opacity', '1'); if (response.hasOwnProperty('table_list')) { $('#wpoptimize_table_list tbody').replaceWith(response.table_list); } if (response.hasOwnProperty('total_size')) { $('#optimize_current_db_size').html(response.total_size); } }); }); $('#wp-optimize-settings-save').click(function(e) { e.preventDefault(); $('#save_spinner').show(); var form_data = gather_settings(); send_command('save_settings', form_data, function(resp) { $('#save_spinner').hide(); $('#save_done').show().delay(5000).fadeOut(); if (resp && resp.hasOwnProperty('save_results') && resp.save_results && resp.save_results.hasOwnProperty('errors')) { for (var i = 0, len = resp.save_results.errors.length; i < len; i++) { var new_html = '<div class="error">'+resp.errors[i]+'</div>'; temporarily_display_notice(new_html, '#wp-optimize-settings-save-results'); } console.log(resp.save_results.messages); } if (resp && resp.hasOwnProperty('status_box_contents')) { $('#wp_optimize_status_box .inside').html(resp.status_box_contents); } if (resp && resp.hasOwnProperty('optimizations_table')) { $('#optimizations_list').replaceWith(resp.optimizations_table); } //need to refresh the page if enable-admin-menu tick state has changed if (resp.save_results.refresh) { location.reload(); } }); }); $('#wp_optimize_status_box').on('click', '#wp_optimize_status_box_refresh', function(e) { e.preventDefault(); $('#wp_optimize_status_box').css('opacity', '0.5'); send_command('get_status_box_contents', null, function(resp) { $('#wp_optimize_status_box').css('opacity', '1').find('.inside').html(resp); }); }); };