File: /var/www/html/wp-content/plugins/Crocoblock-wizard/assets/js/template.js
(function () {
"use strict";
Vue.component( 'cbw-free-templates', {
template: '#cbw_free_templates',
data: function() {
return {
activeTab: 'home-pages',
items: window.CBWPageConfig.templates,
tabs: window.CBWPageConfig.tabs,
};
},
methods: {
goBack: function() {
window.location = window.CBWPageConfig.main_page;
},
onStartInstall: function() {
this.$emit( 'change-body', 'cbw-import-template' );
},
templatesByTabs: function( tab ) {
var result = {};
for ( var slug in this.items ) {
if ( ! this.items[ slug ].tab ) {
result[ slug ] = this.items[ slug ];
} else if ( this.items[ slug ].tab === tab ) {
result[ slug ] = this.items[ slug ];
}
}
return result;
}
}
} );
Vue.component( 'cbw-import-template', {
template: '#cbw_import_template',
data: function() {
return {
result: {
type: '',
message: 'default',
},
pageTitle: '',
template: {},
importType: 'jet',
loading: {
template: false,
page: false,
},
resultURL: {
template: null,
page: null,
},
imported: {
template: false,
page: false,
},
buttons: {
template: window.CBWPageConfig.template_button,
page: window.CBWPageConfig.page_button,
}
};
},
mounted: function() {
this.template = window.CBWPageConfig.templateToImport.template;
this.importType = window.CBWPageConfig.templateToImport.type;
},
methods: {
importTemplate: function() {
this.importItem( 'template' );
},
createPage: function() {
this.importItem( 'page' );
},
importItem: function( type ) {
var self = this,
templateUrl,
title;
templateUrl = self.template.urls[ self.importType ];
self.loading[ type ] = true;
if ( self.imported[ type ] && self.resultURL[ type ] ) {
window.location = self.resultURL[ type ];
return;
}
if ( 'page' === type ) {
title = self.pageTitle;
} else {
title = false;
}
jQuery.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: window.CBWPageConfig.action_mask.replace( /%module%/, window.CBWPageConfig.module ),
handler: 'import_' + type,
url: templateUrl,
title: title,
nonce: window.CBWPageConfig.nonce,
},
}).done( function( response ) {
if ( ! response ) {
self.result.type = 'error';
self.result.message = 'Empty response';
self.$set( self.loading, type, false );
return;
}
if ( ! response.success ) {
self.result.type = 'error';
self.result.message = response.data.message;
self.$set( self.loading, type, false );
} else {
self.result.type = 'success';
self.result.message = response.data.message;
self.$set( self.loading, type, false );
self.$set( self.buttons, type, response.data.button_label );
self.$set( self.imported, type, true );
self.$set( self.resultURL, type, response.data.url );
}
} ).fail( function( xhr, textStatus, error ) {
self.result.type = 'error';
self.result.message = error;
self.$set( self.loading, type, false );
} );
},
goBack: function() {
window.CBWPageConfig.templateToImport = {};
this.$emit( 'change-body', 'cbw-free-templates' );
}
},
} );
Vue.component( 'cbw-template', {
template: '#cbw_template',
props: {
template: {
type: Object,
default: function() {
return {};
}
},
slug: {
type: String,
default: '',
},
},
data: function() {
return {
loading: false,
isPreview: false,
previewTimeout: null,
importType: false,
};
},
methods: {
clearPreview: function() {
if ( this.previewTimeout ) {
clearTimeout( this.previewTimeout );
this.isPreview = false;
}
},
showPreview: function() {
var self = this;
if ( self.previewTimeout ) {
clearTimeout( self.previewTimeout );
}
self.previewTimeout = setTimeout( function() {
self.isPreview = true;
}, 100 );
},
startInstall: function() {
window.CBWPageConfig.templateToImport = {
template: this.template,
type: this.importType,
};
this.$emit( 'start-install' );
}
}
} );
})();