File: /var/www/html/wp-content/plugins/Crocoblock-wizard/assets/js/content.js
(function () {
"use strict";
var storage = window.sessionStorage;
Vue.component( 'cbw-content', {
template: '#cbw_content',
data: function() {
return {
isUpload: window.CBWPageConfig.is_upload,
skin: window.CBWPageConfig.skin,
currentComponent: 'cbw-select-import-type',
prevStep: {
type: 'url',
value: window.CBWPageConfig.prev_step,
},
nextStep: {
type: 'component',
value: 'cbw-import-content',
},
nextStepAllowed: false,
};
},
mounted: function() {
var curretStep = storage.getItem( 'cbw-import-content-step' );
if ( curretStep ) {
this.currentComponent = curretStep;
this.onComponentSwitch( this.currentComponent );
}
},
methods: {
onComponentSwitch: function( component ) {
var newTitle, newCover;
switch ( component ) {
case 'cbw-select-import-type':
newTitle = window.CBWPageConfig.title;
newCover = window.CBWPageConfig.cover;
this.prevStep = {
type: 'url',
value: window.CBWPageConfig.prev_step,
};
this.nextStep = {
type: 'component',
value: 'cbw-import-content',
};
storage.removeItem( 'cbw-import-type' );
this.nextStepAllowed = false;
this.$emit( 'change-wrapper-css', 'content-page vertical-flex' );
break;
case 'cbw-import-content':
newTitle = window.CBWPageConfig.import_title;
newCover = window.CBWPageConfig.cover_import;
this.prevStep = {
type: 'component',
value: 'cbw-select-import-type',
};
this.nextStep = {
type: 'component',
value: 'cbw-regenerate-thumb',
};
this.$emit( 'change-wrapper-css', 'content-page import-step vertical-flex' );
this.nextStepAllowed = false;
break;
case 'cbw-regenerate-thumb':
newTitle = window.CBWPageConfig.regenerate_title;
newCover = window.CBWPageConfig.cover_import;
this.prevStep = {
type: 'component',
value: 'cbw-import-content',
};
this.nextStep = {
type: 'url',
value: window.CBWPageConfig.next_step,
};
this.nextStepAllowed = false;
this.$emit( 'change-wrapper-css', 'content-page regenerate-step vertical-flex' );
break;
}
this.currentComponent = component;
if ( newTitle ) {
this.$emit( 'change-title', newTitle );
}
if ( newCover ) {
this.$emit( 'change-cover', newCover );
}
},
goToPrevStep: function() {
if ( 'url' === this.prevStep.type ) {
window.location = this.prevStep.value;
} else {
this.currentComponent = this.prevStep.value;
this.onComponentSwitch( this.currentComponent );
storage.setItem( 'cbw-import-content-step', this.currentComponent );
}
},
goToNextStep: function() {
if ( 'url' === this.nextStep.type ) {
window.location = this.nextStep.value;
} else {
this.currentComponent = this.nextStep.value;
this.onComponentSwitch( this.currentComponent );
storage.setItem( 'cbw-import-content-step', this.currentComponent );
}
},
skipContent: function() {
window.location = window.CBWPageConfig.next_step;
},
}
} );
Vue.component( 'cbw-clear-content', {
template: '#cbw_clear_content',
data: function() {
return {
password: '',
loading: false,
error: false,
success: false,
message: '',
};
},
methods: {
clearContent: function() {
var self = this;
self.loading = true;
this.xhr = jQuery.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: window.CBWPageConfig.action_mask.replace( /%module%/, window.CBWPageConfig.module ),
handler: 'clear_content',
password: self.password,
nonce: window.CBWPageConfig.nonce,
},
}).done( function( response ) {
if ( response.success ) {
self.success = true;
self.loading = false;
self.error = false;
self.message = response.data.message;
self.$emit( 'content-cleared' );
} else {
self.error = true;
self.message = response.data.message;
}
}).fail( function( xhr, textStatus, error ) {
self.error = true;
self.message = textStatus;
} );
},
getSummaryProgress: function( key ) {
var current = this.summaryCurrent[ key ],
total = this.summaryTotal[ key ];
if ( ! total ) {
return 0;
}
return Math.ceil( current * 100 / total );
}
}
} );
Vue.component( 'cbw-regenerate-thumb', {
template: '#cbw_regenerate_thumb',
data: function() {
return {
progress: 0,
step: window.CBWPageConfig.regenerate_chunk,
};
},
mounted: function() {
this.regenerateChunk( this.step, 0, 0 );
},
methods: {
regenerateChunk: function( step, offset, total ) {
var self = this;
if ( ! step ) {
return;
}
this.xhr = jQuery.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: window.CBWPageConfig.action_mask.replace( /%module%/, window.CBWPageConfig.module ),
handler: 'regenerate_chunk',
step: step,
offset: offset,
total: total,
nonce: window.CBWPageConfig.nonce,
},
}).done( function( response ) {
if ( response.success ) {
if ( response.data.complete ) {
self.progress = response.data.complete;
}
if ( ! response.data.isLast ) {
self.regenerateChunk( response.data.step, response.data.offset, response.data.total );
} else {
self.$emit( 'next-allowed', true );
window.location = window.CBWPageConfig.next_step;
}
} else {
self.error = response.data.message;
}
}).fail( function( xhr, textStatus, error ) {
self.error = textStatus;
} );
},
getSummaryProgress: function( key ) {
var current = this.summaryCurrent[ key ],
total = this.summaryTotal[ key ];
if ( ! total ) {
return 0;
}
return Math.ceil( current * 100 / total );
}
}
} );
Vue.component( 'cbw-import-content', {
template: '#cbw_import_content',
data: function() {
return {
type: '',
nextStep: '',
summaryInfo: window.CBWPageConfig.summary,
progress: 0,
ready: false,
total: 0,
error: '',
importType: storage.getItem( 'cbw-import-type' ),
summaryTotal: {
posts: 0,
authors: 0,
media: 0,
comments: 0,
terms: 0,
tables: 0,
},
summaryCurrent: {
posts: 0,
authors: 0,
media: 0,
comments: 0,
terms: 0,
tables: 0,
},
xhr: null
};
},
mounted: function() {
var self = this;
if ( ! self.importType ) {
self.importType = 'append';
}
this.xhr = jQuery.ajax({
url: ajaxurl,
type: 'GET',
dataType: 'json',
data: {
action: window.CBWPageConfig.action_mask.replace( /%module%/, window.CBWPageConfig.module ),
handler: 'get_import_info',
skin: window.CBWPageConfig.skin,
is_uploaded: window.CBWPageConfig.is_uploaded,
nonce: window.CBWPageConfig.nonce,
},
}).done( function( response ) {
if ( response.success ) {
self.ready = true;
self.total = response.data.total;
self.summaryTotal = response.data.summary;
if ( 'append' === self.importType ) {
self.importChunk( 1 );
}
} else {
self.error = textStatus;
}
}).fail( function( xhr, textStatus, error ) {
self.error = textStatus;
} );
},
methods: {
startImport: function() {
this.importChunk( 1 );
},
importChunk: function( chunk ) {
var self = this;
if ( ! chunk ) {
return;
}
this.xhr = jQuery.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: window.CBWPageConfig.action_mask.replace( /%module%/, window.CBWPageConfig.module ),
handler: 'import_chunk',
skin: window.CBWPageConfig.skin,
chunk: chunk,
is_uploaded: window.CBWPageConfig.is_uploaded,
nonce: window.CBWPageConfig.nonce,
},
}).done( function( response ) {
if ( response.success ) {
if ( response.data.processed ) {
var parts = [ 'posts', 'authors', 'media', 'comments', 'terms', 'tables' ];
parts.forEach( function( part ) {
var newVal = response.data.processed[ part ];
if ( newVal > self.summaryTotal[ part ] ) {
newVal = self.summaryTotal[ part ];
}
self.$set( self.summaryCurrent, part, response.data.processed[ part ] );
} );
}
if ( response.data.chunk ) {
self.importChunk( response.data.chunk );
}
if ( response.data.complete ) {
self.progress = response.data.complete;
}
if ( response.data.isLast ) {
self.$emit( 'next-allowed', true );
}
} else {
self.error = response.data.message;
}
}).fail( function( xhr, textStatus, error ) {
self.error = textStatus;
} );
},
getSummaryProgress: function( key ) {
var current = this.summaryCurrent[ key ],
total = this.summaryTotal[ key ];
if ( ! total ) {
return 0;
}
return Math.ceil( current * 100 / total );
}
}
} );
Vue.component( 'cbw-select-import-type', {
template: '#cbw_select_type',
data: function() {
return {
choices: window.CBWPageConfig.import_types,
nextStep: '',
};
},
methods: {
storeImportType: function( importType ) {
this.$emit( 'next-allowed', true );
storage.setItem( 'cbw-import-type', importType );
}
}
} );
})();