PluginProbe ʕ •ᴥ•ʔ
Brevo – Email, SMS, Web Push, Chat, and more. / trunk
Brevo – Email, SMS, Web Push, Chat, and more. vtrunk
2.9.13 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8 2.9.9 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.9 3.1.0 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.2 3.1.20 3.1.21 3.1.22 3.1.23 3.1.24 3.1.25 3.1.26 3.1.27 3.1.28 3.1.29 3.1.3 3.1.30 3.1.31 3.1.32 3.1.33 3.1.34 3.1.35 3.1.36 3.1.37 3.1.38 3.1.39 3.1.4 3.1.40 3.1.41 3.1.42 3.1.43 3.1.44 3.1.45 3.1.46 3.1.47 3.1.48 3.1.49 3.1.5 3.1.50 3.1.51 3.1.52 3.1.53 3.1.54 3.1.55 3.1.56 3.1.57 3.1.58 3.1.59 3.1.6 3.1.60 3.1.61 3.1.62 3.1.63 3.1.64 3.1.65 3.1.66 3.1.67 3.1.68 3.1.69 3.1.7 3.1.70 3.1.71 3.1.72 3.1.73 3.1.74 3.1.75 3.1.76 3.1.77 3.1.78 3.1.79 3.1.8 3.1.80 3.1.81 3.1.82 3.1.83 3.1.84 3.1.85 3.1.86 3.1.87 3.1.88 3.1.89 3.1.9 3.1.90 3.1.91 3.1.92 3.1.93 3.1.94 3.1.95 3.1.96 3.1.97 3.1.98 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 trunk 1.0 1.5 2.0.8 2.9.10 2.9.11 2.9.12
mailin / js / mailin-front.js
mailin / js Last commit date
bootstrap 4 years ago 07ce647460eedd481f6c.png 5 months ago 7121da981b3a8f7cc599.png 5 months ago 78b609c78c1dd3312c78.webp 5 months ago admin.js 11 months ago chosen.jquery.min.js 9 years ago index.php 11 years ago mailin-front.js 1 year ago post-editor.bundle.js 2 months ago push.bundle.js 2 months ago select2.full.min.js 1 year ago
mailin-front.js
325 lines
1 var captchaRes = '';
2 var sibErrMsg;
3 var gCaptchaSibWidget;
4 var ajax_sib_front_object;
5 var sibVerifyCallback = function (response) {
6 captchaRes = response;
7 var formIdInvisible = sessionStorage.getItem("formIdRecapcha");
8 if (captchaRes) {
9 var validationErr = 0;
10 jQuery.each(jQuery(formIdInvisible).find('input[required=required]'), function () {
11 if (jQuery(this).val().trim() == '' || (jQuery(this).attr('type') == "checkbox" && jQuery(this).prop("checked") == false)) {
12 validationErr++;
13 var form = jQuery(this).closest('form');
14 var requiredField = jQuery(this).closest('form').find('input[name="sib_form_alert_notice"]').val();
15 if (requiredField !== undefined) {
16 sibErrMsg.requiredField = requiredField;
17 }
18 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.requiredField + '</p>').show();
19 return;
20 }
21 });
22 }
23 if (validationErr == 0) {
24 jQuery(formIdInvisible).trigger('submit');
25 }
26 };
27
28 jQuery(document).ready(function(){
29 jQuery('.sib_signup_form').find('input[required=required]').on("invalid", function () {
30 if(jQuery(this).val().trim() == '')
31 {
32 var alert_msg = jQuery(this).closest('form').find('input[name="sib_form_alert_notice"]').val();
33 this.setCustomValidity(alert_msg);
34 }
35 else {
36 this.setCustomValidity('');
37 }
38 });
39 // run MA script identify() when submit on any forms with email field
40 jQuery(document).on('submit', 'form', function(e){
41 var invalidEmail = jQuery(this).closest('form').find('input[name="sib_form_invalid_email_notice"]').val();
42 var requiredField = jQuery(this).closest('form').find('input[name="sib_form_alert_notice"]').val();
43 if (invalidEmail !== undefined) {
44 sibErrMsg.invalidMail = invalidEmail;
45 }
46 if (requiredField !== undefined) {
47 sibErrMsg.requiredField = requiredField;
48 }
49
50 if(!jQuery(this).hasClass('sib_signup_form')) {
51 var email = jQuery(this).find('input[type=email]').val();
52 var emailPattern = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
53 if (typeof sendinblue != 'undefined' && email != null && emailPattern.test(email)) {
54 var postData = jQuery('input[type!=password]',this).serializeObject();
55 sendinblue.identify(email, postData);
56 }
57 }
58 else
59 {
60 e.preventDefault();
61 var form = jQuery(this).closest('form');
62 // for sms field
63 jQuery.each(form.find('.sib-sms'), function () {
64 var sms = jQuery(this).val();
65 var sms_prefix = jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val();
66 if ( sms == sms_prefix && !jQuery(this).prop('required')) {
67 jQuery(this).val('');
68 }
69 });
70
71 /**
72 * For safari
73 * Not support required attribute
74 */
75
76 var required_fileds = [];
77 var err_index = 0;
78
79 var multi_lists = form.find(jQuery('.sib-multi-lists'));
80 if( multi_lists != undefined && multi_lists.data('require') == 'required' )
81 {
82 if ( multi_lists.find('input:checked').length == 0 )
83 {
84 err_index++;
85 multi_lists.addClass('sib_error');
86 }
87 }
88 if(err_index > 0)
89 {
90 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.requiredField + '</p>').show();
91 return;
92 }
93 err_index=0;
94 jQuery.each(form.find('input[type="email"]'), function(){
95 var Email = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/i;
96 if (!Email.test(jQuery(this).val()))
97 {
98 err_index++;
99 }
100 });
101 if(err_index > 0)
102 {
103 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidMail + '</p>').show();
104 return;
105 }
106
107 // Check sms validation
108 err_index = 0;
109 jQuery.each(form.find('.sib-sms'), function () {
110 var sms = jQuery(this).val();
111 if ( is_valid_sms(sms) == false && sms != '' ) {
112 err_index ++;
113 }
114 });
115 if(err_index > 0)
116 {
117 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidSMSFormat + '</p>').show();
118 return;
119 }
120
121 jQuery(".sib-default-btn").attr("disabled", true);
122 form.find('.sib_loader').show();
123 jQuery('.sib_msg_disp').hide();
124 var postData = form.serializeArray();
125 if( captchaRes != '' )
126 {
127 postData.push({"name": "g-recaptcha-response", "value": captchaRes});
128 }
129 captchaRes = '';
130 if( jQuery('.sib-multi-lists').length )
131 {
132 var interesting_lists = [];
133 jQuery('.sib-interesting-lists').each(function () {
134 postData.push({"name":"interestingLists[]", "value": jQuery(this).val()})
135 });
136 }
137 var formURL = form.attr("action");
138 form.addClass('sib_processing');
139
140 postData.push({ "name": "security", "value": ajax_sib_front_object.ajax_nonce });
141 jQuery.ajax({
142 url: formURL,
143 type: "POST",
144 dataType: "json",
145 data: postData,
146 success: function (data, textStatus, jqXHR) {
147 jQuery(".sib-default-btn").attr("disabled", false);
148 jQuery('.sib_loader').hide();
149 if( jQuery('.sib-multi-lists').length )
150 {
151 jQuery('.sib-multi-lists').removeClass('sib_error');
152 }
153 if (data.status === 'success' || data.status === 'update') {
154 var cdata = '<p class="sib-alert-message sib-alert-message-success ">' + data.msg.successMsg + '</p>';
155 form.find('.sib_msg_disp').html(cdata).show();
156 } else if (data.status === 'failure') {
157 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.errorMsg + '</p>';
158 form.find('.sib_msg_disp').html(cdata).show();
159 } else if (data.status === 'already_exist') {
160 var cdata = '<p class="sib-alert-message sib-alert-message-warning ">' + data.msg.existMsg + '</p>';
161 form.find('.sib_msg_disp').html(cdata).show();
162 } else if (data.status === 'invalid') {
163 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.invalidMsg + '</p>';
164 form.find('.sib_msg_disp').html(cdata).show();
165 } else if (data.status === 'gcaptchaEmpty') {
166 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>';
167 form.find('.sib_msg_disp').html(cdata).show();
168 } else if (data.status === 'gcaptchaFail') {
169 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>';
170 form.find('.sib_msg_disp').html(cdata).show();
171 }
172 form[0].reset();
173 if (data.redirect && (data.status === 'success' || data.status === 'update')) {
174 window.location.href = data.redirect;
175 }
176
177 //Render the cloudflare captcha again
178 if (typeof data.turnstileCaptcha !== 'undefined' && data.turnstileCaptcha) {
179 jQuery.each(form.find('.cf-turnstile'), function () {
180 var siteKey = jQuery(this).data("sitekey");
181 var cfResponse = jQuery('input[name="cf-turnstile-response"]').val();
182 if (cfResponse) {
183 var idToBeRendered = "#cf-turnstile-"+siteKey;
184 turnstile.render(idToBeRendered, {
185 sitekey: siteKey,
186 callback: function(token) {
187 console.log("Challenge Success");
188 },
189 });
190 }
191 });
192 }
193 var previous_code = form.find('.sib-cflags').data('dial-code');
194 if ( previous_code )
195 {
196 form.find('.sib-sms').val('+' + previous_code);
197 form.find('input[name="sib_SMS_prefix"]').val('+' + previous_code);
198 }
199
200 // run MA script identify() when subscribe on SIB forms
201 if (typeof sendinblue != 'undefined') {
202 var email = form.find('input[name=email]').val();
203 var postData = form.serializeObject();
204 if (data.status === 'success' || data.status === 'update' || data.status === 'already_exist') {
205 sendinblue.identify(email, postData);
206 }
207 }
208 jQuery(".sib-alert-message").delay(5000).hide('slow');
209 form.removeClass('sib_processing');
210 if (typeof grecaptcha != 'undefined')
211 {
212 grecaptcha.reset(gCaptchaSibWidget);
213 }
214 },
215 error: function (jqXHR, textStatus, errorThrown) {
216 form.find('.sib_msg_disp').html(jqXHR).show();
217 jQuery(".sib-default-btn").attr("disabled", false);
218 if (typeof grecaptcha != 'undefined')
219 {
220 grecaptcha.reset(gCaptchaSibWidget);
221 }
222 }
223 });
224 }
225 });
226 jQuery('.sib-country-block').on('click', function () {
227 jQuery('.sib-country-list').toggle();
228 });
229 if (jQuery('.sib-country-list').length > 0)
230 {
231 jQuery('.sib-country-list').ready( function () {
232 var data = {
233 action : 'sib_get_country_prefix',
234 security: ajax_sib_front_object.ajax_nonce,
235 };
236 jQuery.post( ajax_sib_front_object.ajax_url, data, function (respond) {
237 jQuery('.sib-country-list').html(respond);
238 });
239 });
240 }
241
242 jQuery('body').on('click', function(e){
243 if ( jQuery('.sib-sms-field .sib-country-list').length > 0 && !jQuery('.sib-sms-field .sib-country-list').is(e.target) && jQuery('.sib-sms-field .sib-country-list').has(e.target).length === 0 && jQuery('.sib-sms-field .sib-country-block').has(e.target).length === 0 ) {
244 jQuery('.sib-sms-field .sib-country-list').hide();
245 }
246 });
247
248 jQuery('.sib-country-list').on( 'click', 'li' , function () {
249 var country_code = jQuery(this).data('country-code').toLowerCase();
250 var dial_code = jQuery(this).data('dial-code');
251 jQuery(this).closest('.sib-sms-field').find('.sib-sms').val('+' + dial_code );
252 jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val('+' + dial_code );
253 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').css('background-image', 'url(' + ajax_sib_front_object.flag_url + country_code + '.png)');
254 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').data('dial-code', dial_code);
255 jQuery(this).closest('.sib-country-list').hide();
256 });
257 jQuery(".sib-sms").on('keypress', function (event){
258 validateInteger(event, 'sms');
259 });
260
261 // allow to input 0-9 and - only for date field
262 jQuery(".sib-date").on('keypress', function(event) {
263 validateInteger(event, 'date');
264 });
265 function is_valid_sms( sms ) {
266 sms = sms.replace(/\b(0(?!\b))+/g, "");
267
268 var tempSms = sms.replace(/( |\(|\)|\.|\-)/g, '');
269
270 if (tempSms.length > 19 || tempSms.length < 6 || tempSms.charAt(0) != '+'){
271 return false;
272 }
273 return true;
274 }
275 function validateInteger(evt,type) {
276 var theEvent = evt || window.event;
277 var key = theEvent.charCode || theEvent.which;
278
279 key = String.fromCharCode( key );
280 // 0-9, +/-, space, brackets
281 var regex = /[ +0-9()-]/;
282 var smsLength = 0;
283 if( type == 'date' ) {
284 regex = /[ 0-9-/]/;
285 }
286 if( !regex.test(key)) {
287 theEvent.returnValue = false;
288 key = theEvent.keyCode;
289 // ignore input for del,tab, back, left, right, home amd end
290 if(theEvent.preventDefault && key != 9 && key != 8 ) theEvent.preventDefault();
291 }
292 }
293
294
295 });
296 // get serialized data form subscribe form
297 jQuery.fn.serializeObject = function()
298 {
299 var o = {};
300 var a = this.serializeArray();
301 jQuery.each(a, function() {
302 if(this.name == 'sib_form_action' || this.name == 'sib_form_id' || this.name == 'email')
303 return true; // continue
304 if (o[this.name] !== undefined) {
305 if (!o[this.name].push) {
306 o[this.name] = [o[this.name]];
307 }
308 o[this.name].push(this.value || '');
309 } else {
310 o[this.name] = this.value || '';
311 }
312 });
313 return o;
314 };
315 // get form id
316 jQuery(document).ready(function () {
317 jQuery(".sib-default-btn").on("click", function () {
318 var row = jQuery(this).closest(".sib_signup_form");
319 sessionStorage.setItem("formIdRecapcha", "#" + jQuery(row).attr('id'));
320 })
321 })
322
323 function errorCallbackForTurnstileErrors(){
324 }
325