1824 lines
56 KiB
JavaScript
1824 lines
56 KiB
JavaScript
/**
|
|
* 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 ($) {
|
|
|
|
$elscope = {};
|
|
|
|
$.fn.isInViewport = function () {
|
|
|
|
// If not have the element then return false!
|
|
if (!$(this).length) {
|
|
return false;
|
|
}
|
|
|
|
var elementTop = $(this).offset().top;
|
|
var elementBottom = elementTop + $(this).outerHeight();
|
|
var viewportTop = $(window).scrollTop();
|
|
var viewportBottom = viewportTop + $(window).height();
|
|
|
|
return elementBottom > viewportTop && elementTop < viewportBottom;
|
|
};
|
|
|
|
AstraElementorSitesAdmin = {
|
|
|
|
visited_pages: [],
|
|
reset_remaining_posts: 0,
|
|
site_imported_data: null,
|
|
backup_taken: false,
|
|
templateData: {},
|
|
insertData: {},
|
|
log_file: '',
|
|
pages_list: '',
|
|
insertActionFlag: false,
|
|
page_id: '',
|
|
site_id: '',
|
|
block_id: '',
|
|
requiredPlugins: [],
|
|
canImport: false,
|
|
canInsert: false,
|
|
type: 'pages',
|
|
action: '',
|
|
masonryObj: [],
|
|
index: 0,
|
|
blockCategory: '',
|
|
blockColor: '',
|
|
processing: false,
|
|
siteType: '',
|
|
page: 1,
|
|
per_page: 20,
|
|
|
|
init: function () {
|
|
this._bind();
|
|
},
|
|
|
|
/**
|
|
* Binds events for the Astra Sites.
|
|
*
|
|
* @since 1.0.0
|
|
* @access private
|
|
* @method _bind
|
|
*/
|
|
_bind: function () {
|
|
|
|
if (elementorCommon) {
|
|
|
|
let add_section_tmpl = $("#tmpl-elementor-add-section");
|
|
|
|
if (add_section_tmpl.length > 0) {
|
|
|
|
let action_for_add_section = add_section_tmpl.text();
|
|
let white_label_class = '';
|
|
let stylesheet = '';
|
|
if (astraElementorSites.isWhiteLabeled) {
|
|
white_label_class = " ast-elementor-white-label"
|
|
stylesheet = '<style type="">.elementor-add-ast-site-button.ast-elementor-white-label .eicon-folder:before {content: \'' + astraElementorSites.plugin_name[0] + '\';}</style>'
|
|
}
|
|
|
|
action_for_add_section = action_for_add_section.replace('<div class="elementor-add-section-drag-title', stylesheet + '<div class="elementor-add-section-area-button elementor-add-ast-site-button ' + white_label_class + '" title="' + astraElementorSites.plugin_name + '"> <i class="eicon-folder"></i> </div><div class="elementor-add-section-drag-title');
|
|
|
|
add_section_tmpl.text(action_for_add_section);
|
|
|
|
elementor.on("preview:loaded", function () {
|
|
|
|
let base_skeleton = wp.template('ast-template-base-skeleton');
|
|
let header_template = $('#tmpl-ast-template-modal__header').text();
|
|
|
|
if ($('#ast-sites-modal').length == 0) {
|
|
|
|
$('body').append(base_skeleton());
|
|
$elscope = $('#ast-sites-modal');
|
|
$elscope.find('.astra-sites-content-wrap').before(header_template);
|
|
}
|
|
|
|
AstraElementorSitesAdmin._populate_color_filters();
|
|
|
|
$elscope.find('.astra-blocks-category').select2();
|
|
|
|
$elscope.find('.astra-blocks-category').on('select2:select', AstraElementorSitesAdmin._categoryChange);
|
|
$elscope.find('#elementor-template-block-color-filter select').on('change', AstraElementorSitesAdmin._blockColorChange);
|
|
|
|
$(elementor.$previewContents[0].body).on("click", ".elementor-add-ast-site-button", AstraElementorSitesAdmin._open);
|
|
|
|
// Click events.
|
|
$('body').on("click", ".ast-sites-modal__header__close", AstraElementorSitesAdmin._close);
|
|
$('body').on("click", "#ast-sites-modal .elementor-template-library-menu-item", AstraElementorSitesAdmin._libraryClick);
|
|
$('body').on("click", "#ast-sites-modal .theme-screenshot", AstraElementorSitesAdmin._preview);
|
|
$('body').on("click", "#ast-sites-modal .back-to-layout", AstraElementorSitesAdmin._goBack);
|
|
$('body').on("click", AstraElementorSitesAdmin._closeTooltip);
|
|
|
|
$(document).on("click", "#ast-sites-modal .ast-library-template-insert", AstraElementorSitesAdmin._insert);
|
|
$(document).on("click", ".ast-import-elementor-template", AstraElementorSitesAdmin._importTemplate);
|
|
$('body').on("click", "#ast-sites-modal .astra-sites-tooltip-icon", AstraElementorSitesAdmin._toggleTooltip);
|
|
$(document).on("click", ".elementor-template-library-menu-item", AstraElementorSitesAdmin._toggle);
|
|
$(document).on('click', '#ast-sites-modal .astra-sites__sync-wrap', AstraElementorSitesAdmin._sync);
|
|
$(document).on('click', '#ast-sites-modal .ast-sites-modal__header__logo, #ast-sites-modal .back-to-layout-button', AstraElementorSitesAdmin._home);
|
|
$(document).on('click', '#ast-sites-modal .notice-dismiss', AstraElementorSitesAdmin._dismiss);
|
|
|
|
// Other events.
|
|
$elscope.find('.astra-sites-content-wrap').scroll(AstraElementorSitesAdmin._loadLargeImages);
|
|
$(document).on('keyup input', '#ast-sites-modal #wp-filter-search-input', AstraElementorSitesAdmin._search);
|
|
$(document).on('change', '#ast-sites-modal .elementor-template-library-order-input', AstraElementorSitesAdmin._changeType);
|
|
|
|
// Triggers.
|
|
$(document).on("astra-sites__elementor-open-after", AstraElementorSitesAdmin._initSites);
|
|
$(document).on("astra-sites__elementor-open-before", AstraElementorSitesAdmin._beforeOpen);
|
|
$(document).on("astra-sites__elementor-plugin-check", AstraElementorSitesAdmin._pluginCheck);
|
|
$(document).on('astra-sites__elementor-close-before', AstraElementorSitesAdmin._beforeClose);
|
|
|
|
$(document).on('astra-sites__elementor-do-step-1', AstraElementorSitesAdmin._step1);
|
|
$(document).on('astra-sites__elementor-do-step-2', AstraElementorSitesAdmin._step2);
|
|
|
|
$(document).on('astra-sites__elementor-goback-step-1', AstraElementorSitesAdmin._goStep1);
|
|
$(document).on('astra-sites__elementor-goback-step-2', AstraElementorSitesAdmin._goStep2);
|
|
|
|
// Plugin install & activate.
|
|
$(document).on('wp-plugin-installing', AstraElementorSitesAdmin._pluginInstalling);
|
|
$(document).on('wp-plugin-install-error', AstraElementorSitesAdmin._installError);
|
|
$(document).on('wp-plugin-install-success', AstraElementorSitesAdmin._installSuccess);
|
|
|
|
//open modal on reload after required plugins activated
|
|
AstraElementorSitesAdmin.insertBlockOnRefresh();
|
|
});
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
insertBlockOnRefresh() {
|
|
const urlObj = new URL( window.location.href );
|
|
const remoteST = urlObj.searchParams.get( 'remoteST' );
|
|
// Get the value of the "blockID" parameter
|
|
const blockID = urlObj.searchParams.get( 'blockID' );
|
|
const type =
|
|
urlObj.searchParams.get( 'type' ) === 'blocks'
|
|
? 'astra-blocks'
|
|
: 'site-pages';
|
|
|
|
if ( remoteST && blockID && type ) {
|
|
const data = astraElementorSites['last_viewed_block_data'];
|
|
const templateModel = new Backbone.Model( {
|
|
getTitle() {
|
|
return data?.title;
|
|
},
|
|
} );
|
|
this.requestInsert(
|
|
blockID,
|
|
type,
|
|
templateModel,
|
|
this.afterInsert,
|
|
this.beforeInsert,
|
|
this.failedCallback
|
|
);
|
|
this.removeAddedParams();
|
|
}
|
|
},
|
|
|
|
_populate_color_filters: function() {
|
|
|
|
if( ! Object.keys( astraElementorSites.astra_blocks ).length ) {
|
|
return;
|
|
}
|
|
|
|
let template = wp.template('ast-template-block-color-filters');
|
|
|
|
var colorFilters = [];
|
|
|
|
for( block_id in astraElementorSites.astra_blocks ) {
|
|
if( astraElementorSites.astra_blocks[ block_id ]['filter'] && ! colorFilters.includes( astraElementorSites.astra_blocks[ block_id ]['filter'] )) {
|
|
colorFilters.push( astraElementorSites.astra_blocks[ block_id ]['filter'] );
|
|
}
|
|
}
|
|
|
|
if( colorFilters.length <= 1 ) {
|
|
return;
|
|
}
|
|
|
|
$( '#elementor-template-block-color-filter' ).show().html( template( colorFilters ) );
|
|
|
|
},
|
|
|
|
_paginateBlocks: function () {
|
|
if (AstraElementorSitesAdmin.type == 'blocks') {
|
|
if (undefined != $elscope.find('.astra-sites-library-template:last').offset()) {
|
|
if (($('.dialog-widget-content').scrollTop() + 600) >= ($elscope.find('.astra-sites-library-template:last').offset().top)) {
|
|
AstraElementorSitesAdmin.page = (AstraElementorSitesAdmin.page + 1);
|
|
// Set listing HTML.
|
|
AstraElementorSitesAdmin._appendPaginationBlocks(astraElementorSites.astra_blocks);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
_changeType: function () {
|
|
AstraElementorSitesAdmin.siteType = $(this).val();
|
|
$elscope.find('#wp-filter-search-input').trigger('keyup');
|
|
},
|
|
|
|
_categoryChange: function (event) {
|
|
AstraElementorSitesAdmin.blockCategory = $(this).val();
|
|
$elscope.find('#wp-filter-search-input').trigger('keyup');
|
|
},
|
|
|
|
_blockColorChange: function (event) {
|
|
AstraElementorSitesAdmin.blockColor = $(this).val();
|
|
$elscope.find('#wp-filter-search-input').trigger('keyup');
|
|
},
|
|
|
|
_dismiss: function () {
|
|
$(this).closest('.ast-sites-floating-notice-wrap').removeClass('slide-in');
|
|
$(this).closest('.ast-sites-floating-notice-wrap').addClass('slide-out');
|
|
|
|
setTimeout(function () {
|
|
$(this).closest('.ast-sites-floating-notice-wrap').removeClass('slide-out');
|
|
}, 200);
|
|
|
|
if ($(this).closest('.ast-sites-floating-notice-wrap').hasClass('refreshed-notice')) {
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-update-library-complete',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
}).done(function (response) {
|
|
$('#ast-sites-floating-notice-wrap-id').toggle();
|
|
});
|
|
|
|
}
|
|
},
|
|
|
|
_done: function (data) {
|
|
|
|
console.groupEnd('Process Done.');
|
|
|
|
var str = (AstraElementorSitesAdmin.type == 'pages') ? astraElementorSites.template : astraElementorSites.block;
|
|
$elscope.find('.ast-import-elementor-template').removeClass('installing');
|
|
$elscope.find('.ast-import-elementor-template').attr('data-demo-link', data.data.link);
|
|
setTimeout(function () {
|
|
$elscope.find('.ast-import-elementor-template').text('View Saved ' + str);
|
|
$elscope.find('.ast-import-elementor-template').addClass('action-done');
|
|
}, 200);
|
|
},
|
|
|
|
_beforeClose: function () {
|
|
if (AstraElementorSitesAdmin.action == 'insert') {
|
|
$elscope.find('.ast-library-template-insert').removeClass('installing');
|
|
$elscope.find('.ast-library-template-insert').text('Imported');
|
|
$elscope.find('.ast-library-template-insert').addClass('action-done');
|
|
|
|
if ($elscope.find('.ast-sites-floating-notice-wrap').hasClass('slide-in')) {
|
|
|
|
$elscope.find('.ast-sites-floating-notice-wrap').removeClass('slide-in');
|
|
$elscope.find('.ast-sites-floating-notice-wrap').addClass('slide-out');
|
|
|
|
setTimeout(function () {
|
|
$elscope.find('.ast-sites-floating-notice-wrap').removeClass('slide-out');
|
|
}, 200);
|
|
}
|
|
}
|
|
},
|
|
|
|
_closeTooltip: function (event) {
|
|
|
|
if (
|
|
event.target.className !== "ast-tooltip-wrap" &&
|
|
event.target.className !== "dashicons dashicons-editor-help"
|
|
) {
|
|
var wrap = $elscope.find('.ast-tooltip-wrap');
|
|
if (wrap.hasClass('ast-show-tooltip')) {
|
|
$elscope.find('.ast-tooltip-wrap').removeClass('ast-show-tooltip');
|
|
}
|
|
}
|
|
},
|
|
|
|
_sync: function (event) {
|
|
|
|
event.preventDefault();
|
|
var button = $(this).find('.astra-sites-sync-library-button');
|
|
|
|
if (button.hasClass('updating-message')) {
|
|
return;
|
|
}
|
|
|
|
button.addClass('updating-message');
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id').show().removeClass('error');
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id .ast-sites-floating-notice').html('<span class="message">Syncing template library in the background. The process can take anywhere between 2 to 3 minutes. We will notify you once done.<span><button type="button" class="notice-dismiss"><span class="screen-reader-text">' + astraElementorSites.dismiss_text + '</span></button>');
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id').addClass('slide-in').removeClass('refreshed-notice');
|
|
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-update-library',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
})
|
|
.done(function (response) {
|
|
|
|
if (response.success) {
|
|
if ('updated' === response.data) {
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id').addClass('refreshed-notice').find('.ast-sites-floating-notice').html('<span class="message">' + astraElementorSites.syncCompleteMessage + '</span><button type="button" class="notice-dismiss"><span class="screen-reader-text">' + astraElementorSites.dismiss_text + '</span></button>');
|
|
button.removeClass('updating-message');
|
|
console.log('Already sync all the sites.');
|
|
} else {
|
|
|
|
// Import categories.
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-import-all-categories-and-tags',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
});
|
|
|
|
|
|
// Import categories.
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-import-all-categories',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
});
|
|
|
|
// Import Blocks.
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-get-blocks-request-count',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
beforeSend: function () {
|
|
console.groupCollapsed('Updating Blocks');
|
|
console.log('Updating Blocks');
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR, 'error');
|
|
console.error(jqXHR.status + jqXHR.statusText, 'Blocks Count Request Failed!', jqXHR);
|
|
console.groupEnd('Updating Blocks');
|
|
})
|
|
.done(function (response) {
|
|
console.log(response);
|
|
if (response.success) {
|
|
var total = response.data;
|
|
|
|
for (let i = 1; i <= total; i++) {
|
|
AstraSitesAjaxQueue.add({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-import-blocks',
|
|
page_no: i,
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
beforeSend: function () {
|
|
console.groupCollapsed('Importing Blocks - Page ' + i);
|
|
console.log('Importing Blocks - Page ' + i);
|
|
},
|
|
success: function (response) {
|
|
console.log(response);
|
|
console.groupEnd('Importing Blocks - Page ' + i);
|
|
}
|
|
});
|
|
}
|
|
|
|
// Run the AJAX queue.
|
|
AstraSitesAjaxQueue.run();
|
|
} else {
|
|
console.error(response.data, 'Blocks Count Request Failed!');
|
|
}
|
|
});
|
|
|
|
// Import Block Categories.
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-import-block-categories',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
});
|
|
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-get-sites-request-count',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
})
|
|
.done(function (response) {
|
|
if (response.success) {
|
|
var total = response.data;
|
|
|
|
for (let i = 1; i <= total; i++) {
|
|
AstraSitesAjaxQueue.add({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-import-sites',
|
|
page_no: i,
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
success: function (result) {
|
|
|
|
if (i === total && astraElementorSites.syncCompleteMessage) {
|
|
button.removeClass('updating-message');
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id').addClass('refreshed-notice').find('.ast-sites-floating-notice').html('<span class="message">' + astraElementorSites.syncCompleteMessage + '</span><button type="button" class="notice-dismiss"><span class="screen-reader-text">' + astraElementorSites.dismiss_text + '</span></button>');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// Run the AJAX queue.
|
|
AstraSitesAjaxQueue.run();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
_toggleTooltip: function (e) {
|
|
|
|
var wrap = $elscope.find('.ast-tooltip-wrap');
|
|
|
|
|
|
if (wrap.hasClass('ast-show-tooltip')) {
|
|
$elscope.find('.ast-tooltip-wrap').removeClass('ast-show-tooltip');
|
|
} else {
|
|
$elscope.find('.ast-tooltip-wrap').addClass('ast-show-tooltip');
|
|
}
|
|
},
|
|
|
|
_toggle: function (e) {
|
|
$elscope.find('.elementor-template-library-menu-item').removeClass('elementor-active');
|
|
|
|
$elscope.find('.dialog-lightbox-content').hide();
|
|
|
|
$elscope.find('.theme-preview').hide();
|
|
$elscope.find('.theme-preview').html('');
|
|
$elscope.find('.theme-preview-block').hide();
|
|
$elscope.find('.theme-preview-block').html('');
|
|
$elscope.find('.ast-template-library-toolbar').show();
|
|
|
|
$elscope.find('.dialog-lightbox-content').hide();
|
|
$elscope.find('.dialog-lightbox-content-block').hide();
|
|
|
|
$(this).addClass('elementor-active');
|
|
let data_type = $(this).data('template-type');
|
|
|
|
AstraElementorSitesAdmin.type = data_type;
|
|
AstraElementorSitesAdmin._switchTo(data_type);
|
|
},
|
|
|
|
_home: function () {
|
|
if (AstraElementorSitesAdmin.processing) {
|
|
return;
|
|
}
|
|
$elscope.find('#wp-filter-search-input').val('');
|
|
// Hide Back button.
|
|
$elscope.find('.back-to-layout').css('visibility', 'hidden');
|
|
$elscope.find('.back-to-layout').css('opacity', '0');
|
|
$elscope.find('.elementor-template-library-menu-item:first-child').trigger('click');
|
|
},
|
|
|
|
_switchTo: function (type) {
|
|
if ('pages' == type) {
|
|
AstraElementorSitesAdmin._initSites();
|
|
$elscope.find('.dialog-lightbox-content').show();
|
|
$elscope.find('.astra-blocks-category-inner-wrap').hide();
|
|
$elscope.find('.astra-blocks-filter-inner-wrap').hide();
|
|
$elscope.find('.elementor-template-library-order').show();
|
|
} else {
|
|
AstraElementorSitesAdmin._initBlocks();
|
|
$elscope.find('.dialog-lightbox-content-block').show();
|
|
$elscope.find('.astra-blocks-category-inner-wrap').show();
|
|
$elscope.find('.astra-blocks-filter-inner-wrap').show();
|
|
$elscope.find('.elementor-template-library-order').hide();
|
|
}
|
|
$elscope.find('.astra-sites-content-wrap').trigger('scroll');
|
|
},
|
|
|
|
_importWPForm: function (wpforms_url, callback) {
|
|
|
|
if ( ! wpforms_url) {
|
|
if (callback && typeof callback == "function") {
|
|
callback('');
|
|
}
|
|
return;
|
|
}
|
|
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
dataType: 'json',
|
|
data: {
|
|
action: 'astra-sites-import-wpforms',
|
|
screen: 'elementor',
|
|
id: AstraElementorSitesAdmin.templateData.id,
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
beforeSend: function () {
|
|
console.groupCollapsed('Importing WP Forms');
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR.status + ' ' + jqXHR.responseText, true);
|
|
console.groupEnd();
|
|
})
|
|
.done(function (data) {
|
|
|
|
// 1. Fail - Import WPForms Options.
|
|
if (false === data.success) {
|
|
console.log(data.data);
|
|
console.groupEnd();
|
|
} else {
|
|
if (callback && typeof callback == "function") {
|
|
callback(data);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
_createTemplate: function () {
|
|
|
|
console.groupEnd();
|
|
|
|
// Work with JSON page here
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
dataType: 'json',
|
|
data: {
|
|
'action': 'astra-sites-create-template',
|
|
'id' : (AstraElementorSitesAdmin.type == 'pages') ? AstraElementorSitesAdmin.page_id?.replace( 'id-', '' ) : AstraElementorSitesAdmin.block_id?.replace( 'id-', '' ),
|
|
'title': AstraElementorSitesAdmin.templateData?.title?.rendered || '',
|
|
'type': ( 'blocks' == AstraElementorSitesAdmin.type ) ? 'astra-blocks' : 'site-pages',
|
|
'_ajax_nonce': astraElementorSites._ajax_nonce,
|
|
},
|
|
beforeSend: function () {
|
|
console.groupCollapsed('Creating Template');
|
|
}
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
})
|
|
.done(function (data) {
|
|
AstraElementorSitesAdmin._done(data);
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Install All Plugins.
|
|
*/
|
|
_installAllPlugins: function (not_installed) {
|
|
|
|
$.each(not_installed, function (index, single_plugin) {
|
|
|
|
console.log('Installing Plugin - ' + single_plugin.name);
|
|
|
|
// 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();
|
|
},
|
|
|
|
/**
|
|
* Activate All Plugins.
|
|
*/
|
|
_activateAllPlugins: function (activate_plugins) {
|
|
|
|
$.each(activate_plugins, function (index, single_plugin) {
|
|
|
|
console.log('Activating Plugin - ' + single_plugin.name);
|
|
|
|
AstraSitesAjaxQueue.add({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
'action': 'astra-required-plugin-activate',
|
|
'init': single_plugin.init,
|
|
'_ajax_nonce': astraElementorSites._ajax_nonce,
|
|
},
|
|
success: function (result) {
|
|
|
|
if (result.success) {
|
|
|
|
var pluginsList = AstraElementorSitesAdmin.requiredPlugins.inactive;
|
|
|
|
// Reset not installed plugins list.
|
|
AstraElementorSitesAdmin.requiredPlugins.inactive = AstraElementorSitesAdmin._removePluginFromQueue(single_plugin.slug, pluginsList);
|
|
|
|
// Enable Demo Import Button
|
|
AstraElementorSitesAdmin._enableImport();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
AstraSitesAjaxQueue.run();
|
|
},
|
|
|
|
/**
|
|
* Remove plugin from the queue.
|
|
*/
|
|
_removePluginFromQueue: function (removeItem, pluginsList) {
|
|
return jQuery.grep(pluginsList, function (value) {
|
|
return value.slug != removeItem;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Get plugin from the queue.
|
|
*/
|
|
_getPluginFromQueue: function (item, pluginsList) {
|
|
|
|
var match = '';
|
|
for (ind in pluginsList) {
|
|
if (item == pluginsList[ind].slug) {
|
|
match = pluginsList[ind];
|
|
}
|
|
}
|
|
return match;
|
|
},
|
|
|
|
_bulkPluginInstallActivate: function () {
|
|
|
|
console.groupCollapsed('Bulk Plugin Install Process Started');
|
|
|
|
// If has class the skip-plugins then,
|
|
// Avoid installing 3rd party plugins.
|
|
var not_installed = AstraElementorSitesAdmin.requiredPlugins.notinstalled || '';
|
|
var activate_plugins = AstraElementorSitesAdmin.requiredPlugins.inactive || '';
|
|
|
|
console.log(AstraElementorSitesAdmin.requiredPlugins);
|
|
|
|
// First Install Bulk.
|
|
if (not_installed.length > 0) {
|
|
AstraElementorSitesAdmin._installAllPlugins(not_installed);
|
|
}
|
|
|
|
// Second Activate Bulk.
|
|
if (activate_plugins.length > 0) {
|
|
AstraElementorSitesAdmin._activateAllPlugins(activate_plugins);
|
|
}
|
|
|
|
if (activate_plugins.length <= 0 && not_installed.length <= 0) {
|
|
AstraElementorSitesAdmin._enableImport();
|
|
}
|
|
},
|
|
|
|
_importTemplate: function (e) {
|
|
|
|
if (!AstraElementorSitesAdmin.canImport) {
|
|
if ($(this).attr('data-demo-link') != undefined) {
|
|
window.open($(this).attr('data-demo-link'), '_blank');
|
|
}
|
|
return;
|
|
}
|
|
|
|
AstraElementorSitesAdmin.canImport = false;
|
|
|
|
var str = (AstraElementorSitesAdmin.type == 'pages') ? astraElementorSites.template : astraElementorSites.block;
|
|
|
|
$(this).addClass('installing');
|
|
$(this).text('Saving ' + str + '...');
|
|
|
|
AstraElementorSitesAdmin.action = 'import';
|
|
|
|
AstraElementorSitesAdmin._bulkPluginInstallActivate();
|
|
},
|
|
|
|
_unescape: function (input_string) {
|
|
var title = _.unescape(input_string);
|
|
|
|
// @todo check why below character not escape with function _.unescape();
|
|
title = title.replace('–', '-');
|
|
|
|
return title;
|
|
},
|
|
|
|
_unescape_lower: function (input_string) {
|
|
input_string = $("<textarea/>").html(input_string).text()
|
|
var input_string = AstraElementorSitesAdmin._unescape(input_string);
|
|
return input_string.toLowerCase();
|
|
},
|
|
|
|
_search: function () {
|
|
|
|
let search_term = $(this).val() || '';
|
|
search_term = search_term.toLowerCase();
|
|
|
|
if ('pages' == AstraElementorSitesAdmin.type) {
|
|
|
|
var items = AstraElementorSitesAdmin._getSearchedPages(search_term);
|
|
|
|
if (search_term.length) {
|
|
$(this).addClass('has-input');
|
|
AstraElementorSitesAdmin._addSites(items);
|
|
} else {
|
|
$(this).removeClass('has-input');
|
|
AstraElementorSitesAdmin._appendSites(astraElementorSites.default_page_builder_sites);
|
|
}
|
|
} else {
|
|
|
|
var items = AstraElementorSitesAdmin._getSearchedBlocks(search_term);
|
|
|
|
if (search_term.length) {
|
|
$(this).addClass('has-input');
|
|
AstraElementorSitesAdmin._appendBlocks(items);
|
|
} else {
|
|
$(this).removeClass('has-input');
|
|
AstraElementorSitesAdmin._appendBlocks(astraElementorSites.astra_blocks);
|
|
}
|
|
}
|
|
},
|
|
|
|
_getSearchedPages: function (search_term) {
|
|
var items = [];
|
|
search_term = search_term.toLowerCase();
|
|
|
|
for (site_id in astraElementorSites.default_page_builder_sites) {
|
|
|
|
var current_site = astraElementorSites.default_page_builder_sites[site_id];
|
|
|
|
// Check in site title.
|
|
if (current_site['title']) {
|
|
var site_title = AstraElementorSitesAdmin._unescape_lower(current_site['title']);
|
|
|
|
if (site_title.toLowerCase().includes(search_term)) {
|
|
|
|
for (page_id in current_site['pages']) {
|
|
|
|
items[page_id] = current_site['pages'][page_id];
|
|
items[page_id]['type'] = 'page';
|
|
items[page_id]['site_id'] = site_id;
|
|
items[page_id]['astra-sites-type'] = current_site['astra-sites-type'] || '';
|
|
items[page_id]['parent-site-name'] = current_site['title'] || '';
|
|
items[page_id]['pages-count'] = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Check in page title.
|
|
if (Object.keys(current_site['pages']).length) {
|
|
var pages = current_site['pages'];
|
|
|
|
for (page_id in pages) {
|
|
|
|
// Check in site title.
|
|
if (pages[page_id]['title']) {
|
|
|
|
var page_title = AstraElementorSitesAdmin._unescape_lower(pages[page_id]['title']);
|
|
|
|
if (page_title.toLowerCase().includes(search_term)) {
|
|
items[page_id] = pages[page_id];
|
|
items[page_id]['type'] = 'page';
|
|
items[page_id]['site_id'] = site_id;
|
|
items[page_id]['astra-sites-type'] = current_site['astra-sites-type'] || '';
|
|
items[page_id]['parent-site-name'] = current_site['title'] || '';
|
|
items[page_id]['pages-count'] = 0;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
return items;
|
|
},
|
|
|
|
_getSearchedBlocks: function (search_term) {
|
|
|
|
var items = [];
|
|
|
|
if (search_term.length) {
|
|
|
|
for (block_id in astraElementorSites.astra_blocks) {
|
|
|
|
var current_site = astraElementorSites.astra_blocks[block_id];
|
|
|
|
// Check in site title.
|
|
if (current_site['title']) {
|
|
var site_title = AstraElementorSitesAdmin._unescape_lower(current_site['title']);
|
|
|
|
if (site_title.toLowerCase().includes(search_term)) {
|
|
items[block_id] = current_site;
|
|
items[block_id]['type'] = 'site';
|
|
items[block_id]['site_id'] = block_id;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
return items;
|
|
},
|
|
|
|
_addSites: function (data) {
|
|
|
|
if (data) {
|
|
let single_template = wp.template('astra-sites-search');
|
|
pages_list = single_template(data);
|
|
$elscope.find('.dialog-lightbox-content').html(pages_list);
|
|
AstraElementorSitesAdmin._loadLargeImages();
|
|
|
|
} else {
|
|
$elscope.find('.dialog-lightbox-content').html(wp.template('astra-sites-no-sites'));
|
|
}
|
|
},
|
|
|
|
_appendSites: function (data) {
|
|
|
|
let single_template = wp.template('astra-sites-list');
|
|
pages_list = single_template(data);
|
|
$elscope.find('.dialog-lightbox-message-block').hide();
|
|
$elscope.find('.dialog-lightbox-message').show();
|
|
$elscope.find('.dialog-lightbox-content').html(pages_list);
|
|
AstraElementorSitesAdmin._loadLargeImages();
|
|
},
|
|
|
|
_appendBlocks: function (data) {
|
|
|
|
let single_template = wp.template('astra-blocks-list');
|
|
let blocks_list = single_template(data);
|
|
$elscope.find('.dialog-lightbox-message').hide();
|
|
$elscope.find('.dialog-lightbox-message-block').show();
|
|
$elscope.find('.dialog-lightbox-content-block').html(blocks_list);
|
|
AstraElementorSitesAdmin._masonry();
|
|
},
|
|
|
|
_appendPaginationBlocks: function (data) {
|
|
|
|
let single_template = wp.template('astra-blocks-list');
|
|
let blocks_list = single_template(data);
|
|
$elscope.find('.dialog-lightbox-message').hide();
|
|
$elscope.find('.dialog-lightbox-message-block').show();
|
|
$elscope.find('.dialog-lightbox-content-block').append(blocks_list);
|
|
AstraElementorSitesAdmin._masonry();
|
|
},
|
|
|
|
_masonry: function () {
|
|
|
|
//create empty var masonryObj
|
|
var masonryObj;
|
|
var container = document.querySelector('.dialog-lightbox-content-block');
|
|
// initialize Masonry after all images have loaded
|
|
imagesLoaded(container, function () {
|
|
masonryObj = new Masonry(container, {
|
|
itemSelector: '.astra-sites-library-template'
|
|
});
|
|
});
|
|
},
|
|
|
|
_enableImport: function () {
|
|
|
|
console.log('Required Plugins Process Done.');
|
|
console.groupEnd();
|
|
|
|
if ( AstraElementorSitesAdmin['initial-page-refresh'] ) {
|
|
AstraElementorSitesAdmin.saveContentAndRefresh();
|
|
} else {
|
|
AstraElementorSitesAdmin.removeAddedParams();
|
|
}
|
|
|
|
let form_url = '';
|
|
if ('pages' == AstraElementorSitesAdmin.type) {
|
|
form_url = AstraElementorSitesAdmin.templateData['astra-site-wpforms-path'];
|
|
} else {
|
|
form_url = (undefined != AstraElementorSitesAdmin.templateData['post-meta']) ? AstraElementorSitesAdmin.templateData['post-meta']['astra-site-wpforms-path'] : '';
|
|
}
|
|
|
|
if ( !AstraElementorSitesAdmin['initial-page-refresh'] ) {
|
|
|
|
AstraElementorSitesAdmin._importWPForm(form_url, function () {
|
|
AstraElementorSitesAdmin.insertData = AstraElementorSitesAdmin.templateData;
|
|
if ('insert' == AstraElementorSitesAdmin.action) {
|
|
AstraElementorSitesAdmin._insertDemo();
|
|
} else {
|
|
AstraElementorSitesAdmin._createTemplate();
|
|
}
|
|
});
|
|
|
|
}
|
|
},
|
|
|
|
_insert: function (e) {
|
|
|
|
if (!AstraElementorSitesAdmin.canInsert) {
|
|
return;
|
|
}
|
|
|
|
AstraElementorSitesAdmin.canInsert = false;
|
|
var str = (AstraElementorSitesAdmin.type == 'pages') ? astraElementorSites.template : astraElementorSites.block;
|
|
|
|
$(this).addClass('installing');
|
|
if ( !AstraElementorSitesAdmin['initial-page-refresh'] ) {
|
|
$(this).text('Importing ' + str + '...');
|
|
}
|
|
|
|
AstraElementorSitesAdmin.action = 'insert';
|
|
|
|
AstraElementorSitesAdmin._bulkPluginInstallActivate();
|
|
},
|
|
|
|
requestInsert: function (_id, type, templateModel, afterInsert, beforeInsert, failedCallback) {
|
|
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-page-elementor-insert-page',
|
|
id: _id,
|
|
type: type,
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
beforeSend: function () {
|
|
console.groupCollapsed('Inserting Demo.');
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
failedCallback(jqXHR);
|
|
})
|
|
.done(function (response) {
|
|
|
|
beforeInsert();
|
|
|
|
let page_content = response.data;
|
|
|
|
page_content = page_content.map(function (item) {
|
|
item.id = Math.random().toString(36).substr(2, 7);
|
|
return item;
|
|
});
|
|
|
|
console.log(page_content);
|
|
console.groupEnd();
|
|
if (undefined !== page_content && '' !== page_content) {
|
|
if (undefined != $e && 'undefined' != typeof $e.internal) {
|
|
elementor.channels.data.trigger('document/import', templateModel);
|
|
elementor.getPreviewView().addChildModel(page_content, { at: AstraElementorSitesAdmin.index } || {});
|
|
elementor.channels.data.trigger('template:after:insert', {});
|
|
$e.internal('document/save/set-is-modified', { status: true })
|
|
} else {
|
|
elementor.channels.data.trigger('document/import', templateModel);
|
|
elementor.getPreviewView().addChildModel(page_content, { at: AstraElementorSitesAdmin.index } || {});
|
|
elementor.channels.data.trigger('template:after:insert', {});
|
|
elementor.saver.setFlagEditorChange(true);
|
|
}
|
|
}
|
|
afterInsert();
|
|
});
|
|
},
|
|
|
|
beforeInsert: function () {
|
|
AstraElementorSitesAdmin.processing = false;
|
|
$elscope.find('.astra-sites-content-wrap').removeClass('processing');
|
|
},
|
|
|
|
afterInsert: function () {
|
|
AstraElementorSitesAdmin.insertActionFlag = true;
|
|
AstraElementorSitesAdmin._close();
|
|
},
|
|
|
|
failedCallback: function (jqXHR) {
|
|
console.log(jqXHR);
|
|
console.groupEnd();
|
|
},
|
|
|
|
_insertDemo: function () {
|
|
|
|
var data = AstraElementorSitesAdmin.templateData;
|
|
|
|
if (undefined !== data) {
|
|
|
|
let templateModel = new Backbone.Model({
|
|
getTitle() {
|
|
return data['title']
|
|
},
|
|
});
|
|
|
|
let type = ( 'blocks' == AstraElementorSitesAdmin.type ) ? 'astra-blocks' : 'site-pages';
|
|
|
|
this.requestInsert( data['id'], type, templateModel, this.afterInsert, this.beforeInsert, this.failedCallback );
|
|
}
|
|
},
|
|
|
|
_goBack: function (e) {
|
|
|
|
if (AstraElementorSitesAdmin.processing) {
|
|
return;
|
|
}
|
|
|
|
let step = $(this).attr('data-step');
|
|
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id.error').hide();
|
|
|
|
$elscope.find('.astra-sites-step-1-wrap').show();
|
|
$elscope.find('.astra-preview-actions-wrap').remove();
|
|
|
|
$elscope.find('.ast-template-library-toolbar').show();
|
|
$elscope.find('.ast-sites-modal__header').removeClass('ast-preview-mode');
|
|
|
|
let id = ( 'blocks' === AstraElementorSitesAdmin.type ) ? AstraElementorSitesAdmin.block_id?.replace('id-', '') : AstraElementorSitesAdmin.page_id?.replace('id-', '');
|
|
|
|
if ( '' !== id ) {
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-elementor-flush-request',
|
|
id,
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
},
|
|
beforeSend: function () {
|
|
console.groupCollapsed('Deleting cached template data.');
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
console.groupEnd();
|
|
})
|
|
.done(function (response) {
|
|
console.log(response);
|
|
});
|
|
}
|
|
|
|
if ('pages' == AstraElementorSitesAdmin.type) {
|
|
|
|
if (3 == step) {
|
|
$(this).attr('data-step', 2);
|
|
$(document).trigger('astra-sites__elementor-goback-step-2');
|
|
} else if (2 == step) {
|
|
$(this).attr('data-step', 1);
|
|
$(document).trigger('astra-sites__elementor-goback-step-1');
|
|
}
|
|
} else {
|
|
$(this).attr('data-step', 1);
|
|
$(document).trigger('astra-sites__elementor-goback-step-1');
|
|
}
|
|
|
|
$elscope.find('.astra-sites-content-wrap').trigger('scroll');
|
|
},
|
|
|
|
_goStep1: function (e) {
|
|
|
|
|
|
// Reset site and page ids to null.
|
|
AstraElementorSitesAdmin.site_id = '';
|
|
AstraElementorSitesAdmin.page_id = '';
|
|
AstraElementorSitesAdmin.block_id = '';
|
|
AstraElementorSitesAdmin.requiredPlugins = [];
|
|
AstraElementorSitesAdmin.templateData = {};
|
|
AstraElementorSitesAdmin.canImport = false;
|
|
AstraElementorSitesAdmin.canInsert = false;
|
|
|
|
// Hide Back button.
|
|
$elscope.find('.back-to-layout').css('visibility', 'hidden');
|
|
$elscope.find('.back-to-layout').css('opacity', '0');
|
|
|
|
// Hide Preview Page.
|
|
$elscope.find('.theme-preview').hide();
|
|
$elscope.find('.theme-preview').html('');
|
|
$elscope.find('.theme-preview-block').hide();
|
|
$elscope.find('.theme-preview-block').html('');
|
|
$elscope.find('.ast-template-library-toolbar').show();
|
|
|
|
// Show listing page.
|
|
if (AstraElementorSitesAdmin.type == 'pages') {
|
|
|
|
$elscope.find('.dialog-lightbox-content').show();
|
|
$elscope.find('.dialog-lightbox-content-block').hide();
|
|
|
|
// Set listing HTML.
|
|
AstraElementorSitesAdmin._appendSites(astraElementorSites.default_page_builder_sites);
|
|
} else {
|
|
|
|
// Set listing HTML.
|
|
AstraElementorSitesAdmin._appendBlocks(astraElementorSites.astra_blocks);
|
|
|
|
$elscope.find('.dialog-lightbox-content-block').show();
|
|
$elscope.find('.dialog-lightbox-content').hide();
|
|
|
|
if ('' !== $elscope.find('#wp-filter-search-input').val()) {
|
|
$elscope.find('#wp-filter-search-input').trigger('keyup');
|
|
}
|
|
}
|
|
},
|
|
|
|
_goStep2: function (e) {
|
|
|
|
// Set page and site ids.
|
|
AstraElementorSitesAdmin.site_id = $elscope.find('#astra-blocks').data('site-id');
|
|
AstraElementorSitesAdmin.page_id = '';
|
|
|
|
if (undefined === AstraElementorSitesAdmin.site_id) {
|
|
return;
|
|
}
|
|
|
|
// Single Preview template.
|
|
let single_template = wp.template('astra-sites-list-search');
|
|
let passing_data = astraElementorSites.default_page_builder_sites[AstraElementorSitesAdmin.site_id]['pages'];
|
|
passing_data['site_id'] = AstraElementorSitesAdmin.site_id;
|
|
pages_list = single_template(passing_data);
|
|
$elscope.find('.dialog-lightbox-content').html(pages_list);
|
|
|
|
// Hide Preview page.
|
|
$elscope.find('.theme-preview').hide();
|
|
$elscope.find('.theme-preview').html('');
|
|
$elscope.find('.ast-template-library-toolbar').show();
|
|
$elscope.find('.theme-preview-block').hide();
|
|
$elscope.find('.theme-preview-block').html('');
|
|
|
|
// Show listing page.
|
|
$elscope.find('.dialog-lightbox-content').show();
|
|
$elscope.find('.dialog-lightbox-content-block').hide();
|
|
|
|
AstraElementorSitesAdmin._loadLargeImages();
|
|
|
|
if ('' !== $elscope.find('#wp-filter-search-input').val()) {
|
|
$elscope.find('#wp-filter-search-input').trigger('keyup');
|
|
}
|
|
},
|
|
|
|
_step1: function (e) {
|
|
|
|
if ('pages' == AstraElementorSitesAdmin.type) {
|
|
|
|
let passing_data = astraElementorSites.default_page_builder_sites[AstraElementorSitesAdmin.site_id]['pages'];
|
|
|
|
var count = 0;
|
|
var one_page = [];
|
|
var one_page_id = '';
|
|
|
|
for (key in passing_data) {
|
|
if (undefined == passing_data[key]['site-pages-type']) {
|
|
continue;
|
|
}
|
|
if ('gutenberg' == passing_data[key]['site-pages-page-builder']) {
|
|
continue;
|
|
}
|
|
count++;
|
|
one_page = passing_data[key];
|
|
one_page_id = key;
|
|
}
|
|
|
|
if (count == 1) {
|
|
|
|
// Logic for one page sites.
|
|
AstraElementorSitesAdmin.page_id = one_page_id;
|
|
|
|
$elscope.find('.back-to-layout').css('visibility', 'visible');
|
|
$elscope.find('.back-to-layout').css('opacity', '1');
|
|
|
|
$elscope.find('.back-to-layout').attr('data-step', 2);
|
|
$(document).trigger('astra-sites__elementor-do-step-2');
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
let single_template = wp.template('astra-sites-list-search');
|
|
passing_data['site_id'] = AstraElementorSitesAdmin.site_id;
|
|
pages_list = single_template(passing_data);
|
|
$elscope.find('.dialog-lightbox-content-block').hide();
|
|
$elscope.find('.astra-sites-step-1-wrap').show();
|
|
$elscope.find('.astra-preview-actions-wrap').remove();
|
|
$elscope.find('.theme-preview').hide();
|
|
$elscope.find('.theme-preview').html('');
|
|
$elscope.find('.ast-template-library-toolbar').show();
|
|
$elscope.find('.theme-preview-block').hide();
|
|
$elscope.find('.theme-preview-block').html('');
|
|
$elscope.find('.dialog-lightbox-content').show();
|
|
$elscope.find('.dialog-lightbox-content').html(pages_list);
|
|
|
|
AstraElementorSitesAdmin._loadLargeImages();
|
|
|
|
} else {
|
|
|
|
$elscope.find('.dialog-lightbox-content').hide();
|
|
$elscope.find('.dialog-lightbox-content-block').hide();
|
|
$elscope.find('.dialog-lightbox-message').animate({ scrollTop: 0 }, 50);
|
|
$elscope.find('.theme-preview-block').show();
|
|
$elscope.find('.ast-template-library-toolbar').hide();
|
|
$elscope.find('.ast-sites-modal__header').addClass('ast-preview-mode');
|
|
|
|
// Hide.
|
|
$elscope.find('.theme-preview').hide();
|
|
$elscope.find('.theme-preview').html('');
|
|
|
|
let import_template = wp.template('astra-sites-elementor-preview');
|
|
let import_template_header = wp.template('astra-sites-elementor-preview-actions');
|
|
let template_object = astraElementorSites.astra_blocks[AstraElementorSitesAdmin.block_id];
|
|
|
|
template_object['id'] = AstraElementorSitesAdmin.block_id;
|
|
|
|
preview_page_html = import_template(template_object);
|
|
$elscope.find('.theme-preview-block').html(preview_page_html);
|
|
|
|
$elscope.find('.astra-sites-step-1-wrap').hide();
|
|
|
|
preview_action_html = import_template_header(template_object);
|
|
$elscope.find('.elementor-templates-modal__header__items-area').append(preview_action_html);
|
|
AstraElementorSitesAdmin._masonry();
|
|
|
|
let actual_id = AstraElementorSitesAdmin.block_id.replace('id-', '');
|
|
$(document).trigger('astra-sites__elementor-plugin-check', { 'id': actual_id });
|
|
}
|
|
},
|
|
|
|
_step2: function (e) {
|
|
|
|
$elscope.find('.dialog-lightbox-content').hide();
|
|
$elscope.find('.dialog-lightbox-message').animate({ scrollTop: 0 }, 50);
|
|
$elscope.find('.theme-preview').show();
|
|
|
|
$elscope.find('.ast-sites-modal__header').addClass('ast-preview-mode');
|
|
|
|
if (undefined === AstraElementorSitesAdmin.site_id) {
|
|
return;
|
|
}
|
|
|
|
let import_template = wp.template('astra-sites-elementor-preview');
|
|
let import_template_header = wp.template('astra-sites-elementor-preview-actions');
|
|
let template_object = astraElementorSites.default_page_builder_sites[AstraElementorSitesAdmin.site_id]['pages'][AstraElementorSitesAdmin.page_id];
|
|
|
|
if (undefined === template_object) {
|
|
return;
|
|
}
|
|
|
|
template_object['id'] = AstraElementorSitesAdmin.site_id;
|
|
|
|
preview_page_html = import_template(template_object);
|
|
$elscope.find('.theme-preview').html(preview_page_html);
|
|
|
|
$elscope.find('.astra-sites-step-1-wrap').hide();
|
|
|
|
preview_action_html = import_template_header(template_object);
|
|
$elscope.find('.elementor-templates-modal__header__items-area').append(preview_action_html);
|
|
|
|
let actual_id = AstraElementorSitesAdmin.page_id.replace('id-', '');
|
|
$(document).trigger('astra-sites__elementor-plugin-check', { 'id': actual_id });
|
|
},
|
|
|
|
_preview: function (e) {
|
|
|
|
if (AstraElementorSitesAdmin.processing) {
|
|
return;
|
|
}
|
|
|
|
let step = $(this).attr('data-step');
|
|
|
|
AstraElementorSitesAdmin.site_id = $(this).closest('.astra-theme').data('site-id');
|
|
AstraElementorSitesAdmin.page_id = $(this).closest('.astra-theme').data('template-id');
|
|
AstraElementorSitesAdmin.block_id = $(this).closest('.astra-theme').data('block-id');
|
|
|
|
$elscope.find('.back-to-layout').css('visibility', 'visible');
|
|
$elscope.find('.back-to-layout').css('opacity', '1');
|
|
|
|
$elscope.find('.ast-template-library-toolbar').hide();
|
|
$elscope.find('.ast-sites-modal__header').removeClass('ast-preview-mode');
|
|
|
|
if (1 == step) {
|
|
|
|
$elscope.find('.back-to-layout').attr('data-step', 2);
|
|
$(document).trigger('astra-sites__elementor-do-step-1');
|
|
|
|
} else {
|
|
|
|
$elscope.find('.back-to-layout').attr('data-step', 3);
|
|
$(document).trigger('astra-sites__elementor-do-step-2');
|
|
|
|
}
|
|
},
|
|
|
|
_pluginCheck: function (e, data) {
|
|
|
|
var type = ('blocks' !== AstraElementorSitesAdmin.type) ? 'site-pages' : 'astra-blocks';
|
|
var id = data['id'];
|
|
|
|
const generateData = new FormData();
|
|
generateData.append( 'action', 'astra-sites-elementor-api-request' );
|
|
generateData.append( 'id', id );
|
|
generateData.append( 'type', type );
|
|
generateData.append( '_ajax_nonce', astraElementorSites._ajax_nonce );
|
|
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-sites-elementor-api-request',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
type: type,
|
|
id: id,
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
console.groupEnd();
|
|
})
|
|
.done(function (response) {
|
|
if ( response.success === true ) {
|
|
var data = response.data;
|
|
if ( undefined !== data ) {
|
|
AstraElementorSitesAdmin.templateData = data;
|
|
if (type == 'site-pages') {
|
|
if (undefined !== data['site-pages-required-plugins']) {
|
|
AstraElementorSitesAdmin._requiredPluginsMarkup(data['site-pages-required-plugins']);
|
|
}
|
|
} else {
|
|
if (undefined !== data['post-meta']['astra-blocks-required-plugins']) {
|
|
AstraElementorSitesAdmin._requiredPluginsMarkup(PHP.parse(data['post-meta']['astra-blocks-required-plugins']));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
_requiredPluginsMarkup: function (requiredPlugins) {
|
|
|
|
if ('' === requiredPlugins) {
|
|
return;
|
|
}
|
|
|
|
if (
|
|
AstraElementorSitesAdmin.type == 'pages' &&
|
|
astraElementorSites.default_page_builder_sites[AstraElementorSitesAdmin.site_id]['astra-sites-type'] != undefined &&
|
|
astraElementorSites.default_page_builder_sites[AstraElementorSitesAdmin.site_id]['astra-sites-type'] != 'free'
|
|
) {
|
|
|
|
if (!astraElementorSites.license_status) {
|
|
|
|
output = '<p class="ast-validate">' + astraElementorSites.license_msg + '</p>';
|
|
|
|
$elscope.find('.required-plugins-list').html(output);
|
|
$elscope.find('.ast-tooltip-wrap').css('opacity', 1);
|
|
$elscope.find('.astra-sites-tooltip').css('opacity', 1);
|
|
|
|
/**
|
|
* Enable Demo Import Button
|
|
* @type number
|
|
*/
|
|
AstraElementorSitesAdmin.requiredPlugins = [];
|
|
AstraElementorSitesAdmin.canImport = true;
|
|
AstraElementorSitesAdmin.canInsert = true;
|
|
$elscope.find('.astra-sites-import-template-action > div').removeClass('disabled');
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
let id = ( 'blocks' === AstraElementorSitesAdmin.type ) ? AstraElementorSitesAdmin.block_id?.replace('id-', '') : AstraElementorSitesAdmin.page_id?.replace('id-', '');
|
|
|
|
// Required Required.
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'astra-required-plugins',
|
|
id,
|
|
screen: 'elementor',
|
|
_ajax_nonce: astraElementorSites._ajax_nonce,
|
|
required_plugins: requiredPlugins
|
|
},
|
|
})
|
|
.fail(function (jqXHR) {
|
|
console.log(jqXHR);
|
|
console.groupEnd();
|
|
})
|
|
.done(function (response) {
|
|
if (false === response.success) {
|
|
|
|
$elscope = $('#ast-sites-modal');
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id').show().removeClass('error');
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id .ast-sites-floating-notice').show().html('<span class="message">Insufficient Permission. Please contact your Super Admin to allow the install required plugin permissions.<span>');
|
|
$elscope.find('#ast-sites-floating-notice-wrap-id').addClass('error slide-in').removeClass('refreshed-notice');
|
|
|
|
} else {
|
|
var output = '';
|
|
|
|
/**
|
|
* Count remaining plugins.
|
|
* @type number
|
|
*/
|
|
var remaining_plugins = 0;
|
|
var required_plugins_markup = '';
|
|
|
|
required_plugins = response.data['required_plugins'];
|
|
|
|
if (response.data['third_party_required_plugins'].length) {
|
|
$( response.data['third_party_required_plugins'] ).each(function (index, plugin) {
|
|
output += '<li class="plugin-card plugin-card-' + plugin.slug + '" data-slug="' + plugin.slug + '" data-init="' + plugin.init + '" data-name="' + plugin.name + '">' + plugin.name + '</li>';
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 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) {
|
|
if ('elementor' == plugin.slug) {
|
|
return;
|
|
}
|
|
output += '<li class="plugin-card plugin-card-' + plugin.slug + '" data-slug="' + plugin.slug + '" data-init="' + plugin.init + '" data-name="' + plugin.name + '">' + plugin.name + '</li>';
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 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) {
|
|
if ('elementor' == plugin.slug) {
|
|
return;
|
|
}
|
|
output += '<li class="plugin-card plugin-card-' + plugin.slug + '" data-slug="' + plugin.slug + '" data-init="' + plugin.init + '" data-name="' + plugin.name + '">' + plugin.name + '</li>';
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Active
|
|
*
|
|
* List of not active required plugins.
|
|
*/
|
|
if (typeof required_plugins.active !== 'undefined') {
|
|
|
|
$(required_plugins.active).each(function (index, plugin) {
|
|
if ('elementor' == plugin.slug) {
|
|
return;
|
|
}
|
|
output += '<li class="plugin-card plugin-card-' + plugin.slug + '" data-slug="' + plugin.slug + '" data-init="' + plugin.init + '" data-name="' + plugin.name + '">' + plugin.name + '</li>';
|
|
});
|
|
}
|
|
|
|
if ('' != output) {
|
|
output = '<li class="plugin-card-head"><strong>' + astraElementorSites.install_plugin_text + '</strong></li>' + output;
|
|
$elscope.find('.required-plugins-list').html(output);
|
|
$elscope.find('.ast-tooltip-wrap').css('opacity', 1);
|
|
$elscope.find('.astra-sites-tooltip').css('opacity', 1);
|
|
}
|
|
|
|
|
|
/**
|
|
* Enable Demo Import Button
|
|
* @type number
|
|
*/
|
|
AstraElementorSitesAdmin.requiredPlugins = response.data['required_plugins'];
|
|
AstraElementorSitesAdmin['initial-page-refresh'] = AstraElementorSitesAdmin['requiredPlugins']['notinstalled']?.length ||
|
|
AstraElementorSitesAdmin['requiredPlugins']['inactive']?.length ? true : false;
|
|
if ( AstraElementorSitesAdmin['initial-page-refresh'] ) {
|
|
document.querySelectorAll('.astra-sites-import-template-action .ast-library-template-insert')[0].innerText = "Install Required Plugins & Import";
|
|
}
|
|
AstraElementorSitesAdmin.canImport = true;
|
|
AstraElementorSitesAdmin.canInsert = true;
|
|
$elscope.find('.astra-sites-import-template-action > div').removeClass('disabled');
|
|
}
|
|
});
|
|
},
|
|
|
|
removeAddedParams: function () {
|
|
const urlObj = new URL(window.location.href);
|
|
// Check if the query parameters exist
|
|
if (urlObj.searchParams.has("remoteST") && urlObj.searchParams.has("blockID")) {
|
|
// Remove specific query parameters
|
|
urlObj.searchParams.delete("remoteST");
|
|
urlObj.searchParams.delete("blockID");
|
|
urlObj.searchParams.delete("type");
|
|
|
|
// Update the URL in the browser
|
|
window.history.replaceState({}, '', urlObj.href);
|
|
}
|
|
},
|
|
|
|
saveContentAndRefresh: function () {
|
|
const elementorPanel = document.querySelector('.elementor-panel'); // Get the Elementor panel element
|
|
|
|
if (elementorPanel) {
|
|
const updateButton = elementorPanel.querySelector('#elementor-panel-saver-button-publish'); // Find the Elementor update button
|
|
|
|
if (updateButton) {
|
|
updateButton.click(); // Trigger a click event on the update button
|
|
let id = ( 'blocks' === AstraElementorSitesAdmin.type ) ? AstraElementorSitesAdmin.block_id?.replace('id-', '') : AstraElementorSitesAdmin.page_id?.replace('id-', '');
|
|
if ( id ){
|
|
AstraElementorSitesAdmin.updateURLParams( id );
|
|
window.location.reload(); // Refresh the page
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
updateURLParams: function ( block_id ) {
|
|
// Get the current URL
|
|
var url = new URL(window.location.href);
|
|
|
|
// Create a new URLSearchParams object from the URL's search params
|
|
var searchParams = new URLSearchParams(url.search);
|
|
|
|
let type = AstraElementorSitesAdmin.type;
|
|
|
|
// Add parameters to the searchParams object
|
|
searchParams.append('remoteST', 'true');
|
|
searchParams.append('blockID', block_id);
|
|
searchParams.append('type', type);
|
|
|
|
// Update the search property of the URL object with the new search params
|
|
url.search = searchParams.toString();
|
|
|
|
// Get the modified URL
|
|
var modifiedUrl = url.toString();
|
|
|
|
// Update the browser's live URL
|
|
window.history.pushState({ path: modifiedUrl }, '', modifiedUrl);
|
|
},
|
|
|
|
_libraryClick: function (e) {
|
|
$elscope.find(".elementor-template-library-menu-item").each(function () {
|
|
$(this).removeClass('elementor-active');
|
|
});
|
|
$(this).addClass('elementor-active');
|
|
},
|
|
|
|
_loadLargeImage: function (el) {
|
|
|
|
if (el.hasClass('loaded')) {
|
|
return;
|
|
}
|
|
|
|
if (el.parents('.astra-theme').isInViewport()) {
|
|
var large_img_url = el.data('src') || '';
|
|
var imgLarge = new Image();
|
|
imgLarge.src = large_img_url;
|
|
imgLarge.onload = function () {
|
|
el.removeClass('loading');
|
|
el.addClass('loaded');
|
|
el.css('background-image', 'url(\'' + imgLarge.src + '\'');
|
|
};
|
|
}
|
|
},
|
|
|
|
_loadLargeImages: function () {
|
|
$elscope.find('.theme-screenshot').each(function (key, el) {
|
|
AstraElementorSitesAdmin._loadLargeImage($(el));
|
|
});
|
|
},
|
|
|
|
_close: function (e) {
|
|
console.groupEnd('Process Done.');
|
|
$(document).trigger('astra-sites__elementor-close-before');
|
|
setTimeout(function () {
|
|
$elscope.fadeOut();
|
|
$('body').removeClass('astra-sites__elementor-open');
|
|
}, 300);
|
|
$(document).trigger('astra-sites__elementor-close-after');
|
|
},
|
|
|
|
_open: function (e) {
|
|
$(document).trigger('astra-sites__elementor-open-before');
|
|
|
|
$('body').addClass('astra-sites__elementor-open');
|
|
|
|
let add_section = $(this).closest('.elementor-add-section');
|
|
|
|
if (add_section.hasClass('elementor-add-section-inline')) {
|
|
AstraElementorSitesAdmin.index = add_section.prevAll().length;
|
|
} else {
|
|
AstraElementorSitesAdmin.index = add_section.prev().children().length;
|
|
}
|
|
AstraElementorSitesAdmin._home();
|
|
$elscope.fadeIn();
|
|
if ($('.refreshed-notice').length == 1) {
|
|
setTimeout(
|
|
function () {
|
|
$('.refreshed-notice').find('.notice-dismiss').click();
|
|
},
|
|
2500
|
|
);
|
|
}
|
|
$(document).trigger('astra-sites__elementor-open-after');
|
|
},
|
|
|
|
_beforeOpen: function (e) {
|
|
|
|
let userPrefersDark = matchMedia('(prefers-color-scheme: dark)').matches;
|
|
let uiTheme = elementor.settings.editorPreferences.model.get('ui_theme');
|
|
|
|
if ('dark' === uiTheme || ('auto' === uiTheme && userPrefersDark)) {
|
|
$('body').addClass('ast-sites-dark-mode');
|
|
} else {
|
|
$('body').removeClass('ast-sites-dark-mode');
|
|
}
|
|
|
|
// Hide preview page.
|
|
$elscope.find('.theme-preview').hide();
|
|
$elscope.find('.theme-preview').html('');
|
|
|
|
// Show site listing page.
|
|
$elscope.find('.dialog-lightbox-content').show();
|
|
|
|
// Hide Back button.
|
|
$elscope.find('.back-to-layout').css('visibility', 'hidden');
|
|
$elscope.find('.back-to-layout').css('opacity', '0');
|
|
},
|
|
|
|
_initSites: function (e) {
|
|
AstraElementorSitesAdmin._appendSites(astraElementorSites.default_page_builder_sites);
|
|
AstraElementorSitesAdmin._goBack();
|
|
},
|
|
|
|
_initBlocks: function (e) {
|
|
AstraElementorSitesAdmin._appendBlocks(astraElementorSites.astra_blocks);
|
|
AstraElementorSitesAdmin._goBack();
|
|
},
|
|
|
|
/**
|
|
* Install Success
|
|
*/
|
|
_installSuccess: function (event, response) {
|
|
|
|
event.preventDefault();
|
|
|
|
// 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 = AstraElementorSitesAdmin.requiredPlugins.notinstalled;
|
|
var curr_plugin = AstraElementorSitesAdmin._getPluginFromQueue(response.slug, pluginsList);
|
|
|
|
AstraElementorSitesAdmin.requiredPlugins.notinstalled = AstraElementorSitesAdmin._removePluginFromQueue(response.slug, pluginsList);
|
|
|
|
|
|
// WordPress adds "Activate" button after waiting for 1000ms. So we will run our activation after that.
|
|
setTimeout(function () {
|
|
|
|
console.log('Activating Plugin - ' + curr_plugin.name);
|
|
|
|
$.ajax({
|
|
url: astraElementorSites.ajaxurl,
|
|
type: 'POST',
|
|
data: {
|
|
'action': 'astra-required-plugin-activate',
|
|
'init': curr_plugin.init,
|
|
'_ajax_nonce': astraElementorSites._ajax_nonce,
|
|
},
|
|
})
|
|
.done(function (result) {
|
|
|
|
if (result.success) {
|
|
var pluginsList = AstraElementorSitesAdmin.requiredPlugins.inactive;
|
|
|
|
console.log('Activated Plugin - ' + curr_plugin.name);
|
|
|
|
// Reset not installed plugins list.
|
|
AstraElementorSitesAdmin.requiredPlugins.inactive = AstraElementorSitesAdmin._removePluginFromQueue(response.slug, pluginsList);
|
|
|
|
// Enable Demo Import Button
|
|
AstraElementorSitesAdmin._enableImport();
|
|
|
|
}
|
|
});
|
|
|
|
}, 1200);
|
|
|
|
},
|
|
|
|
/**
|
|
* Plugin Installation Error.
|
|
*/
|
|
_installError: function (event, response) {
|
|
console.log(response);
|
|
console.log('Error Installing Plugin - ' + response.slug);
|
|
console.log(response.errorMessage);
|
|
},
|
|
|
|
/**
|
|
* Installing Plugin
|
|
*/
|
|
_pluginInstalling: function (event, args) {
|
|
console.log('Installing Plugin - ' + args.slug);
|
|
},
|
|
};
|
|
|
|
/**
|
|
* Initialize AstraElementorSitesAdmin
|
|
*/
|
|
$(function () {
|
|
AstraElementorSitesAdmin.init();
|
|
});
|
|
|
|
})(jQuery);
|