1441 lines
30 KiB
JavaScript
1441 lines
30 KiB
JavaScript
(function($) {
|
|
|
|
/* globals jQuery, mfnSetup, ajaxurl, lozad */
|
|
|
|
"use strict";
|
|
|
|
var dictionary = {
|
|
'.one' : 'One Page',
|
|
'.por' : 'Portfolio',
|
|
'.box' : 'Boxed',
|
|
'.blo' : 'Blog',
|
|
'.dar' : 'Dark',
|
|
'.sho' : 'Shop',
|
|
'.mob' : 'Mobile First',
|
|
'.lig' : 'Light',
|
|
'.ele' : 'Elementor',
|
|
|
|
'.ani' : 'Animals & Nature',
|
|
'.art' : 'Art & Culture',
|
|
'.car' : 'Cars & Bikes',
|
|
'.cor' : 'Corporations & Organizations',
|
|
'.des' : 'Design & Photography',
|
|
'.edu' : 'Education & Science',
|
|
'.ent' : 'Entertainment',
|
|
'.fas' : 'Fashion',
|
|
'.fin' : 'Finance',
|
|
'.foo' : 'Food & Restaurants',
|
|
'.hea' : 'Health & Beauty',
|
|
'.hou' : 'Housing & Architecture',
|
|
'.mag' : 'Magazines & Writing',
|
|
'.occ' : 'Occasions & Gifts',
|
|
'.oth' : 'Others',
|
|
'.peo' : 'People and services',
|
|
'.pro' : 'Product & Production',
|
|
'.spo' : 'Sports & Travel',
|
|
'.tec' : 'Technology & Computing ',
|
|
};
|
|
|
|
var MfnImporter = (function($) {
|
|
|
|
var $importer = $('.mfn-importer');
|
|
|
|
var step = 'pre-built',
|
|
builder = 'be',
|
|
website,
|
|
error = 'An error occurred while processing, please check XHR in the JS console for more informations.',
|
|
demoData = [];
|
|
|
|
// websites
|
|
|
|
var body = $('body'),
|
|
websites = $('.websites', $importer),
|
|
websitesIso = $('.websites-iso', $importer),
|
|
search = $('input.search', $importer);
|
|
|
|
var searchLock = false,
|
|
sidebar = false,
|
|
getWebsitesOnce = false,
|
|
getWebsitesDone = $.Deferred();
|
|
|
|
var navigation = {
|
|
'pre-built' : function( nav ){
|
|
preBuilt.init( nav );
|
|
},
|
|
'builder' : function( nav ){
|
|
blrd.init( nav );
|
|
},
|
|
'data' : function( nav ){
|
|
data.init( nav );
|
|
},
|
|
'complete' : function( nav ){
|
|
complete.init();
|
|
},
|
|
'finish' : false,
|
|
};
|
|
|
|
var keys = Object.keys(navigation);
|
|
|
|
/**
|
|
* Pre-built
|
|
*/
|
|
|
|
var preBuilt = {
|
|
|
|
// preBuilt.builderSelect()
|
|
|
|
builderSelect: function($el){
|
|
|
|
builder = $el.attr('data-type');
|
|
|
|
$el.addClass('active')
|
|
.siblings().removeClass('active');
|
|
|
|
},
|
|
|
|
// preBuilt.contentSelect()
|
|
|
|
contentSelect: function($el, e){
|
|
|
|
var $item = $(e.target);
|
|
|
|
if( $item.is('span') ){
|
|
|
|
if( $item.hasClass('radio') ){
|
|
$item.addClass('active');
|
|
$item.siblings().removeClass('active');
|
|
} else {
|
|
$item.toggleClass('active');
|
|
}
|
|
|
|
}
|
|
|
|
$el.addClass('active')
|
|
.siblings().removeClass('active');
|
|
|
|
// demoData
|
|
|
|
demoData = [
|
|
$el.attr('data-type')
|
|
];
|
|
|
|
$el.find('span.active:not(.hidden)').each(function(){
|
|
demoData.push( $(this).attr('data-type') );
|
|
});
|
|
|
|
// console.log(demoData);
|
|
|
|
},
|
|
|
|
// preBuilt.preview()
|
|
|
|
preview: function($el){
|
|
|
|
var href = $el.attr('data-href');
|
|
|
|
window.open(href, '_blank').focus();
|
|
|
|
},
|
|
|
|
// preBuilt.select()
|
|
|
|
select: function($el, e){
|
|
|
|
if( $importer.hasClass('mfn-unregistered') ){
|
|
return;
|
|
}
|
|
|
|
if( $(e.target).is('.preview') || $(e.target).is('.far') ){
|
|
// just preview do nothing;
|
|
return;
|
|
}
|
|
|
|
website = $el.attr('data-website');
|
|
|
|
steps.next();
|
|
|
|
},
|
|
|
|
// preBuilt.init()
|
|
|
|
init: function(){
|
|
|
|
websitesIso.css('opacity','0');
|
|
isotope.overlay('show');
|
|
|
|
// init isotope
|
|
|
|
getWebsitesOnce = true;
|
|
getWebsitesDone.resolve();
|
|
|
|
isotope.init();
|
|
isotope.result();
|
|
|
|
setTimeout(function(){
|
|
websitesIso.css('opacity','1');
|
|
},200);
|
|
|
|
// init sticky sidebar
|
|
|
|
stickyFilters();
|
|
|
|
},
|
|
|
|
};
|
|
|
|
/**
|
|
* Modal
|
|
*/
|
|
|
|
var modal = {
|
|
|
|
dfd: $.Deferred(),
|
|
|
|
// modal.open()
|
|
|
|
open: function(){
|
|
$('.modal-confirm-reset', $importer).addClass('show');
|
|
},
|
|
|
|
// modal.close()
|
|
|
|
close: function(){
|
|
$('.modal-confirm-reset', $importer).removeClass('show');
|
|
},
|
|
|
|
// modal.media()
|
|
|
|
media: function($el){
|
|
|
|
$el.toggleClass('active');
|
|
|
|
},
|
|
|
|
// modal.confirm()
|
|
|
|
confirm: function($el){
|
|
|
|
var $button = $el.closest('.select-inner').siblings('.btn-modal-confirm');
|
|
|
|
if( $el.hasClass('active') ){
|
|
$el.removeClass('active');
|
|
$button.addClass('disabled');
|
|
} else {
|
|
$el.addClass('active');
|
|
$button.removeClass('disabled');
|
|
}
|
|
|
|
},
|
|
|
|
// modal.reset()
|
|
|
|
reset: function(dfd){
|
|
|
|
var media = $('.modal-confirm-reset .remove-media span', $importer).hasClass('active') ? 1 : 0;
|
|
|
|
modal.close();
|
|
|
|
// show reset step
|
|
complete.$steps.children('.reset').removeClass('hidden').addClass('loading');
|
|
|
|
// ajax
|
|
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_database_reset',
|
|
'media': media,
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val()
|
|
},
|
|
type: 'POST',
|
|
|
|
}).done(function(response){
|
|
|
|
complete.$steps.children('.reset').removeClass('loading').addClass('done');
|
|
complete.dfdReset.resolve();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// modal.skip()
|
|
|
|
skip: function(dfd){
|
|
|
|
modal.close();
|
|
complete.dfdReset.resolve();
|
|
|
|
// console.log('reset skip');
|
|
|
|
},
|
|
|
|
};
|
|
|
|
/**
|
|
* Data
|
|
*/
|
|
|
|
var data = {
|
|
|
|
// data.init()
|
|
|
|
init: function( nav ){
|
|
|
|
var demo = mfnSetup.demos[website];
|
|
|
|
// check for slider
|
|
|
|
if( 'undefined' !== typeof(demo.plugins) ){
|
|
|
|
if( demo.plugins.indexOf('rev') >= 0 ){
|
|
$('.card-data .select-inner span[data-type="sliders"]', $importer).removeClass('hidden');
|
|
} else {
|
|
$('.card-data .select-inner span[data-type="sliders"]', $importer).addClass('hidden');
|
|
}
|
|
|
|
}
|
|
|
|
$('.card-data .import-options li[data-type="complete"]', $importer).trigger('click');
|
|
|
|
}
|
|
|
|
};
|
|
|
|
/**
|
|
* Builder select
|
|
*/
|
|
|
|
var blrd = {
|
|
|
|
// blrd.init()
|
|
|
|
init: function( dir ){
|
|
|
|
var demo = mfnSetup.demos[website];
|
|
|
|
var b = $('.mfn-dashboard-card[data-step="'+ step +'"]', $importer);
|
|
|
|
// elementor additional settings
|
|
|
|
$('.mfn-dashboard-card[data-step="'+ step +'"]', $importer).removeAttr('data-elementor');
|
|
if( 'undefined' !== typeof(demo.elementor) ){
|
|
if( 'undefined' !== typeof(demo.elementor.flexbox) ){
|
|
$('.mfn-dashboard-card[data-step="'+ step +'"]', $importer).attr('data-elementor','flexbox');
|
|
}
|
|
}
|
|
|
|
// elementor not available for selected website
|
|
|
|
if( ! demo.layouts || demo.layouts.indexOf('ele') < 0 ){
|
|
if( 'next' == dir ){
|
|
steps.next();
|
|
} else {
|
|
steps.prev();
|
|
}
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
/**
|
|
* Steps
|
|
*/
|
|
|
|
var steps = {
|
|
|
|
// steps.next()
|
|
|
|
next: function() {
|
|
|
|
var currentKey = keys.indexOf(step),
|
|
key = keys[currentKey+1];
|
|
|
|
steps.change(key, 'next');
|
|
|
|
},
|
|
|
|
// steps.prev()
|
|
|
|
prev: function() {
|
|
|
|
var currentKey = keys.indexOf(step),
|
|
key = keys[currentKey-1];
|
|
|
|
steps.change(key, 'prev');
|
|
|
|
},
|
|
|
|
// steps.change()
|
|
|
|
change: function( key, nav ) {
|
|
|
|
var item = navigation[key];
|
|
|
|
step = key;
|
|
$importer.attr('data-step', step);
|
|
|
|
$('.mfn-dashboard-card[data-step="'+ step +'"]', $importer).addClass('active')
|
|
.siblings().removeClass('active');
|
|
|
|
// callback
|
|
|
|
if( item ){
|
|
item( nav );
|
|
}
|
|
|
|
},
|
|
|
|
};
|
|
|
|
/**
|
|
* Complete setup
|
|
*/
|
|
|
|
var complete = {
|
|
|
|
dfdReset: $.Deferred(),
|
|
dfdContent: $.Deferred(),
|
|
|
|
$steps: $('.card-complete .complete-steps', $importer),
|
|
|
|
// complete.init()
|
|
|
|
init: function(){
|
|
|
|
var demo = mfnSetup.demos[website];
|
|
|
|
// set preview
|
|
|
|
$('.website-image', $importer).attr('src','https://muffingroup.com/betheme/assets/images/demos/'+ website +'.jpg');
|
|
|
|
// do not install all plugins
|
|
|
|
complete.$steps.children('.plugin').addClass('disabled');
|
|
complete.$steps.children('.slider').addClass('disabled');
|
|
complete.$steps.children('.content').addClass('disabled');
|
|
complete.$steps.children('.options').addClass('disabled');
|
|
|
|
// content
|
|
|
|
if( demoData.indexOf('complete') >= 0 || demoData.indexOf('content') >= 0 ){
|
|
complete.$steps.children('.content').removeClass('disabled');
|
|
}
|
|
|
|
// theme options
|
|
|
|
if( demoData.indexOf('complete') >= 0 || demoData.indexOf('options') >= 0 ){
|
|
complete.$steps.children('.options').removeClass('disabled');
|
|
}
|
|
|
|
// check which plugins are required
|
|
|
|
if( 'undefined' !== typeof(demo.plugins) ){
|
|
|
|
demo.plugins.forEach(function(plugin){
|
|
|
|
// skip elementor in bebuilder is selected
|
|
if( 'ele' == plugin && 'be' == builder ){
|
|
return;
|
|
}
|
|
|
|
// revolution slider
|
|
if( 'rev' == plugin ){
|
|
if( demoData.indexOf('sliders') >= 0 ){
|
|
complete.$steps.children('.slider').removeClass('disabled');
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
|
|
complete.$steps.children('li.'+ plugin).removeClass('disabled');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// complete.start()
|
|
|
|
start: function(){
|
|
|
|
var importSteps = complete.$steps.children(':not(.disabled)');
|
|
|
|
importSteps = $.map(importSteps, function(value, index){
|
|
return [value];
|
|
});
|
|
|
|
// console.log(importSteps);
|
|
|
|
var promises = [],
|
|
i,
|
|
dfd = $.Deferred(),
|
|
dfdNext = dfd;
|
|
|
|
dfd.resolve();
|
|
|
|
// disable button
|
|
|
|
$('.card-complete .setup-complete', $importer).addClass('disabled');
|
|
$('.mfn-footer', $importer).hide();
|
|
|
|
// run import steps
|
|
|
|
if( 0 < importSteps.length ){
|
|
|
|
for( i = 0; i < importSteps.length; i++ ){
|
|
(function(k){
|
|
|
|
var $current = $(importSteps[k]),
|
|
action = $current.data('action');
|
|
|
|
dfdNext = dfdNext.then( function() {
|
|
if ( 'reset' === action ) {
|
|
return complete.databaseReset();
|
|
} else if ( 'plugin-activate' === action ) {
|
|
return complete.pluginActivate($current);
|
|
} else if ( 'plugin-install' === action ) {
|
|
return complete.pluginInstall($current);
|
|
} else if ( 'download' === action ) {
|
|
return complete.downloadPackage();
|
|
} else if ( 'content' === action ) {
|
|
return complete.content();
|
|
} else if ( 'options' === action ) {
|
|
return complete.options();
|
|
} else if ( 'slider' === action ) {
|
|
return complete.slider();
|
|
} else if ( 'settings' === action ) {
|
|
return complete.settings();
|
|
}
|
|
} );
|
|
|
|
promises.push( dfdNext );
|
|
}(i));
|
|
}
|
|
|
|
jQuery.when.apply( null, promises ).then(
|
|
function() {
|
|
|
|
// next step
|
|
steps.next();
|
|
|
|
// finish step attributes
|
|
$importer.attr('data-type', 'finish');
|
|
|
|
},
|
|
function() {
|
|
|
|
alert(error);
|
|
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// complete.databaseReset()
|
|
|
|
databaseReset: function(){
|
|
|
|
modal.open();
|
|
|
|
return complete.dfdReset.promise();
|
|
|
|
},
|
|
|
|
// complete.pluginActivate()
|
|
|
|
pluginActivate: function($el){
|
|
|
|
var plugin = $el.data('plugin'),
|
|
path = $el.data('path');
|
|
|
|
complete.$steps.children('[data-plugin="'+ plugin +'"]').addClass('loading');
|
|
|
|
return $.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_plugin_activate',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val(),
|
|
'plugin': plugin,
|
|
'path': path,
|
|
},
|
|
dataType: 'JSON',
|
|
type: 'POST',
|
|
|
|
}).done(function(response){
|
|
|
|
if( ! response.error ){
|
|
complete.$steps.children('[data-plugin="'+ plugin +'"]').removeClass('loading').addClass('done');
|
|
} else {
|
|
complete.$steps.children('[data-plugin="'+ plugin +'"]').removeClass('loading').addClass('error');
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// complete.pluginInstall()
|
|
|
|
pluginInstall: function($el){
|
|
|
|
var nonce = $('input[name="mfn-tgmpa-nonce"]', $importer).val(),
|
|
page = $el.data('page'),
|
|
plugin = $el.data('plugin');
|
|
|
|
complete.$steps.children('[data-plugin="'+ plugin +'"]').addClass('loading');
|
|
|
|
return $.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_plugin_install',
|
|
'page': page,
|
|
'plugin': plugin,
|
|
'tgmpa-install': 'install-plugin',
|
|
'tgmpa-nonce': nonce,
|
|
},
|
|
type: 'GET',
|
|
|
|
}).done(function(response){
|
|
|
|
if( response.indexOf('plugins.php?action=activate') > 0 ){
|
|
complete.$steps.children('[data-plugin="'+ plugin +'"]').removeClass('loading').addClass('done');
|
|
} else {
|
|
complete.$steps.children('[data-plugin="'+ plugin +'"]').removeClass('loading').addClass('error');
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// complete.downloadPackage()
|
|
|
|
downloadPackage: function($el){
|
|
|
|
complete.$steps.children('.download').addClass('loading');
|
|
|
|
return $.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_download',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val(),
|
|
'website': website,
|
|
'builder': builder,
|
|
},
|
|
type: 'POST',
|
|
|
|
}).done(function(response){
|
|
|
|
complete.$steps.children('.download').removeClass('loading').addClass('done');
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// complete.content()
|
|
|
|
content: function(){
|
|
|
|
complete.$steps.children('.content').addClass('loading');
|
|
|
|
var attachments = 0;
|
|
var complete_import = 0;
|
|
|
|
if( demoData.indexOf('attachments') >= 0 ){
|
|
attachments = 1;
|
|
}
|
|
|
|
if( demoData.indexOf('complete') >= 0 ){
|
|
complete_import = 1;
|
|
}
|
|
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_content',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val(),
|
|
'website': website,
|
|
'builder': builder,
|
|
'attachments': attachments,
|
|
'complete_import': complete_import,
|
|
},
|
|
type: 'POST',
|
|
statusCode: {
|
|
524: function() {
|
|
// console.log('A timeout occurred. Trying again.');
|
|
// complete.content();
|
|
error = 'A timeout occurred. Maximum execution time exceeded.';
|
|
// error = 'A timeout occurred. Please try again WITHOUT database reset.';
|
|
}
|
|
}
|
|
|
|
}).done(function(response){
|
|
|
|
complete.$steps.children('.content').removeClass('loading').addClass('done');
|
|
complete.dfdContent.resolve();
|
|
|
|
});
|
|
|
|
return complete.dfdContent.promise();
|
|
|
|
},
|
|
|
|
// complete.options()
|
|
|
|
options: function($el){
|
|
|
|
complete.$steps.children('.options').addClass('loading');
|
|
|
|
var complete_import = 0;
|
|
|
|
if( demoData.indexOf('complete') >= 0 ){
|
|
complete_import = 1;
|
|
}
|
|
|
|
return $.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_options',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val(),
|
|
'website': website,
|
|
'builder': builder,
|
|
'complete_import': complete_import,
|
|
},
|
|
type: 'POST',
|
|
|
|
}).done(function(response){
|
|
|
|
complete.$steps.children('.options').removeClass('loading').addClass('done');
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// complete.slider()
|
|
|
|
slider: function($el){
|
|
|
|
complete.$steps.children('.slider').addClass('loading');
|
|
|
|
return $.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_slider',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val(),
|
|
'website': website,
|
|
'builder': builder,
|
|
},
|
|
type: 'POST',
|
|
|
|
}).done(function(response){
|
|
|
|
complete.$steps.children('.slider').removeClass('loading').addClass('done');
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// complete.settings()
|
|
|
|
settings: function($el){
|
|
|
|
complete.$steps.children('.settings').addClass('loading');
|
|
|
|
var complete_import = 0;
|
|
|
|
if( demoData.indexOf('complete') >= 0 ){
|
|
complete_import = 1;
|
|
}
|
|
|
|
return $.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_settings',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val(),
|
|
'website': website,
|
|
'builder': builder,
|
|
'blogname': $('#input-blogname').val(),
|
|
'blogdescription': $('#input-blogdescription').val(),
|
|
'complete_import': complete_import,
|
|
},
|
|
type: 'POST',
|
|
|
|
}).done(function(response){
|
|
|
|
complete.$steps.children('.settings').removeClass('loading').addClass('done');
|
|
|
|
});
|
|
|
|
},
|
|
|
|
};
|
|
|
|
/**
|
|
* Sticky filters
|
|
*/
|
|
|
|
var stickyFilters = function() {
|
|
|
|
if( ! $('#websites .filters').length ){
|
|
return;
|
|
}
|
|
|
|
sidebar = $('#websites .filters').stickySidebar({
|
|
topSpacing: 150
|
|
});
|
|
|
|
};
|
|
|
|
/**
|
|
* Rate
|
|
*/
|
|
|
|
var rate = function($el) {
|
|
|
|
var rating = $el.attr('data-rating');
|
|
|
|
$el.addClass('active')
|
|
.siblings().removeClass('active');
|
|
|
|
$.ajax({
|
|
url: ajaxurl,
|
|
data: {
|
|
'action': 'mfn_setup_rate',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val(),
|
|
'rating': rating,
|
|
},
|
|
dataType: 'JSON',
|
|
type: 'POST',
|
|
|
|
}).done(function(response){
|
|
|
|
// console.log(response);
|
|
|
|
})
|
|
.always(function() {
|
|
|
|
$('.card-finish', $importer).addClass('rated');
|
|
|
|
setTimeout(function(){
|
|
$('.card-finish', $importer).removeClass('rated');
|
|
},3000);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
/**
|
|
* Lazy load images
|
|
* lazyLoad()
|
|
*/
|
|
|
|
var lazyLoad = function() {
|
|
|
|
var observer = lozad('.lozad, img[data-src]');
|
|
observer.observe();
|
|
|
|
};
|
|
|
|
/**
|
|
* Search
|
|
*/
|
|
|
|
var searchForm = {
|
|
|
|
timer: false,
|
|
|
|
// searchForm.search()
|
|
|
|
search: function(value) {
|
|
|
|
var filter = value.replace('&', '').replace(/ /g, '').toLowerCase();
|
|
|
|
if( filter ){
|
|
search.closest('.search-wrapper').addClass('active');
|
|
} else {
|
|
search.closest('.search-wrapper').removeClass('active');
|
|
}
|
|
|
|
search.val(value);
|
|
|
|
isotope.scrollTop();
|
|
|
|
isotope.overlay('show');
|
|
|
|
setTimeout(function(){
|
|
|
|
getWebsites();
|
|
|
|
$.when(getWebsitesDone).done(function(){
|
|
|
|
websitesIso.isotope({
|
|
filter: function() {
|
|
// return filter ? $(this).data('title').match(filter) : true;
|
|
|
|
if( 'elementor' == builder ){
|
|
|
|
if( $(this).is('.ele') ){
|
|
return filter ? $(this).data('title').match(filter) : true;
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
} else {
|
|
|
|
return filter ? $(this).data('title').match(filter) : true;
|
|
|
|
}
|
|
|
|
}
|
|
});
|
|
|
|
isotope.clear();
|
|
isotope.result( filter );
|
|
|
|
});
|
|
|
|
}, 200);
|
|
|
|
},
|
|
|
|
// searchForm.searchTimer()
|
|
|
|
searchTimer: function(input) {
|
|
|
|
clearTimeout(this.timer);
|
|
this.timer = setTimeout(function() {
|
|
searchForm.search(input.val());
|
|
}, 300, input);
|
|
|
|
},
|
|
|
|
// searchForm.clear()
|
|
|
|
clear: function() {
|
|
|
|
search.val('');
|
|
search.closest('.search-wrapper').removeClass('active');
|
|
|
|
}
|
|
|
|
};
|
|
|
|
/**
|
|
* Isotope
|
|
*/
|
|
|
|
var isotope = {
|
|
|
|
currentFilters: {
|
|
layout: [],
|
|
subject: [],
|
|
builder: [] // only '.ele' allowed here
|
|
},
|
|
|
|
// isotope.concatValues()
|
|
|
|
concatValues: function(filters) {
|
|
|
|
var i = 0;
|
|
var comboFilters = [];
|
|
|
|
for ( var prop in filters ) {
|
|
var filterGroup = filters[ prop ];
|
|
// skip to next filter group if it doesn't have any values
|
|
if ( !filterGroup.length ) {
|
|
continue;
|
|
}
|
|
if ( i === 0 ) {
|
|
// copy to new array
|
|
comboFilters = filterGroup.slice(0);
|
|
} else {
|
|
var filterSelectors = [];
|
|
// copy to fresh array
|
|
var groupCombo = comboFilters.slice(0); // [ A, B ]
|
|
// merge filter Groups
|
|
for (var k=0, len3 = filterGroup.length; k < len3; k++) {
|
|
for (var j=0, len2 = groupCombo.length; j < len2; j++) {
|
|
filterSelectors.push( groupCombo[j] + filterGroup[k] ); // [ 1, 2 ]
|
|
}
|
|
|
|
}
|
|
// apply filter selectors to combo filters for next group
|
|
comboFilters = filterSelectors;
|
|
}
|
|
i++;
|
|
}
|
|
|
|
var comboFilter = comboFilters.join(', ');
|
|
return comboFilter;
|
|
|
|
},
|
|
|
|
// isotope.init()
|
|
|
|
init: function() {
|
|
|
|
websitesIso.isotope({
|
|
itemSelector: '.website',
|
|
transitionDuration: 200,
|
|
hiddenStyle: {
|
|
opacity: 0
|
|
},
|
|
visibleStyle: {
|
|
opacity: 1
|
|
},
|
|
filter: this.concatValues(this.currentFilters)
|
|
}).isotope('reloadItems').isotope({
|
|
sortBy: 'original-order'
|
|
});
|
|
|
|
websitesIso.on('layoutComplete', function() {
|
|
recalculate();
|
|
});
|
|
|
|
},
|
|
|
|
// isotope.reset()
|
|
|
|
reset: function(li, group) {
|
|
|
|
var index = this.currentFilters[group].indexOf( li.data('filter') );
|
|
|
|
li.removeClass('current');
|
|
|
|
this.currentFilters[group].splice( index, 1 );
|
|
|
|
websitesIso.isotope({
|
|
filter: this.concatValues(this.currentFilters)
|
|
});
|
|
|
|
this.result();
|
|
|
|
},
|
|
|
|
// isotope.scrollTop()
|
|
|
|
scrollTop: function() {
|
|
|
|
searchLock = true;
|
|
|
|
$('html, body').animate({
|
|
// scrollTop: websites.offset().top - 90
|
|
scrollTop: 0
|
|
}, 200);
|
|
|
|
setTimeout(function() {
|
|
searchLock = false;
|
|
}, 250);
|
|
|
|
},
|
|
|
|
// isotope.filter()
|
|
|
|
filter: function(el) {
|
|
|
|
var li = el.closest('li');
|
|
var group = el.closest('ul').data('filter-group');
|
|
|
|
isotope.scrollTop();
|
|
|
|
searchForm.clear();
|
|
|
|
isotope.overlay('show');
|
|
|
|
setTimeout(function(){
|
|
|
|
getWebsites();
|
|
|
|
$.when(getWebsitesDone).done(function(){
|
|
|
|
if (li.hasClass('current')) {
|
|
isotope.reset(li, group);
|
|
return true;
|
|
}
|
|
|
|
// li.siblings().removeClass('current');
|
|
li.addClass('current');
|
|
|
|
isotope.currentFilters[group].push( li.data('filter') );
|
|
|
|
websitesIso.isotope({
|
|
filter: isotope.concatValues(isotope.currentFilters)
|
|
});
|
|
|
|
// results
|
|
|
|
isotope.result();
|
|
|
|
});
|
|
|
|
}, 200);
|
|
|
|
},
|
|
|
|
// isotope.removeButton()
|
|
|
|
removeButton: function(){
|
|
|
|
$('.show-all .button').remove();
|
|
|
|
},
|
|
|
|
// isotope.showAll()
|
|
|
|
showAll: function(){
|
|
|
|
this.overlay('show');
|
|
|
|
getWebsites();
|
|
this.result();
|
|
|
|
},
|
|
|
|
// isotope.overlay()
|
|
|
|
overlay: function(state){
|
|
|
|
if ( 'show' == state ) {
|
|
|
|
websitesIso.addClass('loading');
|
|
|
|
} else {
|
|
|
|
setTimeout(function(){
|
|
websitesIso.removeClass('loading');
|
|
}, 250);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// isotope.result()
|
|
|
|
result: function(search){
|
|
|
|
search = (typeof search !== 'undefined') ? search : ''; // isset
|
|
|
|
var count, all, text, layout, subject, bldr,
|
|
el = $('.results', websites);
|
|
|
|
count = websitesIso.data('isotope').filteredItems.length;
|
|
all = el.data('count');
|
|
|
|
layout = this.currentFilters.layout;
|
|
subject = this.currentFilters.subject;
|
|
bldr = this.currentFilters.builder;
|
|
|
|
isotope.overlay('hide');
|
|
|
|
if( ! layout.length && ! subject.length && ! bldr.length && ! search ){
|
|
|
|
el.html('<strong>All '+ all + '</strong> pre-built websites');
|
|
return false;
|
|
}
|
|
|
|
text = pluralize(count, 'result') +' for: ';
|
|
|
|
if( bldr.length ){
|
|
$.each( bldr, function( index, value ){
|
|
text += '<span class="filter" data-filter="'+ value +'">'+ dictionary[value] +'</span>';
|
|
});
|
|
}
|
|
|
|
if( layout.length ){
|
|
$.each( layout, function( index, value ){
|
|
text += '<span class="filter" data-filter="'+ value +'">'+ dictionary[value] +'</span>';
|
|
});
|
|
}
|
|
|
|
if( subject.length ){
|
|
$.each( subject, function( index, value ){
|
|
text += '<span class="filter" data-filter="'+ value +'">'+ dictionary[value] +'</span>';
|
|
});
|
|
}
|
|
|
|
if( search ){
|
|
text += '<span class="filter key">'+ search +'</span>';
|
|
}
|
|
|
|
el.html(text);
|
|
|
|
},
|
|
|
|
// isotope.unclick()
|
|
|
|
unclick: function(el){
|
|
|
|
var filter = el.data('filter');
|
|
|
|
if( filter ){
|
|
$('.filters li[data-filter="'+ filter +'"] a').click();
|
|
} else {
|
|
searchForm.search('');
|
|
}
|
|
|
|
|
|
},
|
|
|
|
// isotope.clear()
|
|
|
|
clear: function() {
|
|
|
|
isotope.currentFilters.subject = [];
|
|
isotope.currentFilters.layout = [];
|
|
|
|
$('.filters li').removeClass('current');
|
|
|
|
}
|
|
|
|
};
|
|
|
|
/**
|
|
* Get all pre-built websites
|
|
* getWebsites()
|
|
*/
|
|
|
|
var getWebsites = function() {
|
|
|
|
if ( getWebsitesOnce ) {
|
|
return true;
|
|
}
|
|
|
|
getWebsitesOnce = true;
|
|
|
|
var data = {
|
|
action: 'mfn_setup_websites',
|
|
'mfn-setup-nonce': $('input[name="mfn-setup-nonce"]', $importer).val()
|
|
};
|
|
|
|
$.ajax({
|
|
|
|
url: ajaxurl,
|
|
data: data,
|
|
// dataType: 'JSON',
|
|
type: 'POST',
|
|
|
|
}).done(function(response) {
|
|
|
|
if (response) {
|
|
|
|
websitesIso.append(response).isotope('reloadItems').isotope({
|
|
sortBy: 'original-order'
|
|
});
|
|
|
|
websitesIso.on('arrangeComplete', function() {
|
|
lazyLoad();
|
|
isotope.removeButton();
|
|
getWebsitesDone.resolve();
|
|
});
|
|
|
|
} else {
|
|
|
|
console.log('Error: Could not get all pre-built websites.');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
/**
|
|
* Pluralize nouns
|
|
*/
|
|
|
|
var pluralize = function(count, noun){
|
|
|
|
if( 1 !== count ){
|
|
noun = noun + 's';
|
|
}
|
|
|
|
return count + ' ' + noun;
|
|
|
|
};
|
|
|
|
/**
|
|
* Recalculate
|
|
*/
|
|
|
|
var recalculate = function() {
|
|
|
|
$(window).trigger('resize');
|
|
|
|
if( sidebar ){
|
|
sidebar.stickySidebar('updateSticky');
|
|
}
|
|
|
|
};
|
|
|
|
/**
|
|
* Bind
|
|
*/
|
|
|
|
var bind = function() {
|
|
|
|
// steps
|
|
|
|
$importer.on( 'click', '.setup-previous, .inner-navigation.prev', function(e) {
|
|
steps.prev();
|
|
});
|
|
|
|
$importer.on( 'click', '.setup-next, .inner-navigation.next', function(e) {
|
|
steps.next();
|
|
});
|
|
|
|
// pre-built
|
|
|
|
$importer.on( 'click', '.builder-type li', function(e) {
|
|
preBuilt.builderSelect($(this));
|
|
});
|
|
|
|
$importer.on( 'click', '.import-options li', function(e) {
|
|
preBuilt.contentSelect($(this),e);
|
|
});
|
|
|
|
websites.on( 'click', '.website .preview', function(e) {
|
|
preBuilt.preview($(this));
|
|
});
|
|
|
|
websites.on( 'click', '.website', function(e) {
|
|
preBuilt.select($(this),e);
|
|
});
|
|
|
|
// websites
|
|
|
|
$('#websites').on('click', '.filters a', function(e) {
|
|
e.preventDefault();
|
|
isotope.filter($(this));
|
|
});
|
|
|
|
$('#websites').on('click', '.results .filter', function(e) {
|
|
e.preventDefault();
|
|
isotope.unclick($(this));
|
|
});
|
|
|
|
$('#websites').on('click', '.show-all .button', function(e) {
|
|
e.preventDefault();
|
|
isotope.showAll();
|
|
});
|
|
|
|
// search
|
|
|
|
$('#websites').on('click', '.search-wrapper .close', function() {
|
|
searchForm.search('');
|
|
});
|
|
|
|
// complete
|
|
|
|
$importer.on( 'click', '.setup-complete', function(e) {
|
|
complete.start();
|
|
});
|
|
|
|
// rate
|
|
|
|
$importer.on( 'click', '.mfn-rating li', function(e) {
|
|
e.preventDefault();
|
|
rate($(this));
|
|
});
|
|
|
|
// modal
|
|
|
|
$importer.on( 'click', '.modal-confirm-reset .remove-media span', function(e) {
|
|
e.preventDefault();
|
|
modal.media($(this));
|
|
});
|
|
|
|
$importer.on( 'click', '.modal-confirm-reset .reset-confirm span', function(e) {
|
|
e.preventDefault();
|
|
modal.confirm($(this));
|
|
});
|
|
|
|
$importer.on( 'click', '.modal-confirm-reset .btn-modal-confirm', function(e) {
|
|
e.preventDefault();
|
|
modal.reset($(this));
|
|
});
|
|
|
|
$importer.on( 'click', '.modal-confirm-reset .btn-modal-skip', function(e) {
|
|
e.preventDefault();
|
|
modal.skip($(this));
|
|
});
|
|
|
|
// keyup
|
|
|
|
search.on('keyup', function() {
|
|
searchForm.searchTimer($(this));
|
|
});
|
|
|
|
// window.scroll
|
|
|
|
$(window).on('scroll', function() {
|
|
|
|
});
|
|
|
|
// window resize
|
|
|
|
$(window).on('debouncedresize', function(){
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
/**
|
|
* Ready
|
|
* document.ready
|
|
*/
|
|
|
|
var ready = function() {
|
|
|
|
lazyLoad();
|
|
|
|
bind();
|
|
|
|
};
|
|
|
|
/**
|
|
* Load
|
|
* window.load
|
|
*/
|
|
|
|
var load = function() {
|
|
|
|
$importer.removeClass('loading');
|
|
|
|
preBuilt.init();
|
|
|
|
recalculate();
|
|
|
|
};
|
|
|
|
/**
|
|
* Return
|
|
*/
|
|
|
|
return {
|
|
ready: ready,
|
|
load: load
|
|
};
|
|
|
|
})(jQuery);
|
|
|
|
/**
|
|
* $(document).ready
|
|
*/
|
|
|
|
$(function() {
|
|
MfnImporter.ready();
|
|
});
|
|
|
|
/**
|
|
* $(window).load
|
|
*/
|
|
|
|
$(window).on('load', function(){
|
|
MfnImporter.load();
|
|
});
|
|
|
|
})(jQuery);
|