summaryrefslogtreecommitdiff
path: root/inc/assets/js/astra-admin-menu-settings.js
diff options
context:
space:
mode:
Diffstat (limited to 'inc/assets/js/astra-admin-menu-settings.js')
-rw-r--r--inc/assets/js/astra-admin-menu-settings.js298
1 files changed, 298 insertions, 0 deletions
diff --git a/inc/assets/js/astra-admin-menu-settings.js b/inc/assets/js/astra-admin-menu-settings.js
new file mode 100644
index 0000000..957bd00
--- /dev/null
+++ b/inc/assets/js/astra-admin-menu-settings.js
@@ -0,0 +1,298 @@
+/**
+ * Install Starter Templates
+ *
+ *
+ * @since 1.2.4
+ */
+
+(function($){
+
+ AstraThemeAdmin = {
+
+ init: function()
+ {
+ this._bind();
+ },
+
+
+ /**
+ * Binds events for the Astra Theme.
+ *
+ * @since 1.0.0
+ * @access private
+ * @method _bind
+ */
+ _bind: function()
+ {
+ $( document ).on('ast-after-plugin-active', AstraThemeAdmin._disableActivcationNotice );
+ $( document ).on('click' , '.astra-install-recommended-plugin', AstraThemeAdmin._installNow );
+ $( document ).on('click' , '.astra-activate-recommended-plugin', AstraThemeAdmin._activatePlugin);
+ $( document ).on('click' , '.astra-deactivate-recommended-plugin', AstraThemeAdmin._deactivatePlugin);
+ $( document ).on('wp-plugin-install-success' , AstraThemeAdmin._activatePlugin);
+ $( document ).on('wp-plugin-install-error' , AstraThemeAdmin._installError);
+ $( document ).on('wp-plugin-installing' , AstraThemeAdmin._pluginInstalling);
+ $( document ).on('click', '.ast-builder-migrate', AstraThemeAdmin._migrate );
+ },
+
+ _migrate: function( e ) {
+
+ e.stopPropagation();
+ e.preventDefault();
+
+ var $this = $( this );
+
+ if ( $this.hasClass( 'updating-message' ) ) {
+ return;
+ }
+
+ $this.addClass( 'updating-message' );
+
+ var data = {
+ action: 'ast-migrate-to-builder',
+ value: $(this).attr( 'data-value' ),
+ nonce: astra.ajax_nonce,
+ };
+
+ $.ajax({
+ url: astra.ajaxUrl,
+ type: 'POST',
+ data: data,
+ success: function( response ) {
+ $this.removeClass( 'updating-message' );
+ if ( response.success ) {
+ if ( data.value == '1' ) {
+ // Change button classes & text.
+ $this.text( astra.old_header_footer );
+ $this.attr( 'data-value', '0' );
+ } else {
+ // Change button classes & text.
+ $this.text( astra.migrate_to_builder );
+ $this.attr( 'data-value', '1' );
+ }
+ }
+ }
+ })
+ },
+
+ /**
+ * Plugin Installation Error.
+ */
+ _installError: function( event, response ) {
+
+ var $card = jQuery( '.astra-install-recommended-plugin' );
+
+ $card
+ .removeClass( 'button-primary' )
+ .addClass( 'disabled' )
+ .html( wp.updates.l10n.installFailedShort );
+ },
+
+ /**
+ * Installing Plugin
+ */
+ _pluginInstalling: function(event, args) {
+ event.preventDefault();
+
+ var slug = args.slug;
+
+ var $card = jQuery( '.astra-install-recommended-plugin' );
+ var activatingText = astra.recommendedPluiginActivatingText;
+
+
+ $card.each(function( index, element ) {
+ element = jQuery( element );
+ if ( element.data('slug') === slug ) {
+ element.addClass('updating-message');
+ element.html( activatingText );
+ }
+ });
+
+ },
+
+ /**
+ * Activate Success
+ */
+ _activatePlugin: function( event, response ) {
+
+ event.preventDefault();
+
+ var $message = jQuery(event.target);
+ var $init = $message.data('init');
+ var activatedSlug;
+
+ if (typeof $init === 'undefined') {
+ var $message = jQuery('.astra-install-recommended-plugin[data-slug=' + response.slug + ']');
+ activatedSlug = response.slug;
+ } else {
+ activatedSlug = $init;
+ }
+
+ // Transform the 'Install' button into an 'Activate' button.
+ var $init = $message.data('init');
+ var activatingText = astra.recommendedPluiginActivatingText;
+ var settingsLink = $message.data('settings-link');
+ var settingsLinkText = astra.recommendedPluiginSettingsText;
+ var deactivateText = astra.recommendedPluiginDeactivateText;
+ var astraSitesLink = astra.astraSitesLink;
+ var astraPluginRecommendedNonce = astra.astraPluginManagerNonce;
+
+ $message.removeClass( 'install-now installed button-disabled updated-message' )
+ .addClass('updating-message')
+ .html( activatingText );
+
+ // WordPress adds "Activate" button after waiting for 1000ms. So we will run our activation after that.
+ setTimeout( function() {
+
+ $.ajax({
+ url: astra.ajaxUrl,
+ type: 'POST',
+ data: {
+ 'action' : 'astra-sites-plugin-activate',
+ 'nonce' : astraPluginRecommendedNonce,
+ 'init' : $init,
+ },
+ })
+ .done(function (result) {
+
+ if( result.success ) {
+ var output = '<a href="#" class="astra-deactivate-recommended-plugin" data-init="'+ $init +'" data-settings-link="'+ settingsLink +'" data-settings-link-text="'+ deactivateText +'" aria-label="'+ deactivateText +'">'+ deactivateText +'</a>';
+ output += ( typeof settingsLink === 'string' && settingsLink != 'undefined' ) ? '<a href="' + settingsLink +'" aria-label="'+ settingsLinkText +'">' + settingsLinkText +' </a>' : '';
+ output += ( typeof settingsLink === undefined && settingsLink != undefined ) ? '<a href="' + settingsLink +'" aria-label="'+ settingsLinkText +'">' + settingsLinkText +' </a>' : '';
+
+ $message.removeClass( 'astra-activate-recommended-plugin astra-install-recommended-plugin button button-primary install-now activate-now updating-message' );
+
+ $message.parent('.ast-addon-link-wrapper').parent('.astra-recommended-plugin').addClass('active');
+ $message.parents('.ast-addon-link-wrapper').html( output );
+
+ var starterSitesRedirectionUrl = astraSitesLink + result.data.starter_template_slug;
+ jQuery(document).trigger( 'ast-after-plugin-active', [starterSitesRedirectionUrl, activatedSlug] );
+
+ } else {
+
+ $message.removeClass( 'updating-message' );
+ }
+
+ });
+
+ }, 1200 );
+
+ },
+
+ /**
+ * Activate Success
+ */
+ _deactivatePlugin: function( event, response ) {
+
+ event.preventDefault();
+
+ var $message = jQuery(event.target);
+
+ var $init = $message.data('init');
+
+ if (typeof $init === 'undefined') {
+ var $message = jQuery('.astra-install-recommended-plugin[data-slug=' + response.slug + ']');
+ }
+
+ // Transform the 'Install' button into an 'Activate' button.
+ var $init = $message.data('init');
+ var deactivatingText = $message.data('deactivating-text') || astra.recommendedPluiginDeactivatingText;
+ var settingsLink = $message.data('settings-link');
+ var activateText = astra.recommendedPluiginActivateText;
+ var astraPluginRecommendedNonce = astra.astraPluginManagerNonce;
+
+ $message.removeClass( 'install-now installed button-disabled updated-message' )
+ .addClass('updating-message')
+ .html( deactivatingText );
+
+ // WordPress adds "Activate" button after waiting for 1000ms. So we will run our activation after that.
+ setTimeout( function() {
+
+ $.ajax({
+ url: astra.ajaxUrl,
+ type: 'POST',
+ data: {
+ 'action' : 'astra-sites-plugin-deactivate',
+ 'nonce' : astraPluginRecommendedNonce,
+ 'init' : $init,
+ },
+ })
+ .done(function (result) {
+
+ if( result.success ) {
+ var output = '<a href="#" class="astra-activate-recommended-plugin" data-init="'+ $init +'" data-settings-link="'+ settingsLink +'" data-settings-link-text="'+ activateText +'" aria-label="'+ activateText +'">'+ activateText +'</a>';
+ $message.removeClass( 'astra-activate-recommended-plugin astra-install-recommended-plugin button button-primary install-now activate-now updating-message' );
+
+ $message.parent('.ast-addon-link-wrapper').parent('.astra-recommended-plugin').removeClass('active');
+
+ $message.parents('.ast-addon-link-wrapper').html( output );
+
+ } else {
+
+ $message.removeClass( 'updating-message' );
+
+ }
+
+ });
+
+ }, 1200 );
+
+ },
+
+ /**
+ * Install Now
+ */
+ _installNow: function(event)
+ {
+ event.preventDefault();
+
+ var $button = jQuery( event.target ),
+ $document = jQuery(document);
+
+ if ( $button.hasClass( 'updating-message' ) || $button.hasClass( 'button-disabled' ) ) {
+ return;
+ }
+
+ if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.ajaxLocked ) {
+ wp.updates.requestFilesystemCredentials( event );
+
+ $document.on( 'credential-modal-cancel', function() {
+ var $message = $( '.astra-install-recommended-plugin.updating-message' );
+
+ $message
+ .addClass('astra-activate-recommended-plugin')
+ .removeClass( 'updating-message astra-install-recommended-plugin' )
+ .text( wp.updates.l10n.installNow );
+
+ wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
+ } );
+ }
+
+ wp.updates.installPlugin( {
+ slug: $button.data( 'slug' )
+ });
+ },
+
+ /**
+ * After plugin active redirect and deactivate activation notice
+ */
+ _disableActivcationNotice: function( event, astraSitesLink, activatedSlug )
+ {
+ event.preventDefault();
+
+ if ( activatedSlug.indexOf( 'astra-sites' ) >= 0 || activatedSlug.indexOf( 'astra-pro-sites' ) >= 0 ) {
+ if ( 'undefined' != typeof AstraNotices ) {
+ AstraNotices._ajax( 'astra-sites-on-active', '' );
+ }
+ window.location.href = astraSitesLink + '&ast-disable-activation-notice';
+ }
+ },
+ };
+
+ /**
+ * Initialize AstraThemeAdmin
+ */
+ $(function(){
+ AstraThemeAdmin.init();
+ });
+
+})(jQuery);