1jQuery.fn.budgetMailerSubscribe = function(messages) { 2 function validate_email_element($e) { 3 if (!$e.hasClass('validate-email')) { 4 return true; 5 } 6 7 var email = $e.val(); 8 9 return email.indexOf('@') > 0 && email.indexOf('.') > 0; 10 } 11 12 function validate($form) { 13 var inputs = $form.find('.budgetmailer-input'); 14 var valid = true; 15 16 jQuery.each(inputs, function(i, e) { 17 var $e = jQuery(e); 18 19 if ($e.attr('required') && ( !$e.val() || !validate_email_element($e) ) ) { 20 valid = false; 21 element_add_message($e, messages.message_invalid); 22 } else { 23 element_remove_message($e); 24 } 25 }); 26 27 if (valid) { 28 form_remove_message(wpbm_form); 29 } 30 31 return valid; 32 } 33 34 function ajax($form) { 35 var data = { 36 action: "budgetmailer_subscribe" 37 }; 38 var inputs = $form.find(".budgetmailer-input"); 39 var re = $form.find('.g-recaptcha-response'); 40 var si = $form.find('input[name*="si_code"]'); 41 42 jQuery.each(inputs, function(i, e) { 43 var $e = jQuery(e); 44 45 if ($e.attr('data-name')) { 46 data[$e.attr('data-name')] = $e.val(); 47 } 48 }); 49 50 // add captcha plug-ins data if any 51 if (re.length) { data['captcha'] = re[0].value; } 52 if (si.length) { data[si[0].name] = si[0].value; } 53 54 wpbm_form.addClass('budgetmailer-progress'); 55 wpbm_form.find('.budgetmailer-button').attr('disabled', 'disabled'); 56 57 jQuery.ajax(ajaxurl, { 58 data: data, 59 method: "POST", 60 }) 61 .done( ajax_done ) 62 .fail( ajax_fail ); 63 } 64 65 function ajax_done( data, textStatus, jqXHR ) { 66 wpbm_form.removeClass('budgetmailer-progress'); 67 wpbm_form.find('.budgetmailer-button').removeAttr('disabled'); 68 69 if ( data === "0" ) { 70 form_add_message( wpbm_form, messages.message_error); 71 return; 72 } 73 74 var response = JSON.parse( data ); 75 76 if ("object" == typeof(response) && "undefined" != typeof(response.success) && response.success ) { 77 form_add_message( wpbm_form, messages.message_success, "budgetmailer-success"); 78 wpbm_form.slideUp(); 79 } else if ("undefined" != typeof(response.exception)) { 80 form_add_message( wpbm_form, messages.message_error); 81 } else if ( "undefined" != typeof(response.invalid)) { 82 //console.log('err2'); 83 84 jQuery.each(response.invalid, function(i, e) { 85 if ("captcha" == e) { 86 var $e = jQuery( wpbm_form.find('div.budgetmailer-captcha')[0] ); 87 } else { 88 var $e = jQuery(e); 89 } 90 91 element_add_message($e, messages.message_invalid); 92 }); 93 94 form_add_message(wpbm_form, messages.message_invalid_form); 95 } else { 96 form_add_message( wpbm_form, messages.message_error); 97 } 98 } 99 100 function ajax_fail( jqXHR, textStatus, errorThrown ) { 101 wpbm_form.removeClass('budgetmailer-progress'); 102 wpbm_form.find('.budgetmailer-button').removeAttr('disabled'); 103 104 //console.log('err5'); 105 form_add_message( wpbm_form, messages.message_error ); 106 } 107 108 function form_add_message($form, message, type) { 109 if ("undefined" == typeof(type)) { 110 type = "budgetmailer-invalid"; 111 } 112 113 if (!$form.prev().hasClass("budgetmailer-invalid")) { 114 $form.before('<span class="' + type + '">' + message + '</span>'); 115 } 116 } 117 118 function form_remove_message($form) { 119 var $prev = $form.prev(); 120 121 if ($prev.hasClass("budgetmailer-invalid")) { 122 $prev.remove(); 123 } 124 } 125 126 function element_add_message($e, message) { 127 $e.addClass("budgetmailer-required"); 128 129 if (!$e.next('span').length) { 130 $e.after('<span class="budgetmailer-invalid">' + message + '</span>'); 131 } 132 } 133 134 function element_remove_message($e) { 135 $e.removeClass("budgetmailer-required"); 136 $e.next('span').remove(); 137 } 138 139 this.on('submit', function(e) { 140 //console.log('sub'); 141 e.preventDefault(); 142 143 wpbm_form = jQuery(this);
144 var valid = validate(wpbm_form); 145 146 if (valid) { 147 form_remove_message(wpbm_form); 148 ajax(wpbm_form); 149 } else { 150 form_add_message(wpbm_form, messages.message_invalid_form); 151 } 152 }); 153 154 //console.log('init', this); 155} 156 157/* 158jQuery(document).ready(function() { 159 //console.log('bm', budgetmailer); 160 jQuery('form.budgetmailer-subscribe-form').budgetMailerSubscribe(); 161}); 162*/ 163 164function wpbm_init_recaptchas() { 165 jQuery('.g-recaptcha').each(function(i, e) { 166 grecaptcha.render(e.id, { 167 sitekey: wpbm_site_key, theme: wpbm_theme 168 }); 169 }); 170} 171 172var wpbm_form = null;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.