| @@ -1,22 +1,32 @@ | ||
| 1 | +function wpbc_user_data_saver__read_attr_or_data( $el, attr_name, data_name ) { | |
| 2 | + var attr_value = $el.attr( attr_name ); | |
| 3 | + | |
| 4 | + if ( attr_value !== undefined ) { | |
| 5 | + return attr_value; | |
| 6 | + } | |
| 7 | + | |
| 8 | + return $el.data( data_name ); | |
| 9 | +} | |
| 10 | + | |
| 1 | 11 | function wpbc_save_custom_user_data_from_element(el) { |
| 2 | 12 | |
| 3 | 13 | if ( typeof WPBC_UserDataSaver === 'undefined' ) { |
| 4 | 14 | console.error( 'WPBC | Global AJAX object is missing.' ); |
| 5 | - return; | |
| 15 | + return false; | |
| 6 | 16 | } |
| 7 | 17 | |
| 8 | 18 | const $el = jQuery( el ); |
| 9 | 19 | |
| 10 | - const user_id = $el.data( 'wpbc-u-save-user-id' ); | |
| 11 | - const nonce = $el.data( 'wpbc-u-save-nonce' ); | |
| 12 | - const nonce_action = $el.data( 'wpbc-u-save-action' ); | |
| 13 | - const data_name = $el.data( 'wpbc-u-save-name' ); | |
| 14 | - const fields_raw = $el.data( 'wpbc-u-save-fields' ) || ''; | |
| 15 | - const inline_value = $el.data( 'wpbc-u-save-value' ); | |
| 16 | - const json = $el.data( 'wpbc-u-save-value-json' ); | |
| 20 | + const user_id = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-user-id', 'wpbc-u-save-user-id' ); | |
| 21 | + const nonce = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-nonce', 'wpbc-u-save-nonce' ); | |
| 22 | + const nonce_action = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-action', 'wpbc-u-save-action' ); | |
| 23 | + const data_name = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-name', 'wpbc-u-save-name' ); | |
| 24 | + const fields_raw = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-fields', 'wpbc-u-save-fields' ) || ''; | |
| 25 | + const inline_value = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-value', 'wpbc-u-save-value' ); | |
| 26 | + const json = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-value-json', 'wpbc-u-save-value-json' ); | |
| 17 | 27 | |
| 18 | - const callbackFnName = $el.data( 'wpbc-u-save-callback' ); | |
| 28 | + const callbackFnName = wpbc_user_data_saver__read_attr_or_data( $el, 'data-wpbc-u-save-callback', 'wpbc-u-save-callback' ); | |
| 19 | 29 | const callbackFn = typeof window[callbackFnName] === 'function' ? window[callbackFnName] : null; |
| 20 | 30 | if ( callbackFnName && !callbackFn ) { |
| 21 | 31 | console.warn( 'WPBC | Callback not found:', callbackFnName ); |
| 22 | 32 | } |
| @@ -22,9 +32,9 @@ | ||
| 22 | 32 | } |
| 23 | 33 | |
| 24 | 34 | if ( !user_id || !nonce || !nonce_action || !data_name ) { |
| 25 | 35 | console.error( 'WPBC | Missing required data attributes.' ); |
| 26 | - return; | |
| 36 | + return false; | |
| 27 | 37 | } |
| 28 | 38 | |
| 29 | 39 | let serialized = ''; |
| 30 | 40 | |
| @@ -32,9 +42,9 @@ | ||
| 32 | 42 | try { |
| 33 | 43 | serialized = jQuery.param( JSON.parse( json ) ); |
| 34 | 44 | } catch ( e ) { |
| 35 | 45 | console.error( 'WPBC | Invalid JSON in data-wpbc-u-save-value-json' ); |
| 36 | - return; | |
| 46 | + return false; | |
| 37 | 47 | } |
| 38 | 48 | } else if ( inline_value !== undefined ) { |
| 39 | 49 | // Save simple direct value as single param. |
| 40 | 50 | serialized = jQuery.param( { value: inline_value } ); |
| @@ -56,14 +66,14 @@ | ||
| 56 | 66 | |
| 57 | 67 | serialized = jQuery.param( data ); |
| 58 | 68 | } else { |
| 59 | 69 | console.error( 'WPBC | Missing data-wpbc-u-save-fields or data-wpbc-u-save-value.' ); |
| 60 | - return; | |
| 70 | + return false; | |
| 61 | 71 | } |
| 62 | 72 | |
| 63 | 73 | jQuery( document ).trigger( 'wpbc:userdata:beforeSave', [ $el, serialized ] ); |
| 64 | 74 | |
| 65 | - jQuery.ajax( { | |
| 75 | + return jQuery.ajax( { | |
| 66 | 76 | url : WPBC_UserDataSaver.ajax_url, |
| 67 | 77 | type : 'POST', |
| 68 | 78 | data : { |
| 69 | 79 | action : WPBC_UserDataSaver.action, |
| @@ -126,5 +136,5 @@ | ||
| 126 | 136 | // // jQuery('[data-wpbc-u-save-name]').prop('disabled', false); |
| 127 | 137 | // } ); |
| 128 | 138 | |
| 129 | 139 | // To remove it: |
| 130 | -// jQuery(document).off('wpbc:userdata:afterSave.customLogger'); | |
| 140 | +// jQuery(document).off('wpbc:userdata:afterSave.customLogger'); | |