Files
2024-11-20 09:09:44 +01:00

106 lines
2.5 KiB
JavaScript

/*!
* Creative Elements - live Theme & Page Builder
* Copyright 2019-2023 WebshopWorks.com
*/
ceMigrate.init = function() {
this.moveCount = 6;
this.ajaxDelay = 333;
$('<link>', {
href: this.baseDir + 'modules/creativeelements/views/css/migrate.css',
rel: 'stylesheet'
}).appendTo('head');
$('<link>', {
href: this.baseDir + 'js/jquery/plugins/fancybox/jquery.fancybox.css',
rel: 'stylesheet'
}).one('load', function() {
$.ajax({
url: ceMigrate.baseDir + 'js/jquery/plugins/fancybox/jquery.fancybox.js',
cache: true,
dataType: 'script',
success: $.proxy(ceMigrate, 'open')
});
}).appendTo('head');
};
ceMigrate.open = function() {
$.fancybox({
padding: 5,
minWidth: 500,
maxWidth: 500,
minHeight: 16,
maxHeight: 16,
closeBtn: false,
helpers: {
overlay: {closeClick: false},
title: true
},
title: 'Creative Elements - Upgrade',
content: '\
<div id="ce-progress" class="progress">\
<div class="progress-bar progress-bar-striped progress-bar-animated"></div>\
</div>\
',
afterShow: function() {
ceMigrate.updateProgress();
ceMigrate.move();
}
});
};
ceMigrate.updateProgress = function() {
var p = 100 - (this.ids.content.length + this.ids.template.length) / this.count * 100;
$('#ce-progress .progress-bar').css('width', p.toFixed(2) + '%');
};
ceMigrate.move = function() {
var type = this.ids.content.length ? 'content' : 'template';
$.ajax(this.ajaxUrl[type], {
type: 'post',
dataType: 'json',
data: {
action: 'migrate',
ids: this.ids[type].slice(0, this.moveCount),
},
success: $.proxy(this, 'onSuccess'),
error: $.proxy(this, 'onError')
});
};
ceMigrate.onSuccess = function(data, status, xhr) {
if (data && data.done && data.done.length) {
var diff = [];
this.ids[data.type].forEach(function(id) {
data.done.indexOf(id) < 0 && diff.push(id);
});
this.ids[data.type] = diff;
this.updateProgress();
if (this.ids.content.length + this.ids.template.length) {
setTimeout($.proxy(this, 'move'), this.ajaxDelay);
} else {
setTimeout(function onFinish() {
location.href = ceMigrate.ajaxUrl.content.replace('&ajax=1', '');
}, 600);
}
} else {
this.onError(xhr, 'unknown error');
}
};
ceMigrate.onError = function(xhr, status) {
alert(status + '\nPlease contact us on product support.');
$.fancybox.close();
$('<div>' + xhr.responseText + '</div>').prependTo('#content');
};
window.$
? $(document).ready($.proxy(ceMigrate, 'init'))
: document.addEventListener('DOMContentLoaded', ceMigrate.init.bind(ceMigrate))
;