Initial commit
This commit is contained in:
131
includes/addon/js/gaddon_token.js
Normal file
131
includes/addon/js/gaddon_token.js
Normal file
@@ -0,0 +1,131 @@
|
||||
window.GFToken = null;
|
||||
|
||||
( function( $ ) {
|
||||
|
||||
GFToken = function( args ) {
|
||||
|
||||
for ( var prop in args ) {
|
||||
if ( args.hasOwnProperty( prop ) )
|
||||
this[prop] = args[prop];
|
||||
}
|
||||
|
||||
this.form = $( '#gform_' + this.formId );
|
||||
|
||||
this.init = function() {
|
||||
|
||||
var GFTokenObj = this;
|
||||
|
||||
this.tokens = {};
|
||||
|
||||
/* Initialize spinner. */
|
||||
if ( ! this.isAjax )
|
||||
gformInitSpinner( this.formId );
|
||||
|
||||
/* If multipage form, run on gform_page_loaded. */
|
||||
if ( this.hasPages ) {
|
||||
|
||||
$( document ).bind( 'gform_page_loaded', function( event, form_id, current_page ) {
|
||||
|
||||
if ( form_id != GFTokenObj.formId)
|
||||
return;
|
||||
|
||||
if ( current_page != GFTokenObj.pageCount)
|
||||
GFTokenObj.saveEntryData();
|
||||
|
||||
} );
|
||||
|
||||
}
|
||||
|
||||
this.form.submit( function() {
|
||||
GFTokenObj.onSubmit();
|
||||
} );
|
||||
|
||||
};
|
||||
|
||||
this.onSubmit = function() {
|
||||
|
||||
if ( this.form.data('gftokensubmitting') ) {
|
||||
return;
|
||||
} else {
|
||||
event.preventDefault();
|
||||
this.form.data( 'gftokensubmitting', true );
|
||||
}
|
||||
|
||||
this.saveEntryData();
|
||||
this.processTokens();
|
||||
|
||||
}
|
||||
|
||||
this.processTokens = function() {
|
||||
|
||||
/* Process feeds. */
|
||||
for ( var feed_id in this.feeds ) {
|
||||
|
||||
this.active_feed = this.feeds[feed_id];
|
||||
|
||||
/* Create new feed object so we can store the billing information. */
|
||||
var feed = {
|
||||
'billing_fields': {},
|
||||
'id': this.active_feed.id,
|
||||
'name': this.active_feed.name
|
||||
};
|
||||
|
||||
/* Add billing information to feed object. */
|
||||
for ( var billing_field in this.active_feed.billing_fields ) {
|
||||
|
||||
field_id = this.active_feed.billing_fields[ billing_field ];
|
||||
feed.billing_fields[ billing_field ] = this.entry_data[ field_id ];
|
||||
|
||||
}
|
||||
|
||||
/* Get credit card token response. */
|
||||
window[ this.callback ].createToken( feed, this );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.saveEntryData = function() {
|
||||
|
||||
var GFPaymentObj = this,
|
||||
input_prefix = 'input_' + this.formId + '_';
|
||||
|
||||
if ( ! this.entry_data )
|
||||
this.entry_data = {};
|
||||
|
||||
this.form.find( 'input[id^="' + input_prefix + '"], select[id^="' + input_prefix + '"], textarea[id^="' + input_prefix + '"]' ).each( function() {
|
||||
|
||||
var input_id = $( this ).attr( 'id' ).replace( input_prefix, '' ).replace( '_', '.' );
|
||||
|
||||
if ( $.inArray( input_id, GFPaymentObj.fields ) >= 0 )
|
||||
GFPaymentObj.entry_data[ input_id ] = $( this ).val();
|
||||
|
||||
} );
|
||||
|
||||
}
|
||||
|
||||
this.saveToken = function( token ) {
|
||||
|
||||
/* Add token response to tokens array. */
|
||||
this.tokens[ this.active_feed.id ] = {
|
||||
'feed_id': this.active_feed.id,
|
||||
'response': token
|
||||
};
|
||||
|
||||
if ( this.tokens.length == this.feeds.length ) {
|
||||
|
||||
/* Add tokens to form. */
|
||||
this.form.find( this.responseField ).val( $.toJSON( this.tokens ) );
|
||||
|
||||
/* Submit the form. */
|
||||
this.form.submit();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.init();
|
||||
|
||||
}
|
||||
|
||||
} )( jQuery );
|
||||
Reference in New Issue
Block a user