Files
carpseeds.pl/wp-content/plugins/jet-plugins-wizard/assets/js/jet-plugins-wizard.js
2024-07-15 11:28:08 +02:00

218 lines
5.1 KiB
JavaScript

( function( $, settings ) {
'use strict';
var JetPluginsWizrad = {
css: {
plugins: '.jet-plugins-wizard-plugins',
progress: '.jet-plugins-wizard-progress__bar',
showResults: '.jet-plugins-wizard-install-results__trigger',
showPlugins: '.jet-plugins-wizard-skin-item__plugins-title',
loaderBtn: '[data-loader="true"]',
start: '.start-install',
storePlugins: '.store-plugins',
activateLicense: '.jet-plugins-wizard-activate-license',
licenseInput: '.jet-plugins-wizard-input',
},
vars: {
plugins: null,
template: null,
currProgress: 0,
progress: null
},
init: function() {
var self = this;
self.vars.progress = $( self.css.progress );
self.vars.percent = $( '.jet-plugins-wizard-progress__label', self.vars.progress );
$( document )
.on( 'click.JetPluginsWizrad', self.css.showResults, self.showResults )
.on( 'click.JetPluginsWizrad', self.css.showPlugins, self.showPlugins )
.on( 'click.JetPluginsWizrad', self.css.storePlugins, self.storePlugins )
.on( 'click.JetPluginsWizrad', self.css.activateLicense, self.activateLicense )
.on( 'click.JetPluginsWizrad', self.css.loaderBtn, self.showLoader )
.on( 'focus.JetPluginsWizrad', self.css.licenseInput, self.clearLicenseErrors );
if ( undefined !== settings.firstPlugin ) {
self.vars.template = wp.template( 'wizard-item' );
settings.firstPlugin.isFirst = true;
self.installPlugin( settings.firstPlugin );
}
},
activateLicense: function( event ) {
event.preventDefault();
var $this = $( this ),
$form = $this.closest( '.jet-plugins-wizard-license-form' ),
$input = $form.find( '.jet-plugins-wizard-input' ),
license = $input.val();
$( '.jet-plugins-wizard-license-errors' ).html( '' );
if ( ! license ) {
$( '.jet-plugins-wizard-license-errors' ).html( settings.license.empty );
setTimeout( function() {
$this.removeClass( 'in-progress' );
}, 10 );
return false;
}
$.ajax({
url: ajaxurl,
type: 'get',
dataType: 'json',
data: {
action: 'jet_plugins_wizard_activate_license',
license: license
}
}).done( function( response ) {
if ( true === response.success ) {
$form.replaceWith( response.data.replaceWith );
} else {
$this.removeClass( 'in-progress' );
$( '.jet-plugins-wizard-license-errors' ).html( response.data.errorMessage );
}
});
},
clearLicenseErrors: function() {
$( '.jet-plugins-wizard-license-errors' ).html( '' );
},
storePlugins: function( event ) {
var $this = $( this ),
href = $this.attr( 'href' ),
plugins = [];
event.preventDefault();
$( '.tm-config-list input[type="checkbox"]:checked' ).each( function( index, el ) {
plugins.push( $( this ).attr( 'name' ) );
} );
$.ajax({
url: ajaxurl,
type: 'get',
dataType: 'json',
data: {
action: 'jet_plugins_wizard_store_plugins',
plugins: plugins
}
}).done( function( response ) {
window.location = href;
});
},
showLoader: function() {
$( this ).addClass( 'in-progress' );
},
showPlugins: function() {
$( this ).toggleClass( 'is-active' );
},
showResults: function() {
var $this = $( this );
$this.toggleClass( 'is-active' );
},
installPlugin: function( data ) {
var $target = $( JetPluginsWizrad.vars.template( data ) );
if ( null === JetPluginsWizrad.vars.plugins ) {
JetPluginsWizrad.vars.plugins = $( JetPluginsWizrad.css.plugins );
}
$target.appendTo( JetPluginsWizrad.vars.plugins );
console.log( data );
JetPluginsWizrad.installRequest( $target, data );
},
updateProgress: function() {
var val = 0,
total = parseInt( settings.totalPlugins );
JetPluginsWizrad.vars.currProgress++;
val = 100 * ( JetPluginsWizrad.vars.currProgress / total );
val = Math.round( val );
if ( 100 < val ) {
val = 100;
}
JetPluginsWizrad.vars.percent.html( val + '%' );
JetPluginsWizrad.vars.progress.css( 'width', val + '%' );
},
installRequest: function( target, data ) {
var icon;
data.action = 'jet_plugins_wizard_install_plugin';
if ( undefined === data.isFirst ) {
data.isFirst = false;
}
$.ajax({
url: ajaxurl,
type: 'get',
dataType: 'json',
data: data
}).done( function( response ) {
JetPluginsWizrad.updateProgress();
if ( true !== response.success ) {
return;
}
target.append( response.data.log );
if ( true !== response.data.isLast ) {
JetPluginsWizrad.installPlugin( response.data );
} else {
$( document ).trigger( 'jet-plugins-wizard-install-finished' );
if ( 1 == settings.redirect ) {
window.location = response.data.redirect;
}
target.after( response.data.message );
}
if ( 'error' === response.data.resultType ) {
icon = '<span class="dashicons dashicons-no"></span>';
} else {
icon = '<span class="dashicons dashicons-yes"></span>';
}
target.addClass( 'installed-' + response.data.resultType );
$( '.jet-plugins-wizard-loader', target ).replaceWith( icon );
});
}
};
JetPluginsWizrad.init();
}( jQuery, window.JetWizardSettings ) );