147 lines
4.0 KiB
JavaScript
147 lines
4.0 KiB
JavaScript
/**
|
|
* Handle the buttons for the Boost migration.
|
|
* @param {jQuery} $ - jQuery
|
|
*/
|
|
( $ => {
|
|
$( document ).ready( function () {
|
|
// Don't run on versions of WordPress too old for the block editor and the translation methods it brings.
|
|
// All the install / activate options are plain links with meaningful destinations anyway.
|
|
if ( ! window.wp || ! window.wp.i18n ) {
|
|
return;
|
|
}
|
|
|
|
const { __, sprintf } = window.wp.i18n;
|
|
const ajaxurl = window.ajaxurl;
|
|
const wpscAdmin = window.wpscAdmin;
|
|
|
|
const setupBoostButton = $target => {
|
|
if ( ! $target.hasClass( 'wpsc-boost-migration-button' ) ) {
|
|
// eslint-disable-next-line no-console
|
|
console.warn( 'Unexpected button clicked for Boost migration.' );
|
|
return;
|
|
}
|
|
const $label = $target.find( 'label' );
|
|
const $spinner = $target.find( '.spinner' );
|
|
const $errorMessage = $target.prev( '.wpsc-boost-migration-error' );
|
|
const source = $target.attr( 'data-source' );
|
|
const originalText = $label.text();
|
|
|
|
// Helper function to show an error.
|
|
const showError = err => {
|
|
reset();
|
|
|
|
$errorMessage
|
|
.text(
|
|
err ||
|
|
__( 'An error occurred while trying to activate Jetpack Boost', 'wp-super-cache' )
|
|
)
|
|
.show();
|
|
};
|
|
// Helper function to show Boost Banner work in progress.
|
|
const showBusy = action => {
|
|
$target.attr( 'disabled', true );
|
|
$label.text( action );
|
|
$spinner.addClass( 'is-active' ).show();
|
|
};
|
|
|
|
// Helper function to reset Boost Banner button.
|
|
const reset = () => {
|
|
$target.attr( 'disabled', false );
|
|
$label.text( originalText );
|
|
$spinner.removeClass( 'is-active' ).hide();
|
|
};
|
|
|
|
// Activate Jetpack Boost.
|
|
const activateBoost = () => {
|
|
showBusy( __( 'Activating…', 'wp-super-cache' ) );
|
|
|
|
$.post( ajaxurl, {
|
|
action: 'wpsc_activate_boost',
|
|
_ajax_nonce: wpscAdmin.boostActivateNonce,
|
|
source: source,
|
|
} )
|
|
.done( response => {
|
|
if ( response.success ) {
|
|
$label.text( 'Success! Sending you to Jetpack Boost...' );
|
|
$spinner.hide();
|
|
window.location.href = 'admin.php?page=jetpack-boost';
|
|
} else {
|
|
showError( response.data );
|
|
}
|
|
} )
|
|
.fail( response => {
|
|
showError(
|
|
sprintf(
|
|
/* translators: %d is an HTTP error code */
|
|
__( 'Failed to activate Jetpack Boost: HTTP %d error received', 'wp-super-cache' ),
|
|
response.status
|
|
)
|
|
);
|
|
} );
|
|
};
|
|
|
|
const installBoost = () => {
|
|
showBusy( __( 'Installing…', 'wp-super-cache' ) );
|
|
$.post( ajaxurl, {
|
|
action: 'wpsc_install_plugin',
|
|
_ajax_nonce: wpscAdmin.boostInstallNonce,
|
|
slug: 'jetpack-boost',
|
|
} )
|
|
.done( response => {
|
|
if ( response.success ) {
|
|
activateBoost();
|
|
} else {
|
|
showError( response.data );
|
|
}
|
|
} )
|
|
.fail( response => {
|
|
showError(
|
|
sprintf(
|
|
/* translators: %d is an HTTP error code */
|
|
__( 'Failed to install Jetpack Boost: HTTP %d error received', 'wp-super-cache' ),
|
|
response.status
|
|
)
|
|
);
|
|
} );
|
|
};
|
|
|
|
return {
|
|
installBoost,
|
|
activateBoost,
|
|
};
|
|
};
|
|
|
|
// One-click install for Boost.
|
|
$( '.wpsc-install-boost-button' ).on( 'click', event => {
|
|
event.preventDefault();
|
|
const boostActivation = setupBoostButton( $( event.currentTarget ) );
|
|
boostActivation.installBoost();
|
|
} );
|
|
|
|
// Handle activate button click.
|
|
$( '.wpsc-activate-boost-button' ).on( 'click', event => {
|
|
event.preventDefault();
|
|
const boostActivation = setupBoostButton( $( event.currentTarget ) );
|
|
boostActivation.activateBoost();
|
|
} );
|
|
|
|
// Dismiss Boost banner.
|
|
$( '.wpsc-boost-dismiss' ).on( 'click', () => {
|
|
$( '.wpsc-boost-banner' ).fadeOut( 'slow' );
|
|
$.post( ajaxurl, {
|
|
action: 'wpsc-hide-boost-banner',
|
|
nonce: wpscAdmin.boostDismissNonce,
|
|
} );
|
|
} );
|
|
|
|
// Dismiss admin notice
|
|
$( '.boost-notice' ).on( 'click', '.notice-dismiss', event => {
|
|
event.preventDefault();
|
|
$.post( ajaxurl, {
|
|
action: 'wpsc_dismiss_boost_notice',
|
|
_ajax_nonce: wpscAdmin.boostNoticeDismissNonce,
|
|
} );
|
|
} );
|
|
} );
|
|
} )( jQuery );
|