first commit
This commit is contained in:
191
wp-content/plugins/sitepress-multilingual-cms/res/js/wizard.js
Normal file
191
wp-content/plugins/sitepress-multilingual-cms/res/js/wizard.js
Normal file
@@ -0,0 +1,191 @@
|
||||
/*global ajaxurl, _ */
|
||||
|
||||
var WPMLCore = WPMLCore || {};
|
||||
|
||||
WPMLCore.wizardFramework = function ( $, wizardImplementation ) {
|
||||
"use strict";
|
||||
|
||||
var self = this;
|
||||
|
||||
var init = function () {
|
||||
|
||||
self.storage = {};
|
||||
|
||||
self.backButton = $( '.js-wizard-back' );
|
||||
self.nextButton = $( '.js-wizard-next' );
|
||||
self.stepContent = $( '.js-wizard-step-content' );
|
||||
self.nonce = $( '.js-wpml-wizard' ).data( 'nonce' );
|
||||
self.steps = $( '.js-wizard-step' );
|
||||
|
||||
self.currentStep = self.getCurrentStep();
|
||||
self.getCurrentStepIndex();
|
||||
|
||||
self.initializeButtons();
|
||||
|
||||
wizardImplementation.notifyCurrentStep( self.currentStep );
|
||||
|
||||
self.fetchContent();
|
||||
|
||||
self.hideNotices();
|
||||
self.hideScreenOptions();
|
||||
};
|
||||
|
||||
var showElement = function ( element, state ) {
|
||||
if ( state ) {
|
||||
element.show();
|
||||
} else {
|
||||
element.hide();
|
||||
}
|
||||
};
|
||||
|
||||
self.moveToStep = function ( newStep ) {
|
||||
var beforeCurrentStepClass = 'wizard-active-step';
|
||||
self.steps.removeClass( beforeCurrentStepClass );
|
||||
self.steps.each( function ( index ) {
|
||||
if ( index === self.currentStepIndex ) {
|
||||
$( this ).removeClass( 'wizard-current-step' );
|
||||
}
|
||||
if ( index === newStep ) {
|
||||
self.currentStep = $( this ).addClass( 'wizard-current-step' ).data( 'step-slug' );
|
||||
beforeCurrentStepClass = '';
|
||||
}
|
||||
if ( beforeCurrentStepClass ) {
|
||||
$( this ).addClass( beforeCurrentStepClass );
|
||||
}
|
||||
} );
|
||||
|
||||
self.currentStepIndex = newStep;
|
||||
|
||||
self.setBackButtonState();
|
||||
self.setNextButtonState();
|
||||
|
||||
self.fetchContent();
|
||||
|
||||
};
|
||||
|
||||
|
||||
self.showSteps = function ( state ) {
|
||||
showElement( $( '.js-wizard-steps-container' ), state );
|
||||
};
|
||||
|
||||
self.moveToNextStep = function ( e ) {
|
||||
wizardImplementation.isOkToMoveToNextStep( self.currentStep, function () {
|
||||
self.moveToStep( self.currentStepIndex + 1 );
|
||||
} );
|
||||
};
|
||||
|
||||
self.moveToPreviousStep = function ( e ) {
|
||||
self.moveToStep( self.currentStepIndex - 1 );
|
||||
};
|
||||
|
||||
self.getCurrentStepIndex = function () {
|
||||
self.steps.each( function ( index ) {
|
||||
if ( self.currentStep === $( this ).data( 'step-slug' ) ) {
|
||||
self.currentStepIndex = index;
|
||||
}
|
||||
} );
|
||||
};
|
||||
|
||||
self.getCurrentStep = function () {
|
||||
return self.stepContent.data( 'current-step' );
|
||||
};
|
||||
|
||||
self.initializeButtons = function () {
|
||||
self.backButton.on( 'click', self.moveToPreviousStep );
|
||||
self.nextButton.on( 'click', self.moveToNextStep );
|
||||
|
||||
self.setBackButtonState();
|
||||
self.setNextButtonState();
|
||||
};
|
||||
|
||||
self.setBackButtonState = function () {
|
||||
self.backButton.prop( 'disabled', self.currentStepIndex === 0 );
|
||||
};
|
||||
|
||||
self.setNextButtonState = function () {
|
||||
self.enableNextButton( self.currentStepIndex !== self.steps.length - 1 );
|
||||
};
|
||||
|
||||
self.fetchContent = function ( data ) {
|
||||
if ( !data ) {
|
||||
data = {};
|
||||
}
|
||||
data = _.extend( data, {
|
||||
action: 'wpml_wizard_fetch_content',
|
||||
step_slug: self.currentStep,
|
||||
nonce: self.nonce
|
||||
} );
|
||||
$.ajax( {
|
||||
type: 'POST',
|
||||
url: ajaxurl,
|
||||
dataType: 'json',
|
||||
data: data,
|
||||
success: function ( response ) {
|
||||
$( '.js-wpml-wizard' ).show();
|
||||
if ( response.success ) {
|
||||
self.stepContent.html( response.data );
|
||||
wizardImplementation.notifyContentFetched( self.currentStep, self.stepContent );
|
||||
}
|
||||
}
|
||||
} );
|
||||
};
|
||||
|
||||
self.showBackButton = function ( state ) {
|
||||
showElement( self.backButton, state );
|
||||
};
|
||||
|
||||
self.showNextButton = function ( state ) {
|
||||
showElement( self.nextButton, state );
|
||||
};
|
||||
|
||||
self.setNextButtonText = function ( text ) {
|
||||
self.nextButton.html( text );
|
||||
};
|
||||
|
||||
self.enableNextButton = function ( state ) {
|
||||
self.nextButton.prop( 'disabled', ! state );
|
||||
};
|
||||
|
||||
self.setNextButtonPrimary = function ( state ) {
|
||||
if ( state ) {
|
||||
self.nextButton.addClass( 'button-primary' ).removeClass( 'button-secondary' );
|
||||
} else {
|
||||
self.nextButton.addClass( 'button-secondary' ).removeClass( 'button-primary' );
|
||||
}
|
||||
};
|
||||
|
||||
self.triggerNextStep = function () {
|
||||
self.nextButton.trigger( 'click' );
|
||||
};
|
||||
|
||||
self.storeData = function ( key, data ) {
|
||||
self.storage[ key ] = data;
|
||||
};
|
||||
|
||||
self.getData = function ( key, defaultValue ) {
|
||||
if ( self.storage[ key ] ) {
|
||||
return self.storage[ key ];
|
||||
} else {
|
||||
return defaultValue;
|
||||
}
|
||||
};
|
||||
|
||||
self.hideNotices = function () {
|
||||
$( '.otgs-notice, .icl_admin_message' ).hide();
|
||||
};
|
||||
|
||||
self.hideScreenOptions = function () {
|
||||
$( '#screen-meta-links' ).hide();
|
||||
};
|
||||
|
||||
init();
|
||||
|
||||
};
|
||||
|
||||
WPMLCore.wizardFrameworkFactory = {
|
||||
create: function ( $, wizardImplementation ) {
|
||||
"use strict";
|
||||
|
||||
return new WPMLCore.wizardFramework( $, wizardImplementation );
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user