function aj_step( theStep ) { var aj_nonce = jQuery( '#aj_nonce' ).val(); var aj_gtmetrix_username = jQuery( '#aj_gtmetrix_username' ).val(); var aj_gtmetrix_api_key = jQuery( '#aj_gtmetrix_api_key' ).val(); var aj_gtmetrix_server = jQuery( '#aj_gtmetrix_server' ).val(); if ( theStep == 'aj_step_results' ) { var data = { 'action': 'aj_steps', 'sub_action': theStep, 'site_url': aj_localize_admin.siteurl, 'aj_gtmetrix_username': aj_gtmetrix_username, 'aj_gtmetrix_api_key': aj_gtmetrix_api_key, 'aj_gtmetrix_server': aj_gtmetrix_server, 'security': aj_nonce }; jQuery.post(aj_localize_admin.ajaxurl, data, function( response ) { try { response = jQuery.parseJSON( response ); if ( response.status !== false ) { var baseline_pagespeed = response.baseline_pagespeed; var baseline_yslow = response.baseline_yslow; var pagespeed = response.results.pagespeed_score; var yslow = response.results.yslow_score; var aj_gtmetrix_config = response.name; var flt = parseFloat( response.results.fully_loaded_time / 1000 ).toFixed( 2 ); var url = response.url; jQuery( '.aj_gtmetrix_config' ).html( aj_gtmetrix_config ); if ( pagespeed > baseline_pagespeed ) { jQuery( '#aj_gtmetrix_inde_pagespeed' ).html( 'an increase' ); } else if ( pagespeed < baseline_pagespeed ) { jQuery( '#aj_gtmetrix_inde_pagespeed' ).html( 'a decrease' ); } else { jQuery( '#aj_gtmetrix_inde_pagespeed' ).html( 'no change' ); } if ( yslow > baseline_yslow ) { jQuery( '#aj_gtmetrix_inde_yslow' ).html( 'an increase' ); } else if ( yslow < baseline_yslow ) { jQuery( '#aj_gtmetrix_inde_yslow' ).html( 'a decrease' ); } else { jQuery( '#aj_gtmetrix_inde_yslow' ).html( 'no change' ); } jQuery( '#aj_gtmetrix_baseline_pagespeed' ).html( baseline_pagespeed + '%' ); jQuery( '#aj_gtmetrix_best_pagespeed' ).html( pagespeed + '%' ); jQuery( '#aj_gtmetrix_baseline_yslow' ).html( baseline_yslow + '%' ); jQuery( '#aj_gtmetrix_best_yslow' ).html( yslow + '%' ); jQuery( '#aj_gtmetrix_best_fullyloaded' ).html( flt + 's' ); jQuery( '#aj_gtmetrix_best_url' ).attr( 'href', url ).html( url ); if ( response.id == 'aj_step2b' || response.id == 'aj_step2c' ) { jQuery( '#aj_step4_jquery_excluded' ).hide(); jQuery( '#aj_step4_jquery_not_excluded' ).show(); } else if ( response.id == 'aj_step2d' || response.id == 'aj_step2e' ) { jQuery( '#aj_step4_jquery_excluded' ).show(); jQuery( '#aj_step4_jquery_not_excluded' ).hide(); } jQuery( '.aj_gtmetrix_credits' ).html( response.credits ); jQuery( '#aj_step_results' ).show(); } else { console.log(response); } } catch( err ) { console.log( err ); } }); } else { var data = { 'action': 'aj_steps', 'sub_action': theStep, 'site_url': aj_localize_admin.siteurl, 'aj_gtmetrix_username': aj_gtmetrix_username, 'aj_gtmetrix_api_key': aj_gtmetrix_api_key, 'aj_gtmetrix_server': aj_gtmetrix_server, 'security': aj_nonce }; jQuery.post(aj_localize_admin.ajaxurl, data, function( response ) { try { response = jQuery.parseJSON( response ); if ( response.status !== false ) { var screenshot = response.results.report_url + '/screenshot.jpg'; var pagespeed = response.results.pagespeed_score; var yslow = response.results.yslow_score; var flt = parseFloat( response.results.fully_loaded_time / 1000 ).toFixed( 2 ); var tps = Math.floor( response.results.page_bytes / 1024 ); if ( tps > 1024 ) { tps = tps / 1024 + 'MB'; } else { tps = tps + 'KB'; } var requests = response.results.page_elements; var report = '' + response.results.report_url + ''; var report_url = report.replace( 'https://', 'https://' + aj_gtmetrix_username + ':' + aj_gtmetrix_api_key + '@' ); var step_name = response.name; var step_url = response.url; var pr = 255 * ( 1 - ( pagespeed / 100 ) ); var yr = 255 * ( 1 - ( yslow / 100 ) ); var pg = 255 * ( pagespeed / 100 ); var yg = 255 * ( yslow / 100 ); var prgb = 'rgb(' + Math.floor( pr ) + ',' + Math.floor( pg ) + ',0 )'; var yrgb = 'rgb(' + Math.floor( yr ) + ',' + Math.floor( yg ) + ',0 )'; if ( theStep == 'aj_gtmetrix_test' ) { theStep = 'aj_latest'; } jQuery( '#' + theStep + '_please_wait' ).hide(); jQuery( '.' + theStep + '_screenshot' ).attr( 'src', screenshot ); jQuery( '.' + theStep + '_pagespeed' ).html( pagespeed + '%' ).css( { color: prgb } ); jQuery( '.' + theStep + '_yslow' ).html( yslow + '%' ).css( { color: yrgb } ); jQuery( '.' + theStep + '_flt' ).html( flt + 's' ); jQuery( '.' + theStep + '_tps' ).html( tps ); jQuery( '.' + theStep + '_requests' ).html( requests ); jQuery( '.' + theStep + '_report' ).html( report_url ); jQuery( '#' + theStep + '_gtmetrix_results' ).show(); jQuery( '.' + theStep + '_gtmetrix' ).html( step_name ); jQuery( '.' + theStep + '_url' ).attr( 'href', step_url ).html( step_url ); jQuery( '.aj_gtmetrix_credits' ).html( response.credits ); if ( theStep == 'aj_step2' ) { jQuery( '#aj_notification' ).fadeIn( 'slow' ).html( 'Settings Saved x' ); jQuery( '#aj_step2b' ).show(); jQuery( 'html, body' ).animate({ scrollTop: jQuery( "#aj_step2b" ).offset().top }, 1000 ); aj_step( 'aj_step2b' ); } else if ( theStep == 'aj_step2b' ) { jQuery( '#aj_step2c' ).show(); jQuery( 'html, body' ).animate({ scrollTop: jQuery( "#aj_step2c" ).offset().top }, 1000 ); aj_step( 'aj_step2c' ); } else if ( theStep == 'aj_step2c' ) { jQuery( '#aj_step2d' ).show(); jQuery( 'html, body' ).animate({ scrollTop: jQuery( "#aj_step2d" ).offset().top }, 1000 ); aj_step( 'aj_step2d' ); } else if ( theStep == 'aj_step2d' ) { jQuery( '#aj_step2e' ).show(); jQuery( 'html, body' ).animate({ scrollTop: jQuery( "#aj_step2e" ).offset().top }, 1000 ); aj_step( 'aj_step2e' ); } else if ( theStep == 'aj_step2e' ) { jQuery( '#aj_step_results' ).show(); jQuery( 'html, body' ).animate({ scrollTop: jQuery( "#aj_step_results" ).offset().top }, 1000 ); aj_step( 'aj_step_results' ); } else if ( theStep == 'aj_latest' ) { jQuery( '#aj_notification' ).fadeIn( 'slow' ).html( 'Settings Saved x' ); jQuery( '#aj_latest_gtmetrix_results' ).show(); jQuery( '#aj_latest_please_wait' ).hide(); jQuery( 'html, body' ).animate({ scrollTop: jQuery( "#aj_latest_please_wait" ).offset().top }, 1000 ); } } else { console.log(response); } } catch( err ) { console.log( err ); } }); } } /** * functions and actions to load after document ready */ jQuery( document ).ready( function() { jQuery( '.aj_chosen' ).chosen(); jQuery( document ).on( 'click', '.aj-upgrade-notice .notice-dismiss', function() { var aj_nonce = jQuery( '#aj_nonce' ).val(); var notice_id = jQuery( '.aj-upgrade-notice' ).attr( 'data-id' ); jQuery.ajax({ url: aj.ajaxurl, data: { 'action': 'async_javascript_dismiss_upgrade', 'notice_id': notice_id, 'security': aj_nonce } }); }); jQuery( document ).on( 'click', '.aj_steps_button', function(e) { e.preventDefault(); var aj_nonce = jQuery( '#aj_nonce' ).val(); var theStep = jQuery( this ).attr( 'data-id' ); if ( theStep == 'aj_goto_settings' ) { var newURL = aj_localize_admin.ajadminurl + '&tab=settings'; window.location.href = newURL; } else if ( theStep == 'aj_apply_settings' || theStep == 'aj_step2b_apply' || theStep == 'aj_step2c_apply' || theStep == 'aj_step2d_apply' || theStep == 'aj_step2e_apply') { if ( theStep != 'aj_apply_settings' ) { var settings = theStep.replace( '_apply', '' ); } else { var settings = ''; jQuery( '#aj_notification' ).fadeIn( 'slow' ).html( 'Settings Saved x' ); } var data = { 'action': 'aj_steps', 'sub_action': 'aj_apply_settings', 'settings': settings, 'site_url': aj_localize_admin.siteurl, 'security': aj_nonce }; jQuery.post(aj_localize_admin.ajaxurl, data, function( response ) { try { response = jQuery.parseJSON( response ); if ( response.status !== false ) { if ( jQuery( '#aj_step4' ).length ) { jQuery( '#aj_step5' ).show(); jQuery( 'html, body' ).animate({ scrollTop: jQuery( "#aj_step5" ).offset().top }, 1000 ); if ( settings != '' ) { jQuery( '#aj_notification' ).fadeIn( 'slow' ).html( 'Settings Saved x' ); } } else { if ( settings != '' ) { jQuery( '#aj_notification' ).fadeIn( 'slow' ).html( 'Settings Saved x' ); var newURL = aj_localize_admin.ajadminurl + '&tab=settings'; window.location.href = newURL; } } } else { console.log(response); } } catch( err ) { console.log( err ); } }); } else if ( theStep == 'aj_save_settings' ) { if ( jQuery( '#aj_enabled' ).is( ':checked' ) ) { var aj_enabled = 1; } else { var aj_enabled = 0; } var aj_method = jQuery( 'input[type=radio][name=aj_method]:checked' ).val(); var aj_jquery = jQuery( 'input[type=radio][name=aj_jquery]:checked' ).val(); var aj_async = jQuery( '#aj_async' ).val(); var aj_defer = jQuery( '#aj_defer' ).val(); var aj_exclusions = jQuery( '#aj_exclusions' ).val(); var aj_plugin_exclusions = jQuery( '#aj_plugin_exclusions' ).chosen().val(); var aj_theme_exclusions = jQuery( '#aj_theme_exclusions' ).chosen().val(); if ( jQuery( '#aj_autoptimize_enabled' ).is( ':visible' ) ) { if ( jQuery( '#aj_autoptimize_enabled' ).is( ':checked' ) ) { var aj_autoptimize_enabled = 1; var aj_autoptimize_method = jQuery( 'input[type=radio][name=aj_autoptimize_method]:checked' ).val(); } else { var aj_autoptimize_enabled = 0; var aj_autoptimize_method = jQuery( 'input[type=radio][name=aj_autoptimize_method]:checked' ).val(); } } else { var aj_autoptimize_enabled = 0; var aj_autoptimize_method = 'async'; } var data = { 'action': 'aj_steps', 'sub_action': 'aj_save_settings', 'aj_enabled': aj_enabled, 'aj_method': aj_method, 'aj_jquery': aj_jquery, 'aj_async': aj_async, 'aj_defer': aj_defer, 'aj_exclusions': aj_exclusions, 'aj_plugin_exclusions': aj_plugin_exclusions, 'aj_theme_exclusions': aj_theme_exclusions, 'aj_autoptimize_enabled': aj_autoptimize_enabled, 'aj_autoptimize_method': aj_autoptimize_method, 'security': aj_nonce }; jQuery.post(aj_localize_admin.ajaxurl, data, function( response ) { try { response = jQuery.parseJSON( response ); if ( response.status !== false ) { jQuery( '#aj_notification' ).fadeIn( 'slow' ).html( 'Settings Saved x' ); } else { console.log(response); } } catch( err ) { console.log( err ); } }); } else { var aj_gtmetrix_username = jQuery( '#aj_gtmetrix_username' ).val(); var aj_gtmetrix_api_key = jQuery( '#aj_gtmetrix_api_key' ).val(); var aj_gtmetrix_server = jQuery( '#aj_gtmetrix_server' ).val(); var isError = false; if ( aj_gtmetrix_username == '' ) { jQuery( '#aj_gtmetrix_username' ).addClass( 'aj_field_error' ); isError = true; } if ( aj_gtmetrix_api_key == '' ) { jQuery( '#aj_gtmetrix_api_key' ).addClass( 'aj_field_error' ); isError = true; } if ( isError === false ) { if ( theStep != 'aj_gtmetrix_test' ) { jQuery( this ).hide(); jQuery( '#' + theStep ).show(); } else { jQuery( '#aj_latest_please_wait' ).show(); } aj_step( theStep ); } else { return false; } } }); jQuery( document ).on( 'change', 'input[type=radio][name=aj_step4_check]', function() { var aj_nonce = jQuery( '#aj_nonce' ).val(); var theSelection = jQuery( this ).val(); if ( theSelection == 'y' ) { jQuery( '#aj_step4_y' ).show(); jQuery( '#aj_step4_n' ).hide(); } else { jQuery( '#aj_step4_n' ).show(); jQuery( '#aj_step4_y' ).hide(); } }); jQuery( document ).on( 'click', '.aj_dismiss', function() { var aj_nonce = jQuery( '#aj_nonce' ).val(); jQuery( '#aj_notification' ).fadeOut( 'slow' ); }); });