laipower/wp-content/plugins/easy-digital-downloads/assets/js/admin/customers/index.js

141 lines
4.4 KiB
JavaScript

/**
* Customer management screen JS
*/
var EDD_Customer = {
vars: {
customer_card_wrap_editable: $( '#edit-customer-info .editable' ),
customer_card_wrap_edit_item: $( '#edit-customer-info .edit-item' ),
user_id: $( 'input[name="customerinfo[user_id]"]' ),
},
init: function() {
this.edit_customer();
this.add_email();
this.user_search();
this.remove_user();
this.cancel_edit();
this.change_country();
this.delete_checked();
},
edit_customer: function() {
$( document.body ).on( 'click', '#edit-customer', function( e ) {
e.preventDefault();
EDD_Customer.vars.customer_card_wrap_editable.hide();
EDD_Customer.vars.customer_card_wrap_edit_item.show().css( 'display', 'block' );
} );
},
add_email: function() {
$( document.body ).on( 'click', '#add-customer-email', function( e ) {
e.preventDefault();
const button = $( this ),
wrapper = button.parent().parent().parent().parent(),
customer_id = wrapper.find( 'input[name="customer-id"]' ).val(),
email = wrapper.find( 'input[name="additional-email"]' ).val(),
primary = wrapper.find( 'input[name="make-additional-primary"]' ).is( ':checked' ),
nonce = wrapper.find( 'input[name="add_email_nonce"]' ).val(),
postData = {
edd_action: 'customer-add-email',
customer_id: customer_id,
email: email,
primary: primary,
_wpnonce: nonce,
};
wrapper.parent().find( '.notice-container' ).remove();
wrapper.find( '.spinner' ).css( 'visibility', 'visible' );
button.attr( 'disabled', true );
$.post( ajaxurl, postData, function( response ) {
setTimeout( function() {
if ( true === response.success ) {
window.location.href = response.redirect;
} else {
button.attr( 'disabled', false );
wrapper.before( '<div class="notice-container"><div class="notice notice-error inline"><p>' + response.message + '</p></div></div>' );
wrapper.find( '.spinner' ).css( 'visibility', 'hidden' );
}
}, 342 );
}, 'json' );
} );
},
user_search: function() {
// Upon selecting a user from the dropdown, we need to update the User ID
$( document.body ).on( 'click.eddSelectUser', '.edd_user_search_results a', function( e ) {
e.preventDefault();
const user_id = $( this ).data( 'userid' );
EDD_Customer.vars.user_id.val( user_id );
} );
},
remove_user: function() {
$( document.body ).on( 'click', '#disconnect-customer', function( e ) {
e.preventDefault();
if ( confirm( edd_vars.disconnect_customer ) ) {
const customer_id = $( 'input[name="customerinfo[id]"]' ).val(),
postData = {
edd_action: 'disconnect-userid',
customer_id: customer_id,
_wpnonce: $( '#edit-customer-info #_wpnonce' ).val(),
};
$.post( ajaxurl, postData, function( response ) {
// Weird
window.location.href = window.location.href;
}, 'json' );
}
} );
},
cancel_edit: function() {
$( document.body ).on( 'click', '#edd-edit-customer-cancel', function( e ) {
e.preventDefault();
EDD_Customer.vars.customer_card_wrap_edit_item.hide();
EDD_Customer.vars.customer_card_wrap_editable.show();
$( '.edd_user_search_results' ).html( '' );
} );
},
change_country: function() {
$( 'select[name="customerinfo[country]"]' ).change( function() {
const select = $( this ),
state_input = $( ':input[name="customerinfo[region]"]' ),
data = {
action: 'edd_get_shop_states',
country: select.val(),
nonce: select.data( 'nonce' ),
field_name: 'customerinfo[region]',
};
$.post( ajaxurl, data, function( response ) {
console.log( response );
if ( 'nostates' === response ) {
state_input.replaceWith( '<input type="text" name="' + data.field_name + '" value="" class="edd-edit-toggles medium-text"/>' );
} else {
state_input.replaceWith( response );
}
} );
return false;
} );
},
delete_checked: function() {
$( '#edd-customer-delete-confirm' ).change( function() {
const records_input = $( '#edd-customer-delete-records' );
const submit_button = $( '#edd-delete-customer' );
if ( $( this ).prop( 'checked' ) ) {
records_input.attr( 'disabled', false );
submit_button.attr( 'disabled', false );
} else {
records_input.attr( 'disabled', true );
records_input.prop( 'checked', false );
submit_button.attr( 'disabled', true );
}
} );
},
};
jQuery( document ).ready( function( $ ) {
EDD_Customer.init();
} );