PluginProbe ʕ •ᴥ•ʔ
Brevo – Email, SMS, Web Push, Chat, and more. / 3.1.78
Brevo – Email, SMS, Web Push, Chat, and more. v3.1.78
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 admin.js 2 years ago chosen.jquery.min.js 9 years ago index.php 11 years ago mailin-front.js 2 years ago
mailin-front.js
321 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 form.find('.sib_loader').show();
121 jQuery('.sib_msg_disp').hide();
122 var postData = form.serializeArray();
123 if( captchaRes != '' )
124 {
125 postData.push({"name": "g-recaptcha-response", "value": captchaRes});
126 }
127 captchaRes = '';
128 if( jQuery('.sib-multi-lists').length )
129 {
130 var interesting_lists = [];
131 jQuery('.sib-interesting-lists').each(function () {
132 postData.push({"name":"interestingLists[]", "value": jQuery(this).val()})
133 });
134 }
135 var formURL = form.attr("action");
136 form.addClass('sib_processing');
137
138 postData.push({ "name": "security", "value": ajax_sib_front_object.ajax_nonce });
139 jQuery.ajax({
140 url: formURL,
141 type: "POST",
142 dataType: "json",
143 data: postData,
144 success: function (data, textStatus, jqXHR) {
145 jQuery('.sib_loader').hide();
146 if( jQuery('.sib-multi-lists').length )
147 {
148 jQuery('.sib-multi-lists').removeClass('sib_error');
149 }
150 if (data.status === 'success' || data.status === 'update') {
151 var cdata = '<p class="sib-alert-message sib-alert-message-success ">' + data.msg.successMsg + '</p>';
152 form.find('.sib_msg_disp').html(cdata).show();
153 } else if (data.status === 'failure') {
154 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.errorMsg + '</p>';
155 form.find('.sib_msg_disp').html(cdata).show();
156 } else if (data.status === 'already_exist') {
157 var cdata = '<p class="sib-alert-message sib-alert-message-warning ">' + data.msg.existMsg + '</p>';
158 form.find('.sib_msg_disp').html(cdata).show();
159 } else if (data.status === 'invalid') {
160 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.invalidMsg + '</p>';
161 form.find('.sib_msg_disp').html(cdata).show();
162 } else if (data.status === 'gcaptchaEmpty') {
163 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>';
164 form.find('.sib_msg_disp').html(cdata).show();
165 } else if (data.status === 'gcaptchaFail') {
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 }
169 form[0].reset();
170 if (data.redirect && (data.status === 'success' || data.status === 'update')) {
171 window.location.href = data.redirect;
172 }
173
174 //Render the cloudflare captcha again
175 if (typeof data.turnstileCaptcha !== 'undefined' && data.turnstileCaptcha) {
176 jQuery.each(form.find('.cf-turnstile'), function () {
177 var siteKey = jQuery(this).data("sitekey");
178 var cfResponse = jQuery('input[name="cf-turnstile-response"]').val();
179 if (cfResponse) {
180 var idToBeRendered = "#cf-turnstile-"+siteKey;
181 turnstile.render(idToBeRendered, {
182 sitekey: siteKey,
183 callback: function(token) {
184 console.log("Challenge Success");
185 },
186 });
187 }
188 });
189 }
190 var previous_code = form.find('.sib-cflags').data('dial-code');
191 if ( previous_code )
192 {
193 form.find('.sib-sms').val('+' + previous_code);
194 form.find('input[name="sib_SMS_prefix"]').val('+' + previous_code);
195 }
196
197 // run MA script identify() when subscribe on SIB forms
198 if (typeof sendinblue != 'undefined') {
199 var email = form.find('input[name=email]').val();
200 var postData = form.serializeObject();
201 if (data.status === 'success' || data.status === 'update' || data.status === 'already_exist') {
202 sendinblue.identify(email, postData);
203 }
204 }
205 jQuery(".sib-alert-message").delay(2000).hide('slow');
206 form.removeClass('sib_processing');
207 if (typeof grecaptcha != 'undefined')
208 {
209 grecaptcha.reset(gCaptchaSibWidget);
210 }
211 },
212 error: function (jqXHR, textStatus, errorThrown) {
213 form.find('.sib_msg_disp').html(jqXHR).show();
214 if (typeof grecaptcha != 'undefined')
215 {
216 grecaptcha.reset(gCaptchaSibWidget);
217 }
218 }
219 });
220 }
221 });
222 jQuery('.sib-country-block').on('click', function () {
223 jQuery('.sib-country-list').toggle();
224 });
225 if (jQuery('.sib-country-list').length > 0)
226 {
227 jQuery('.sib-country-list').ready( function () {
228 var data = {
229 action : 'sib_get_country_prefix',
230 security: ajax_sib_front_object.ajax_nonce,
231 };
232 jQuery.post( ajax_sib_front_object.ajax_url, data, function (respond) {
233 jQuery('.sib-country-list').html(respond);
234 });
235 });
236 }
237
238 jQuery('body').on('click', function(e){
239 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 ) {
240 jQuery('.sib-sms-field .sib-country-list').hide();
241 }
242 });
243
244 jQuery('.sib-country-list').on( 'click', 'li' , function () {
245 var country_code = jQuery(this).data('country-code').toLowerCase();
246 var dial_code = jQuery(this).data('dial-code');
247 jQuery(this).closest('.sib-sms-field').find('.sib-sms').val('+' + dial_code );
248 jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val('+' + dial_code );
249 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').css('background-image', 'url(' + ajax_sib_front_object.flag_url + country_code + '.png)');
250 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').data('dial-code', dial_code);
251 jQuery(this).closest('.sib-country-list').hide();
252 });
253 jQuery(".sib-sms").on('keypress', function (event){
254 validateInteger(event, 'sms');
255 });
256
257 // allow to input 0-9 and - only for date field
258 jQuery(".sib-date").on('keypress', function(event) {
259 validateInteger(event, 'date');
260 });
261 function is_valid_sms( sms ) {
262 sms = sms.replace(/\b(0(?!\b))+/g, "");
263
264 var tempSms = sms.replace(/( |\(|\)|\.|\-)/g, '');
265
266 if (tempSms.length > 19 || tempSms.length < 6 || tempSms.charAt(0) != '+'){
267 return false;
268 }
269 return true;
270 }
271 function validateInteger(evt,type) {
272 var theEvent = evt || window.event;
273 var key = theEvent.charCode || theEvent.which;
274
275 key = String.fromCharCode( key );
276 // 0-9, +/-, space, brackets
277 var regex = /[ +0-9()-]/;
278 var smsLength = 0;
279 if( type == 'date' ) {
280 regex = /[ 0-9-/]/;
281 }
282 if( !regex.test(key)) {
283 theEvent.returnValue = false;
284 key = theEvent.keyCode;
285 // ignore input for del,tab, back, left, right, home amd end
286 if(theEvent.preventDefault && key != 9 && key != 8 ) theEvent.preventDefault();
287 }
288 }
289
290
291 });
292 // get serialized data form subscribe form
293 jQuery.fn.serializeObject = function()
294 {
295 var o = {};
296 var a = this.serializeArray();
297 jQuery.each(a, function() {
298 if(this.name == 'sib_form_action' || this.name == 'sib_form_id' || this.name == 'email')
299 return true; // continue
300 if (o[this.name] !== undefined) {
301 if (!o[this.name].push) {
302 o[this.name] = [o[this.name]];
303 }
304 o[this.name].push(this.value || '');
305 } else {
306 o[this.name] = this.value || '';
307 }
308 });
309 return o;
310 };
311 // get form id
312 jQuery(document).ready(function () {
313 jQuery(".sib-default-btn").on("click", function () {
314 var row = jQuery(this).closest(".sib_signup_form");
315 sessionStorage.setItem("formIdRecapcha", "#" + jQuery(row).attr('id'));
316 })
317 })
318
319 function errorCallbackForTurnstileErrors(){
320 }
321