jQuery(document).ready(function($) {
$( '.nf-upgrade-complete' ).nfAdminModal( { title: nfUpgradeHandler.nf_upgrade_complete_title, buttons: '.nf-upgrade-complete-buttons' } );
function UpgradeHandler( upgrade ) {
this.upgrade = upgrade;
this.process = function( step, total_steps, args ) {
step = typeof step !== 'undefined' ? step : 0;
total_step = typeof total_step !== 'undefined' ? total_step : 0;
args = typeof args !== 'undefined' ? args : [];
console.log( 'Upgrade: ' + this.upgrade );
$.post(
ajaxurl,
{
upgrade: this.upgrade,
step: parseInt( step ),
total_steps: parseInt( total_steps ),
args: args,
action: 'nf_upgrade_handler'
},
function (response) {
var elem = $( '#nf_upgrade_' + upgradeHandler.upgrade );
try {
response = $.parseJSON(response);
} catch( e ) {
// TODO: move error display to Upgrade object
elem.find( '.spinner' ).css( 'display', 'none' ).css( 'visibility', 'hidden' );
elem.find( '.dashicons-no' ).css( 'display', 'block' );
elem.find( '.nf-upgrade-handler__errors__text').html('Bad Response :\'(
' + e + "
" + response );
elem.find( '.nf-upgrade-handler__errors').slideDown();
return;
}
console.log( 'DEBUG: NF_UpgradeHandler step response: ');
console.log( response );
if( undefined == response ) {
// TODO: move error display to Upgrade object
elem.find( '.spinner' ).css( 'display', 'none' ).css( 'visibility', 'hidden' );
elem.find( '.dashicons-no' ).css( 'display', 'block' );
elem.find( '.nf-upgrade-handler__errors__text').html('Empty Response :\'(');
elem.find( '.nf-upgrade-handler__errors').slideDown();
return;
}
if( response.errors ) {
// TODO: move error display to Upgrade object
elem.find( '.spinner' ).css( 'display', 'none' ).css( 'visibility', 'hidden' );
elem.find( '.dashicons-no' ).css( 'display', 'block' );
var error_text = '';
$.each( response.errors, function( index, error ) {
error_text = error_text + '[' + index + '] ' + error + '
';
});
elem.find( '.nf-upgrade-handler__errors__text').html('Processing Error :\'(
' + error_text );
elem.find( '.nf-upgrade-handler__errors').slideDown();
$( '#progressbar_' + response.upgrade).slideUp();
return;
}
var progressbar = $( '#progressbar_' + response.upgrade ).progressbar({
value: 100 * ( response.step / response.total_steps )
});
//TODO: move animations to Upgrade object
elem.find( '.spinner' ).css( 'display', 'block' ).css( 'visibility', 'visible' );
elem.find( '.dashicons-no' ).css( 'display', 'none' );
elem.find( '.inside') .slideDown();
if ( undefined != response.complete ) {
//TODO: move animations to Upgrade object
elem.find( '.inside' ).slideUp();
elem.find( '.spinner' ).css( 'display', 'none' ).css( 'visibility', 'hidden' );
elem.find( '.dashicons-yes').css( 'display', 'block' );
if ( undefined != response.nextUpgrade ) {
upgradeHandler.upgrade = response.nextUpgrade;
$( '#nf_upgrade_' + upgradeHandler.upgrade ).find( '.spinner' ).css( 'display', 'block' ).css( 'visibility', 'visible' );
$( '#nf_upgrade_' + upgradeHandler.upgrade ).find( '.inside') .slideDown();
upgradeHandler.process();
return;
}
console.log( 'DEBUG: NF_UpgradeHandler says "It is finished!"' );
$( '.nf-upgrade-complete' ).nfAdminModal( 'open' );
return;
}
upgradeHandler.process( response.step, response.total_steps, response.args );
}
).fail(function() {
alert( "error" );
});
};
}
function Upgrade( name ) {
this.name = name;
this.elem = '#nf_upgrade_' + name;
this.open = function() {
jQuery( this.elem).slideDown();
};
this.close = function() {
jQuery( this.elem).slideUp();
};
}
if( "undefined" != typeof nfUpgradeHandler ) {
console.log('DEBUG: NF_UpgradeHandler first upgrades is ' + nfUpgradeHandler.upgrade);
var upgradeHandler = new UpgradeHandler(nfUpgradeHandler.upgrade);
$('.progressbar').progressbar({value: 0});
var first_upgrade = $('#nf_upgrade_' + upgradeHandler.upgrade);
//TODO: move animations to Upgrade object
first_upgrade.find('.spinner').css('display', 'block').css('visibility', 'visible');
first_upgrade.find('.dashicons-no').css('display', 'none');
first_upgrade.find('.inside').slideDown();
upgradeHandler.process();
} else {
// No Upgrades to run, return to All Forms Page
document.location.href = "admin.php?page=ninja-forms";
}
});