/** * AJAX Request Queue * * - add() * - remove() * - run() * - stop() * * @since 1.0.0 */ var AstraSitesAjaxQueue = (function() { var requests = []; return { /** * Add AJAX request * * @since 1.0.0 */ add: function(opt) { requests.push(opt); }, /** * Remove AJAX request * * @since 1.0.0 */ remove: function(opt) { if( jQuery.inArray(opt, requests) > -1 ) requests.splice($.inArray(opt, requests), 1); }, /** * Run / Process AJAX request * * @since 1.0.0 */ run: function() { var self = this, oriSuc; if( requests.length ) { oriSuc = requests[0].complete; requests[0].complete = function() { if( typeof(oriSuc) === 'function' ) oriSuc(); requests.shift(); self.run.apply(self, []); }; jQuery.ajax(requests[0]); } else { self.tid = setTimeout(function() { self.run.apply(self, []); }, 1000); } }, /** * Stop AJAX request * * @since 1.0.0 */ stop: function() { requests = []; clearTimeout(this.tid); } }; }()); (function($){ var AstraSSEImport = { complete: { posts: 0, media: 0, users: 0, comments: 0, terms: 0, }, updateDelta: function (type, delta) { this.complete[ type ] += delta; var self = this; requestAnimationFrame(function () { self.render(); }); }, updateProgress: function ( type, complete, total ) { var text = complete + '/' + total; if( 'undefined' !== type && 'undefined' !== text ) { total = parseInt( total, 10 ); if ( 0 === total || isNaN( total ) ) { total = 1; } var percent = parseInt( complete, 10 ) / total; var progress = Math.round( percent * 100 ) + '%'; var progress_bar = percent * 100; if( progress_bar <= 100 ) { var process_bars = document.getElementsByClassName( 'astra-site-import-process' ); for ( var i = 0; i < process_bars.length; i++ ) { process_bars[i].value = progress_bar; } AstraSitesAdmin._log_title( 'Importing Content.. ' + progress ); } } }, render: function () { var types = Object.keys( this.complete ); var complete = 0; var total = 0; for (var i = types.length - 1; i >= 0; i--) { var type = types[i]; this.updateProgress( type, this.complete[ type ], this.data.count[ type ] ); complete += this.complete[ type ]; total += this.data.count[ type ]; } this.updateProgress( 'total', complete, total ); } }; AstraSitesAdmin = { reset_remaining_posts: 0, reset_remaining_wp_forms: 0, reset_remaining_terms: 0, reset_processed_posts: 0, reset_processed_wp_forms: 0, reset_processed_terms: 0, site_imported_data: null, backup_taken: false, current_site: [], current_screen: '', templateData: {}, log_file : '', customizer_data : '', wxr_url : '', wpforms_url : '', options_data : '', widgets_data : '', import_start_time : '', import_end_time : '', init: function() { this._resetPagedCount(); this._bind(); }, /** * Debugging. * * @param {mixed} data Mixed data. */ _log: function( data ) { if( astraSitesAdmin.debug ) { var date = new Date(); var time = date.toLocaleTimeString(); if (typeof data == 'object') { console.log('%c ' + JSON.stringify( data ) + ' ' + time, 'background: #ededed; color: #444'); } else { console.log('%c ' + data + ' ' + time, 'background: #ededed; color: #444'); } } }, _log_title: function( data, append ) { var markup = '

' + data + '

'; if (typeof data == 'object' ) { var markup = '

' + JSON.stringify( data ) + '

'; } if ( append ) { $('.current-importing-status-title').append( markup ); } else { $('.current-importing-status-title').html( markup ); } }, /** * Binds events for the Astra Sites. * * @since 1.0.0 * @access private * @method _bind */ _bind: function() { $( document ).on( 'click' , '.astra-sites-reset-data .checkbox', AstraSitesAdmin._toggle_reset_notice ); $( document ).on( 'click' , '.page-builders li', AstraSitesAdmin._toggle_reset_notice ); $( document ).on('click' , '#astra-sites-welcome-form .submit', AstraSitesAdmin._show_page_builder_notice); $( document ).on('click' , '#astra-sites-welcome-form li', AstraSitesAdmin._show_next_button); $( document ).on('change' , '#astra-sites-welcome-form-inline select', AstraSitesAdmin._change_page_builder); $( document ).on('click' , '.astra-sites-tooltip-icon', AstraSitesAdmin._toggle_tooltip); $( document ).on('click' , '.astra-sites-advanced-options-button', AstraSitesAdmin._toggle_advanced_options); $( document ).on('click' , '.astra-import-settings', AstraSitesAdmin._import_settings); $( document ).on('click' , '.devices button', AstraSitesAdmin._previewDevice); $( document ).on('click' , '.theme-browser .theme-screenshot, .theme-browser .more-details, .theme-browser .install-theme-preview', AstraSitesAdmin._preview); $( document ).on('click' , '.next-theme', AstraSitesAdmin._nextTheme); $( document ).on('click' , '.previous-theme', AstraSitesAdmin._previousTheme); $( document ).on('click' , '.collapse-sidebar', AstraSitesAdmin._collapse); $( document ).on('click' , '.astra-demo-import', AstraSitesAdmin._importDemo); $( document ).on('astra-sites-install-and-activate-required-plugins-done' , AstraSitesAdmin._process_import ); $( document ).on('click' , '.install-now', AstraSitesAdmin._installNow); $( document ).on('click' , '.close-full-overlay', AstraSitesAdmin._fullOverlay); $( document ).on('click' , '.activate-now', AstraSitesAdmin._activateNow); $( document ).on('wp-plugin-installing' , AstraSitesAdmin._pluginInstalling); $( document ).on('wp-plugin-install-error' , AstraSitesAdmin._installError); $( document ).on('wp-plugin-install-success' , AstraSitesAdmin._installSuccess); $( document ).on( 'astra-sites-import-set-site-data-done' , AstraSitesAdmin._resetData ); $( document ).on( 'astra-sites-reset-data' , AstraSitesAdmin._backup_before_rest_options ); $( document ).on( 'astra-sites-backup-settings-before-reset-done' , AstraSitesAdmin._reset_customizer_data ); $( document ).on( 'astra-sites-reset-customizer-data-done' , AstraSitesAdmin._reset_site_options ); $( document ).on( 'astra-sites-reset-site-options-done' , AstraSitesAdmin._reset_widgets_data ); $( document ).on( 'astra-sites-reset-widgets-data-done' , AstraSitesAdmin._reset_terms ); $( document ).on( 'astra-sites-delete-terms-done' , AstraSitesAdmin._reset_wp_forms ); $( document ).on( 'astra-sites-delete-wp-forms-done' , AstraSitesAdmin._reset_posts ); $( document ).on('astra-sites-reset-data-done' , AstraSitesAdmin._recheck_backup_options ); $( document ).on('astra-sites-backup-settings-done' , AstraSitesAdmin._importWPForms ); $( document ).on('astra-sites-import-wpforms-done' , AstraSitesAdmin._importCustomizerSettings ); $( document ).on('astra-sites-import-customizer-settings-done' , AstraSitesAdmin._importXML ); $( document ).on('astra-sites-import-xml-done' , AstraSitesAdmin._importSiteOptions ); $( document ).on('astra-sites-import-options-done' , AstraSitesAdmin._importWidgets ); $( document ).on('astra-sites-import-widgets-done' , AstraSitesAdmin._importEnd ); }, _show_next_button: function() { $( this ).parents('.page-builders').find('img').removeClass('wp-ui-highlight'); $( this ).find('img').addClass('wp-ui-highlight'); $('#submit').parent().removeClass('submit'); $('#submit').removeClass('disabled'); $('.astra-sites-page-builder-notice').hide(); }, _show_page_builder_notice: function() { $('.astra-sites-page-builder-notice').show(); }, _change_page_builder: function() { $(this).closest('form').submit(); }, _toggle_tooltip: function( event ) { event.preventDefault(); var tip_id = $( this ).data('tip-id') || ''; if( tip_id && $( '#' + tip_id ).length ) { $( '#' + tip_id ).toggle(); } }, _toggle_advanced_options: function( event ) { event.preventDefault(); $('.astra-sites-advanced-options').toggle(); }, _resetData: function( event ) { event.preventDefault(); if ( $( '.astra-sites-reset-data' ).find('.checkbox').is(':checked') ) { $(document).trigger( 'astra-sites-reset-data' ); } else { $(document).trigger( 'astra-sites-reset-data-done' ); } }, _reset_customizer_data: function() { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', data : { action : 'astra-sites-reset-customizer-data' }, beforeSend: function() { AstraSitesAdmin._log_title( 'Reseting Customizer Data..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText + ' ' + jqXHR.statusText, true ); }) .done(function ( data ) { AstraSitesAdmin._log_title( 'Complete Resetting Customizer Data..' ); $(document).trigger( 'astra-sites-reset-customizer-data-done' ); }); }, _reset_site_options: function() { // Site Options. $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', data : { action : 'astra-sites-reset-site-options' }, beforeSend: function() { AstraSitesAdmin._log_title( 'Reseting Site Options..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText + ' ' + jqXHR.statusText, true ); }) .done(function ( data ) { AstraSitesAdmin._log_title( 'Complete Reseting Site Options..' ); $(document).trigger( 'astra-sites-reset-site-options-done' ); }); }, _reset_widgets_data: function() { // Widgets. $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', data : { action : 'astra-sites-reset-widgets-data' }, beforeSend: function() { AstraSitesAdmin._log_title( 'Reseting Widgets..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText + ' ' + jqXHR.statusText, true ); }) .done(function ( data ) { AstraSitesAdmin._log_title( 'Complete Reseting Widgets..' ); $(document).trigger( 'astra-sites-reset-widgets-data-done' ); }); }, _reset_posts: function() { if( AstraSitesAdmin.site_imported_data['reset_posts'].length ) { AstraSitesAdmin.reset_remaining_posts = AstraSitesAdmin.site_imported_data['reset_posts'].length; $.each( AstraSitesAdmin.site_imported_data['reset_posts'], function(index, post_id) { AstraSitesAdmin._log_title( 'Deleting Posts..' ); AstraSitesAjaxQueue.add({ url: astraSitesAdmin.ajaxurl, type: 'POST', data: { action : 'astra-sites-delete-posts', post_id : post_id, }, success: function( result ){ if( AstraSitesAdmin.reset_processed_posts < AstraSitesAdmin.site_imported_data['reset_posts'].length ) { AstraSitesAdmin.reset_processed_posts+=1; } AstraSitesAdmin._log_title( 'Deleting Post ' + AstraSitesAdmin.reset_processed_posts + ' of ' + AstraSitesAdmin.site_imported_data['reset_posts'].length + '
' + result.data ); AstraSitesAdmin.reset_remaining_posts-=1; if( 0 == AstraSitesAdmin.reset_remaining_posts ) { $(document).trigger( 'astra-sites-delete-posts-done' ); $(document).trigger( 'astra-sites-reset-data-done' ); } } }); }); AstraSitesAjaxQueue.run(); } else { $(document).trigger( 'astra-sites-delete-posts-done' ); $(document).trigger( 'astra-sites-reset-data-done' ); } }, _reset_wp_forms: function() { if( AstraSitesAdmin.site_imported_data['reset_wp_forms'].length ) { AstraSitesAdmin.reset_remaining_wp_forms = AstraSitesAdmin.site_imported_data['reset_wp_forms'].length; $.each( AstraSitesAdmin.site_imported_data['reset_wp_forms'], function(index, post_id) { AstraSitesAdmin._log_title( 'Deleting WP Forms..' ); AstraSitesAjaxQueue.add({ url: astraSitesAdmin.ajaxurl, type: 'POST', data: { action : 'astra-sites-delete-wp-forms', post_id : post_id, }, success: function( result ){ if( AstraSitesAdmin.reset_processed_wp_forms < AstraSitesAdmin.site_imported_data['reset_wp_forms'].length ) { AstraSitesAdmin.reset_processed_wp_forms+=1; } AstraSitesAdmin._log_title( 'Deleting Form ' + AstraSitesAdmin.reset_processed_wp_forms + ' of ' + AstraSitesAdmin.site_imported_data['reset_wp_forms'].length + '
' + result.data ); AstraSitesAdmin.reset_remaining_wp_forms-=1; if( 0 == AstraSitesAdmin.reset_remaining_wp_forms ) { $(document).trigger( 'astra-sites-delete-wp-forms-done' ); } } }); }); AstraSitesAjaxQueue.run(); } else { $(document).trigger( 'astra-sites-delete-wp-forms-done' ); } }, _reset_terms: function() { if( AstraSitesAdmin.site_imported_data['reset_terms'].length ) { AstraSitesAdmin.reset_remaining_terms = AstraSitesAdmin.site_imported_data['reset_terms'].length; $.each( AstraSitesAdmin.site_imported_data['reset_terms'], function(index, term_id) { AstraSitesAdmin._log_title( 'Deleting Terms..' ); AstraSitesAjaxQueue.add({ url: astraSitesAdmin.ajaxurl, type: 'POST', data: { action : 'astra-sites-delete-terms', term_id : term_id, }, success: function( result ){ if( AstraSitesAdmin.reset_processed_terms < AstraSitesAdmin.site_imported_data['reset_terms'].length ) { AstraSitesAdmin.reset_processed_terms+=1; } AstraSitesAdmin._log_title( 'Deleting Term ' + AstraSitesAdmin.reset_processed_terms + ' of ' + AstraSitesAdmin.site_imported_data['reset_terms'].length + '
' + result.data ); AstraSitesAdmin.reset_remaining_terms-=1; if( 0 == AstraSitesAdmin.reset_remaining_terms ) { $(document).trigger( 'astra-sites-delete-terms-done' ); } } }); }); AstraSitesAjaxQueue.run(); } else { $(document).trigger( 'astra-sites-delete-terms-done' ); } }, _toggle_reset_notice: function() { if ( $( this ).is(':checked') ) { $('#astra-sites-tooltip-reset-data').show(); } else { $('#astra-sites-tooltip-reset-data').hide(); } }, _backup_before_rest_options: function() { AstraSitesAdmin._backupOptions( 'astra-sites-backup-settings-before-reset-done' ); AstraSitesAdmin.backup_taken = true; }, _recheck_backup_options: function() { AstraSitesAdmin._backupOptions( 'astra-sites-backup-settings-done' ); AstraSitesAdmin.backup_taken = true; }, _backupOptions: function( trigger_name ) { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', data : { action : 'astra-sites-backup-settings', }, beforeSend: function() { AstraSitesAdmin._log_title( 'Processing Customizer Settings Backup..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText, true ); }) .done(function ( data ) { // 1. Pass - Import Customizer Options. AstraSitesAdmin._log_title( 'Customizer Settings Backup Done..' ); // Custom trigger. $(document).trigger( trigger_name ); }); }, _import_settings: function( event ) { event.preventDefault(); var btn = $(this); btn.addClass('updating-message'); $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { action : 'astra-sites-import-customizer-settings', customizer_data : AstraSitesAdmin.current_site['astra-site-customizer-data'], }, beforeSend: function() { AstraSitesAdmin._log_title( 'Importing Customizer Settings..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText + ' ' + jqXHR.statusText, true ); }) .done(function ( customizer_data ) { btn.removeClass( 'updating-message' ); // 1. Fail - Import Customizer Options. if( false === customizer_data.success ) { AstraSitesAdmin._log_title( customizer_data.data ); } else { // 1. Pass - Import Customizer Options. AstraSitesAdmin._log_title( 'Imported Customizer Settings..' ); $(document).trigger( 'astra-sites-import-customizer-settings-done' ); } }); }, /** * 5. Import Complete. */ _importEnd: function( event ) { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { action : 'astra-sites-import-end', }, beforeSend: function() { AstraSitesAdmin._log_title( 'Import Complete!' ); } }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText + ' ' + jqXHR.statusText, true ); }) .done(function ( data ) { // 5. Fail - Import Complete. if( false === data.success ) { AstraSitesAdmin._log_title( data.data ); } else { $('body').removeClass('importing-site'); $('.previous-theme, .next-theme').removeClass('disabled'); var date = new Date(); AstraSitesAdmin.import_end_time = new Date(); var diff = ( AstraSitesAdmin.import_end_time.getTime() - AstraSitesAdmin.import_start_time.getTime() ); var time = ''; var seconds = Math.floor( diff / 1000 ); var minutes = Math.floor( seconds / 60 ); var hours = Math.floor( minutes / 60 ); minutes = minutes - ( hours * 60 ); seconds = seconds - ( minutes * 60 ); if( hours ) { time += hours + ' Hours '; } if( minutes ) { time += minutes + ' Minutes '; } if( seconds ) { time += seconds + ' Seconds'; } var output = '

Done 🎉

'; output += '

Your starter site has been imported successfully in '+time+'! Now go ahead, customize the text, images, and design to make it yours!

'; output += '

You can now start making changes according to your requirements.

'; output += '

View Site

'; $('.rotating,.current-importing-status-wrap,.notice-warning').remove(); $('.astra-sites-result-preview .inner').html(output); // 5. Pass - Import Complete. AstraSitesAdmin._importSuccessButton(); } }); }, /** * 4. Import Widgets. */ _importWidgets: function( event ) { if ( AstraSitesAdmin._is_process_widgets() ) { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { action : 'astra-sites-import-widgets', widgets_data : AstraSitesAdmin.widgets_data, }, beforeSend: function() { AstraSitesAdmin._log_title( 'Importing Widgets..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText, true ); }) .done(function ( widgets_data ) { // 4. Fail - Import Widgets. if( false === widgets_data.success ) { AstraSitesAdmin._log_title( widgets_data.data ); } else { // 4. Pass - Import Widgets. AstraSitesAdmin._log_title( 'Imported Widgets!' ); $(document).trigger( 'astra-sites-import-widgets-done' ); } }); } else { $(document).trigger( 'astra-sites-import-widgets-done' ); } }, /** * 3. Import Site Options. */ _importSiteOptions: function( event ) { if ( AstraSitesAdmin._is_process_xml() ) { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { action : 'astra-sites-import-options', options_data : AstraSitesAdmin.options_data, }, beforeSend: function() { AstraSitesAdmin._log_title( 'Importing Options..' ); $('.astra-demo-import .percent').html(''); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText, true ); }) .done(function ( options_data ) { // 3. Fail - Import Site Options. if( false === options_data.success ) { AstraSitesAdmin._log_title( options_data ); } else { // 3. Pass - Import Site Options. $(document).trigger( 'astra-sites-import-options-done' ); } }); } else { $(document).trigger( 'astra-sites-import-options-done' ); } }, /** * 2. Prepare XML Data. */ _importXML: function() { if ( AstraSitesAdmin._is_process_xml() ) { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { action : 'astra-sites-import-prepare-xml', wxr_url : AstraSitesAdmin.current_site['astra-site-wxr-path'], }, beforeSend: function() { $('.astra-site-import-process-wrap').show(); AstraSitesAdmin._log_title( 'Importing Content..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText, true ); }) .done(function ( xml_data ) { // 2. Fail - Prepare XML Data. if( false === xml_data.success ) { AstraSitesAdmin._log_title( xml_data ); var error_msg = xml_data.data.error || xml_data.data; AstraSitesAdmin._log_title( error_msg ); } else { var xml_processing = $('.astra-demo-import').attr( 'data-xml-processing' ); if( 'yes' === xml_processing ) { return; } $('.astra-demo-import').attr( 'data-xml-processing', 'yes' ); // 2. Pass - Prepare XML Data. // Import XML though Event Source. AstraSSEImport.data = xml_data.data; AstraSSEImport.render(); $('.current-importing-status-description').html('').show(); $('.astra-sites-result-preview .inner').append('
'); var evtSource = new EventSource( AstraSSEImport.data.url ); evtSource.onmessage = function ( message ) { var data = JSON.parse( message.data ); switch ( data.action ) { case 'updateDelta': AstraSSEImport.updateDelta( data.type, data.delta ); break; case 'complete': evtSource.close(); $('.current-importing-status-description').hide(); $('.astra-demo-import').removeAttr( 'data-xml-processing' ); document.getElementsByClassName("astra-site-import-process").value = '100'; $('.astra-site-import-process-wrap').hide(); $(document).trigger( 'astra-sites-import-xml-done' ); break; } }; evtSource.addEventListener( 'log', function ( message ) { var data = JSON.parse( message.data ); var message = data.message || ''; if( message && 'info' === data.level ) { message = message.replace(/"/g, function(letter) { return ''; }); $('.current-importing-status-description').html( message ); } }); } }); } else { $(document).trigger( 'astra-sites-import-xml-done' ); } }, _is_process_xml: function() { if ( $( '.astra-sites-import-xml' ).find('.checkbox').is(':checked') ) { return true; } return false; }, _is_process_customizer: function() { if ( $( '.astra-sites-import-customizer' ).find('.checkbox').is(':checked') ) { return true; } return false; }, _is_process_widgets: function() { if ( $( '.astra-sites-import-widgets' ).find('.checkbox').is(':checked') ) { return true; } return false; }, /** * 1. Import WPForms Options. */ _importWPForms: function( event ) { if ( AstraSitesAdmin._is_process_customizer() ) { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { action : 'astra-sites-import-wpforms', wpforms_url : AstraSitesAdmin.wpforms_url, }, beforeSend: function() { AstraSitesAdmin._log_title( 'Importing WP Forms..' ); }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText, true ); }) .done(function ( forms ) { // 1. Fail - Import WPForms Options. if( false === forms.success ) { AstraSitesAdmin._log_title( forms.data ); } else { // 1. Pass - Import Customizer Options. $(document).trigger( 'astra-sites-import-wpforms-done' ); } }); } else { $(document).trigger( 'astra-sites-import-wpforms-done' ); } }, /** * 1. Import Customizer Options. */ _importCustomizerSettings: function( event ) { if ( AstraSitesAdmin._is_process_customizer() ) { $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { action : 'astra-sites-import-customizer-settings', customizer_data : AstraSitesAdmin.customizer_data, }, beforeSend: function() { }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText, true ); }) .done(function ( customizer_data ) { // 1. Fail - Import Customizer Options. if( false === customizer_data.success ) { AstraSitesAdmin._log_title( customizer_data.data ); } else { // 1. Pass - Import Customizer Options. $(document).trigger( 'astra-sites-import-customizer-settings-done' ); } }); } else { $(document).trigger( 'astra-sites-import-customizer-settings-done' ); } }, /** * Import Success Button. * * @param {string} data Error message. */ _importSuccessButton: function() { $('.astra-demo-import').removeClass('updating-message installing') .removeAttr('data-import') .addClass('view-site') .removeClass('astra-demo-import') .text( astraSitesAdmin.strings.viewSite ) .attr('target', '_blank') .append('') .attr('href', astraSitesAdmin.siteURL ); }, /** * Preview Device */ _previewDevice: function( event ) { var device = $( event.currentTarget ).data( 'device' ); $('.theme-install-overlay') .removeClass( 'preview-desktop preview-tablet preview-mobile' ) .addClass( 'preview-' + device ) .data( 'current-preview-device', device ); AstraSitesAdmin._tooglePreviewDeviceButtons( device ); }, /** * Toggle Preview Buttons */ _tooglePreviewDeviceButtons: function( newDevice ) { var $devices = $( '.wp-full-overlay-footer .devices' ); $devices.find( 'button' ) .removeClass( 'active' ) .attr( 'aria-pressed', false ); $devices.find( 'button.preview-' + newDevice ) .addClass( 'active' ) .attr( 'aria-pressed', true ); }, /** * Import Error Button. * * @param {string} data Error message. */ _importFailMessage: function( message, from ) { $('.astra-demo-import') .addClass('go-pro button-primary') .removeClass('updating-message installing') .removeAttr('data-import') .attr('target', '_blank') .append('') .removeClass('astra-demo-import'); // Add the doc link due to import log file not generated. if( 'undefined' === from ) { $('.wp-full-overlay-header .go-pro').text( astraSitesAdmin.strings.importFailedBtnSmall ); $('.wp-full-overlay-footer .go-pro').text( astraSitesAdmin.strings.importFailedBtnLarge ); $('.go-pro').attr('href', astraSitesAdmin.log.serverConfiguration ); // Add the import log file link. } else { $('.wp-full-overlay-header .go-pro').text( astraSitesAdmin.strings.importFailBtn ); $('.wp-full-overlay-footer .go-pro').text( astraSitesAdmin.strings.importFailBtnLarge ) // Add the import log file link. if( 'undefined' !== AstraSitesAdmin.log_file_url ) { $('.go-pro').attr('href', AstraSitesAdmin.log_file_url ); } else { $('.go-pro').attr('href', astraSitesAdmin.log.serverConfiguration ); } } var output = '
'; output += '

'+message+'

'; output += ' '; output += '
'; // Fail Notice. $('.install-theme-info').append( output ); // !important to add trigger. // Which reinitialize the dismiss error message events. $(document).trigger('wp-updates-notice-added'); }, /** * 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; } AstraSitesAdmin._log_title( 'Installing Required Plugin..' ); if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.ajaxLocked ) { wp.updates.requestFilesystemCredentials( event ); $document.on( 'credential-modal-cancel', function() { var $message = $( '.install-now.updating-message' ); $message .removeClass( 'updating-message' ) .text( wp.updates.l10n.installNow ); wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' ); } ); } AstraSitesAdmin._log_title( 'Installing Plugin - ' + AstraSitesAdmin.ucwords( $button.data( 'name' ) ) ); wp.updates.installPlugin( { slug: $button.data( 'slug' ) } ); }, ucwords: function( str ) { if( ! str ) { return ''; } str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); }); str = str.replace(/-/g, function(letter) { return ' '; }); return str; }, /** * Install Success */ _installSuccess: function( event, response ) { event.preventDefault(); var $siteOptions = $( '.wp-full-overlay-header').find('.astra-site-options').val(); var $enabledExtensions = $( '.wp-full-overlay-header').find('.astra-enabled-extensions').val(); // Transform the 'Install' button into an 'Activate' button. var $init = $( '.plugin-card-' + response.slug ).data('init'); var $name = $( '.plugin-card-' + response.slug ).data('name'); // Reset not installed plugins list. var pluginsList = astraSitesAdmin.requiredPlugins.notinstalled; astraSitesAdmin.requiredPlugins.notinstalled = AstraSitesAdmin._removePluginFromQueue( response.slug, pluginsList ); // WordPress adds "Activate" button after waiting for 1000ms. So we will run our activation after that. setTimeout( function() { AstraSitesAdmin._log_title( 'Installing Plugin - ' + AstraSitesAdmin.ucwords($name) ); $.ajax({ url: astraSitesAdmin.ajaxurl, type: 'POST', data: { 'action' : 'astra-required-plugin-activate', 'init' : $init, 'options' : $siteOptions, 'enabledExtensions' : $enabledExtensions, }, }) .done(function (result) { if( result.success ) { var pluginsList = astraSitesAdmin.requiredPlugins.inactive; AstraSitesAdmin._log_title( 'Installed Plugin - ' + AstraSitesAdmin.ucwords($name) ); // Reset not installed plugins list. astraSitesAdmin.requiredPlugins.inactive = AstraSitesAdmin._removePluginFromQueue( response.slug, pluginsList ); // Enable Demo Import Button AstraSitesAdmin._enable_demo_import_button(); } }); }, 1200 ); }, /** * Plugin Installation Error. */ _installError: function( event, response ) { var $card = $( '.plugin-card-' + response.slug ); var $name = $card.data('name'); AstraSitesAdmin._log_title( response.errorMessage + ' ' + AstraSitesAdmin.ucwords($name) ); $card .removeClass( 'button-primary' ) .addClass( 'disabled' ) .html( wp.updates.l10n.installFailedShort ); }, /** * Installing Plugin */ _pluginInstalling: function(event, args) { event.preventDefault(); var $card = $( '.plugin-card-' + args.slug ); var $name = $card.data('name'); AstraSitesAdmin._log_title( 'Installing Plugin - ' + AstraSitesAdmin.ucwords( $name )); $card.addClass('updating-message'); }, /** * Render Demo Preview */ _activateNow: function( eventn ) { event.preventDefault(); var $button = jQuery( event.target ), $init = $button.data( 'init' ), $slug = $button.data( 'slug' ); $name = $button.data( 'name' ); if ( $button.hasClass( 'updating-message' ) || $button.hasClass( 'button-disabled' ) ) { return; } AstraSitesAdmin._log_title( 'Activating Plugin - ' + AstraSitesAdmin.ucwords( $name ) ); $button.addClass('updating-message button-primary') .html( astraSitesAdmin.strings.btnActivating ); var $siteOptions = jQuery( '.wp-full-overlay-header').find('.astra-site-options').val(); var $enabledExtensions = jQuery( '.wp-full-overlay-header').find('.astra-enabled-extensions').val(); $.ajax({ url: astraSitesAdmin.ajaxurl, type: 'POST', data: { 'action' : 'astra-required-plugin-activate', 'init' : $init, 'options' : $siteOptions, 'enabledExtensions' : $enabledExtensions, }, }) .done(function (result) { if( result.success ) { AstraSitesAdmin._log_title( 'Activated Plugin - ' + AstraSitesAdmin.ucwords($name) ); var pluginsList = astraSitesAdmin.requiredPlugins.inactive; // Reset not installed plugins list. astraSitesAdmin.requiredPlugins.inactive = AstraSitesAdmin._removePluginFromQueue( $slug, pluginsList ); $button.removeClass( 'button-primary install-now activate-now updating-message' ) .attr('disabled', 'disabled') .addClass('disabled') .text( astraSitesAdmin.strings.btnActive ); // Enable Demo Import Button AstraSitesAdmin._enable_demo_import_button(); } }) .fail(function () { }); }, /** * Full Overlay */ _fullOverlay: function (event) { event.preventDefault(); // Import process is started? // And Closing the window? Then showing the warning confirm message. if( $('body').hasClass('importing-site') && ! confirm( astraSitesAdmin.strings.warningBeforeCloseWindow ) ) { return; } $('body').removeClass('importing-site'); $('.previous-theme, .next-theme').removeClass('disabled'); $('.theme-install-overlay').css('display', 'none'); $('.theme-install-overlay').remove(); $('.theme-preview-on').removeClass('theme-preview-on'); $('html').removeClass('astra-site-preview-on'); }, /** * Bulk Plugin Active & Install */ _bulkPluginInstallActivate: function() { if( 0 === astraSitesAdmin.requiredPlugins.length ) { return; } var not_installed = astraSitesAdmin.requiredPlugins.notinstalled || ''; var activate_plugins = astraSitesAdmin.requiredPlugins.inactive || ''; // First Install Bulk. if( not_installed.length > 0 ) { AstraSitesAdmin._installAllPlugins( not_installed ); } // Second Activate Bulk. if( activate_plugins.length > 0 ) { AstraSitesAdmin._activateAllPlugins( activate_plugins ); } if( activate_plugins.length <= 0 && not_installed.length <= 0 ) { AstraSitesAdmin._enable_demo_import_button(); } }, /** * Activate All Plugins. */ _activateAllPlugins: function( activate_plugins ) { AstraSitesAdmin._log_title( 'Activating Required Plugins..' ); $.each( activate_plugins, function(index, single_plugin) { var $card = $( '.plugin-card-' + single_plugin.slug ), $siteOptions = $( '.wp-full-overlay-header').find('.astra-site-options').val(), $enabledExtensions = $( '.wp-full-overlay-header').find('.astra-enabled-extensions').val(); AstraSitesAjaxQueue.add({ url: astraSitesAdmin.ajaxurl, type: 'POST', data: { 'action' : 'astra-required-plugin-activate', 'init' : single_plugin.init, 'options' : $siteOptions, 'enabledExtensions' : $enabledExtensions, }, success: function( result ){ if( result.success ) { var pluginsList = astraSitesAdmin.requiredPlugins.inactive; // Reset not installed plugins list. astraSitesAdmin.requiredPlugins.inactive = AstraSitesAdmin._removePluginFromQueue( single_plugin.slug, pluginsList ); // Enable Demo Import Button AstraSitesAdmin._enable_demo_import_button(); } else { } } }); }); AstraSitesAjaxQueue.run(); }, /** * Install All Plugins. */ _installAllPlugins: function( not_installed ) { AstraSitesAdmin._log_title( 'Installing Required Plugins..' ); $.each( not_installed, function(index, single_plugin) { AstraSitesAdmin._log_title( 'Installing Plugin - ' + AstraSitesAdmin.ucwords( single_plugin.name )); var $card = $( '.plugin-card-' + single_plugin.slug ); // Add each plugin activate request in Ajax queue. // @see wp-admin/js/updates.js wp.updates.queue.push( { action: 'install-plugin', // Required action. data: { slug: single_plugin.slug } } ); }); // Required to set queue. wp.updates.queueChecker(); }, /** * Fires when a nav item is clicked. * * @since 1.0 * @access private * @method _importDemo */ _importDemo: function(event) { event.preventDefault(); var date = new Date(); AstraSitesAdmin.import_start_time = new Date(); var disabled = $(this).attr('data-import'); if ( typeof disabled !== 'undefined' && disabled === 'disabled' || $this.hasClass('disabled') ) { $('.astra-demo-import').addClass('updating-message installing') .text( wp.updates.l10n.installing ); $('.astra-sites-result-preview').show(); var output = '
'; $('.current-importing-status').html( output ); /** * Process Bulk Plugin Install & Activate */ AstraSitesAdmin._bulkPluginInstallActivate(); } }, _process_import: function() { var $theme = $('.astra-sites-preview').find('.wp-full-overlay-header'), apiURL = $theme.data('demo-api') || ''; $('body').addClass('importing-site'); $('.previous-theme, .next-theme').addClass('disabled'); // Remove all notices before import start. $('.install-theme-info > .notice').remove(); $('.astra-demo-import').attr('data-import', 'disabled') .addClass('updating-message installing') .text( astraSitesAdmin.strings.importingDemo ); // Site Import by API URL. if( apiURL ) { AstraSitesAdmin._importSite( apiURL ); } }, /** * Start Import Process by API URL. * * @param {string} apiURL Site API URL. */ _importSite: function( apiURL ) { AstraSitesAdmin._log_title( 'Started Importing..' ); // 1. Request Site Import $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', dataType: 'json', data : { 'action' : 'astra-sites-import-set-site-data', 'api_url' : apiURL, }, }) .fail(function( jqXHR ){ AstraSitesAdmin._log_title( jqXHR.status + ' ' + jqXHR.responseText + ' ' + jqXHR.statusText, true ); }) .done(function ( demo_data ) { // 1. Fail - Request Site Import if( false === demo_data.success ) { } else { // Set log file URL. if( 'log_file' in demo_data.data ){ AstraSitesAdmin.log_file_url = decodeURIComponent( demo_data.data.log_file ) || ''; } // 1. Pass - Request Site Import AstraSitesAdmin.customizer_data = JSON.stringify( demo_data.data['astra-site-customizer-data'] ) || ''; AstraSitesAdmin.wxr_url = encodeURI( demo_data.data['astra-site-wxr-path'] ) || ''; AstraSitesAdmin.wpforms_url = encodeURI( demo_data.data['astra-site-wpforms-path'] ) || ''; AstraSitesAdmin.options_data = JSON.stringify( demo_data.data['astra-site-options-data'] ) || ''; AstraSitesAdmin.widgets_data = JSON.stringify( demo_data.data['astra-site-widgets-data'] ) || ''; $(document).trigger( 'astra-sites-import-set-site-data-done' ); } }); }, /** * Collapse Sidebar. */ _collapse: function() { event.preventDefault(); overlay = jQuery('.wp-full-overlay'); if (overlay.hasClass('expanded')) { overlay.removeClass('expanded'); overlay.addClass('collapsed'); return; } if (overlay.hasClass('collapsed')) { overlay.removeClass('collapsed'); overlay.addClass('expanded'); return; } }, /** * Previous Theme. */ _previousTheme: function (event) { event.preventDefault(); currentDemo = jQuery('.theme-preview-on'); currentDemo.removeClass('theme-preview-on'); prevDemo = currentDemo.prev('.theme'); prevDemo.addClass('theme-preview-on'); var site_id = $(this).parents('.wp-full-overlay-header').data('demo-id') || ''; if( AstraSitesAPI._stored_data ) { var site_data = AstraSitesAdmin._get_site_details( site_id ); if( site_data ) { // Set current site details. AstraSitesAdmin.current_site = site_data; } } AstraSitesAdmin._renderDemoPreview(prevDemo); }, /** * Next Theme. */ _nextTheme: function (event) { event.preventDefault(); currentDemo = jQuery('.theme-preview-on') currentDemo.removeClass('theme-preview-on'); nextDemo = currentDemo.next('.theme'); nextDemo.addClass('theme-preview-on'); var site_id = $(this).parents('.wp-full-overlay-header').data('demo-id') || ''; if( AstraSitesAPI._stored_data ) { var site_data = AstraSitesAdmin._get_site_details( site_id ); if( site_data ) { // Set current site details. AstraSitesAdmin.current_site = site_data; } } AstraSitesAdmin._renderDemoPreview( nextDemo ); }, _set_current_screen: function( screen ) { AstraSitesAdmin.current_screen = screen; var old_screen = $('.astra-sites-preview').attr( 'screen' ) || ''; if( old_screen ) { $('.astra-sites-preview').removeClass( 'screen-' + old_screen ); } $('.astra-sites-preview').attr( 'screen', screen ); $('.astra-sites-preview').addClass( 'screen-' + screen ); }, /** * Individual Site Preview * * On click on image, more link & preview button. */ _preview: function( event ) { event.preventDefault(); var site_id = $(this).parents('.site-single').data('demo-id') || ''; if( AstraSitesAPI._stored_data ) { var site_data = AstraSitesAdmin._get_site_details( site_id ); if( site_data ) { // Set current site details. AstraSitesAdmin.current_site = site_data; // Set current screen. AstraSitesAdmin._set_current_screen( 'get-started' ); } } var self = $(this).parents('.theme'); self.addClass('theme-preview-on'); $('html').addClass('astra-site-preview-on'); AstraSitesAdmin._renderDemoPreview( self ); }, _get_site_details: function( site_id ) { var all_sites = AstraSitesAPI._stored_data['astra-sites'] || []; if( ! all_sites ) { return false; } var single_site = all_sites.filter(function (site) { return site.id == site_id }); if( ! single_site ) { return false; } if( ! $.isArray( single_site ) ) { return false; } return single_site[0]; }, /** * Check Next Previous Buttons. */ _checkNextPrevButtons: function() { currentDemo = jQuery('.theme-preview-on'); nextDemo = currentDemo.nextAll('.theme').length; prevDemo = currentDemo.prevAll('.theme').length; if (nextDemo == 0) { jQuery('.next-theme').addClass('disabled'); } else if (nextDemo != 0) { jQuery('.next-theme').removeClass('disabled'); } if (prevDemo == 0) { jQuery('.previous-theme').addClass('disabled'); } else if (prevDemo != 0) { jQuery('.previous-theme').removeClass('disabled'); } return; }, /** * Render Demo Preview */ _renderDemoPreview: function(anchor) { var demoId = anchor.data('demo-id') || '', apiURL = anchor.data('demo-api') || '', demoType = anchor.data('demo-type') || '', demoURL = anchor.data('demo-url') || '', screenshot = anchor.data('screenshot') || '', demo_name = anchor.data('demo-name') || '', demo_slug = anchor.data('demo-slug') || '', content = anchor.data('content') || '', requiredPlugins = anchor.data('required-plugins') || '', astraSiteOptions = anchor.find('.astra-site-options').val() || ''; astraEnabledExtensions = anchor.find('.astra-enabled-extensions').val() || ''; var template = wp.template('astra-site-preview'); templateData = [{ id : demoId, astra_demo_type : demoType, astra_demo_url : demoURL, demo_api : apiURL, screenshot : screenshot, demo_name : demo_name, slug : demo_slug, content : content, required_plugins : JSON.stringify(requiredPlugins), astra_site_options : astraSiteOptions, astra_enabled_extensions : astraEnabledExtensions, }]; // delete any earlier fullscreen preview before we render new one. $('.theme-install-overlay').remove(); $('#astra-sites-menu-page').append(template(templateData[0])); $('.theme-install-overlay').css('display', 'block'); AstraSitesAdmin._checkNextPrevButtons(); var desc = $('.theme-details'); var descHeight = parseInt( desc.outerHeight() ); var descBtn = $('.theme-details-read-more'); // Check is site imported recently and set flag. $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', data : { action : 'astra-sites-set-reset-data', }, }) .done(function ( response ) { if( response.success ) { AstraSitesAdmin.site_imported_data = response.data; } }); if( $.isArray( requiredPlugins ) ) { if( descHeight >= 55 ) { // Show button. descBtn.css( 'display', 'inline-block' ); // Set height upto 3 line. desc.css( 'height', 57 ); // Button Click. descBtn.click(function(event) { if( descBtn.hasClass('open') ) { desc.animate({ height: 57 }, 300, function() { descBtn.removeClass('open'); descBtn.html( astraSitesAdmin.strings.DescExpand ); }); } else { desc.animate({ height: descHeight }, 300, function() { descBtn.addClass('open'); descBtn.html( astraSitesAdmin.strings.DescCollapse ); }); } }); } // or var $pluginsFilter = $( '#plugin-filter' ), data = { action : 'astra-required-plugins', _ajax_nonce : astraSitesAdmin._ajax_nonce, required_plugins : requiredPlugins }; // Add disabled class from import button. $('.astra-demo-import') .addClass('disabled not-click-able') .removeAttr('data-import'); $('.required-plugins').addClass('loading').html(''); // Required Required. $.ajax({ url : astraSitesAdmin.ajaxurl, type : 'POST', data : data, }) .fail(function( jqXHR ){ // Remove loader. $('.required-plugins').removeClass('loading').html(''); }) .done(function ( response ) { required_plugins = response.data['required_plugins']; if( response.data['third_party_required_plugins'].length ) { $('.astra-demo-import').removeClass('button-primary').addClass('disabled'); $('.astra-sites-third-party-required-plugins-wrap').remove(); var template = wp.template('astra-sites-third-party-required-plugins'); $('.astra-sites-advanced-options-wrap').html( template( response.data['third_party_required_plugins'] ) ); } else { // Release disabled class from import button. $('.astra-demo-import') .removeClass('disabled not-click-able') .attr('data-import', 'disabled'); } // Remove loader. $('.required-plugins').removeClass('loading').html(''); $('.required-plugins-list').html(''); /** * Count remaining plugins. * @type number */ var remaining_plugins = 0; /** * Not Installed * * List of not installed required plugins. */ if ( typeof required_plugins.notinstalled !== 'undefined' ) { // Add not have installed plugins count. remaining_plugins += parseInt( required_plugins.notinstalled.length ); $( required_plugins.notinstalled ).each(function( index, plugin ) { $('.required-plugins-list').append('
  • '+plugin.name+'
  • '); }); } /** * Inactive * * List of not inactive required plugins. */ if ( typeof required_plugins.inactive !== 'undefined' ) { // Add inactive plugins count. remaining_plugins += parseInt( required_plugins.inactive.length ); $( required_plugins.inactive ).each(function( index, plugin ) { $('.required-plugins-list').append('
  • '+plugin.name+'
  • '); }); } /** * Active * * List of not active required plugins. */ if ( typeof required_plugins.active !== 'undefined' ) { $( required_plugins.active ).each(function( index, plugin ) { $('.required-plugins-list').append('
  • '+plugin.name+'
  • '); }); } /** * Enable Demo Import Button * @type number */ astraSitesAdmin.requiredPlugins = required_plugins; }); } else { // Enable Demo Import Button AstraSitesAdmin._enable_demo_import_button( demoType ); $('.astra-sites-advanced-options-wrap').remove(); } return; }, /** * Enable Demo Import Button. */ _enable_demo_import_button: function( type ) { type = ( undefined !== type ) ? type : 'free'; $('.install-theme-info .theme-details .site-description').remove(); switch( type ) { case 'free': var notinstalled = astraSitesAdmin.requiredPlugins.notinstalled || 0; var inactive = astraSitesAdmin.requiredPlugins.inactive || 0; if( notinstalled.length === inactive.length ) { // XML reader not available notice. if( astraSitesAdmin.XMLReaderDisabled ) { if( ! $('.install-theme-info .astra-sites-xml-notice').length ) { $('.install-theme-info').prepend( astraSitesAdmin.strings.warningXMLReader ); } $('.astra-demo-import') .removeClass('installing updating-message') .addClass('disabled') .text( astraSitesAdmin.strings.importDemo ); } else { $(document).trigger( 'astra-sites-install-and-activate-required-plugins-done' ); } } break; case 'upgrade': var demo_slug = $('.wp-full-overlay-header').attr('data-demo-slug'); $('.astra-demo-import') .addClass('go-pro button-primary') .removeClass('astra-demo-import') .attr('target', '_blank') .attr('href', astraSitesAdmin.getUpgradeURL + demo_slug ) .text( astraSitesAdmin.getUpgradeText ) .append(''); break; default: var demo_slug = $('.wp-full-overlay-header').attr('data-demo-slug'); $('.astra-demo-import') .addClass('go-pro button-primary') .removeClass('astra-demo-import') .attr('target', '_blank') .attr('href', astraSitesAdmin.getProURL ) .text( astraSitesAdmin.getProText ) .append(''); $('.wp-full-overlay-header').find('.go-pro').remove(); if( false == astraSitesAdmin.isWhiteLabeled ) { if( astraSitesAdmin.isPro ) { $('.install-theme-info .theme-details').prepend( wp.template('astra-sites-pro-inactive-site-description') ); } else { $('.install-theme-info .theme-details').prepend( wp.template('astra-sites-pro-site-description') ); } } break; } }, /** * Update Page Count. */ _updatedPagedCount: function() { paged = parseInt(jQuery('body').attr('data-astra-demo-paged')); jQuery('body').attr('data-astra-demo-paged', paged + 1); window.setTimeout(function () { jQuery('body').data('scrolling', false); }, 800); }, /** * Reset Page Count. */ _resetPagedCount: function() { $('body').addClass('loading-content'); $('body').attr('data-astra-demo-last-request', '1'); $('body').attr('data-astra-demo-paged', '1'); $('body').attr('data-astra-demo-search', ''); $('body').attr('data-scrolling', false); }, /** * Remove plugin from the queue. */ _removePluginFromQueue: function( removeItem, pluginsList ) { return jQuery.grep(pluginsList, function( value ) { return value.slug != removeItem; }); } }; /** * Initialize AstraSitesAdmin */ $(function(){ AstraSitesAdmin.init(); }); })(jQuery);