PluginProbe ʕ •ᴥ•ʔ
Brevo – Email, SMS, Web Push, Chat, and more. / 2.9.15
Brevo – Email, SMS, Web Push, Chat, and more. v2.9.15
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 6 years ago admin.js 6 years ago chosen.jquery.min.js 9 years ago index.php 11 years ago mailin-front.js 6 years ago
mailin-front.js
317 lines
1 var captchaRes = '';
2 var sibVerifyCallback = function(response){
3  captchaRes = response;
4    if(captchaRes)
5    {
6       var validationErr = 0;
7       jQuery.each(jQuery('.sib_signup_form').find('input[required=required]'), function(){
8       if(jQuery(this).val().trim() == '')
9       {
10         validationErr++;
11         var form = jQuery(this).closest('form');
12         form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.requiredField + '</p>').show();
13         return;                
14       }
15       });
16    }
17    if(validationErr == 0) {
18        jQuery('.sib_signup_form').trigger('submit');
19    }
20 };
21
22 jQuery(document).ready(function(){
23 jQuery('.sib_signup_form').find('input[required=required]').on("invalid", function () {
24 if(jQuery(this).val().trim() == '')
25 {
26 var alert_msg = jQuery(this).closest('form').find('input[name="sib_form_alert_notice"]').val();
27 this.setCustomValidity(alert_msg);
28 }
29 else {
30 this.setCustomValidity('');
31 }
32 });
33 // run MA script identify() when submit on any forms with email field
34 jQuery(document).on('submit', 'form', function(e){
35 if(!jQuery(this).hasClass('sib_signup_form')) {
36 var email = jQuery(this).find('input[type=email]').val();
37 var emailPattern = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
38 if (typeof sendinblue != 'undefined' && email != null && emailPattern.test(email)) {
39 var postData = jQuery(this).serializeObject();
40 sendinblue.identify(email, postData);
41 }
42 }
43 else
44 {
45 e.preventDefault();
46 var form = jQuery(this).closest('form');
47 // for sms field
48 jQuery.each(form.find('.sib-sms'), function () {
49 var sms = jQuery(this).val();
50 var sms_prefix = jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val();
51 if ( sms == sms_prefix && !jQuery(this).prop('required')) {
52 jQuery(this).val('');
53 }
54 });
55
56 /**
57 * For safari
58 * Not support required attribute
59 */
60
61 var required_fileds = [];
62 var err_index = 0;
63
64 var multi_lists = form.find(jQuery('.sib-multi-lists'));
65 if( multi_lists != undefined && multi_lists.data('require') == 'required' )
66 {
67 if ( multi_lists.find('input:checked').length == 0 )
68 {
69 err_index++;
70 multi_lists.addClass('sib_error');
71 }
72 }
73 if(err_index > 0)
74 {
75 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.requiredField + '</p>').show();
76 return;
77 }
78 err_index=0;
79 jQuery.each(form.find('input[type="email"]'), function(){
80 var Email = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/i;
81 if (!Email.test(jQuery(this).val()))
82 {
83 err_index++;
84 }
85 });
86 if(err_index > 0)
87 {
88 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidMail + '</p>').show();
89 return;
90 }
91
92 /**
93 * Check dateformat
94 */
95 err_index = 0;
96 jQuery.each(form.find('.sib-date') , function(){
97 var dateFormat = jQuery(this).data('format');
98 var date = jQuery(this).val();
99 var filter = '';
100 if(dateFormat == 'dd/mm/yyyy')
101 {
102 filter = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
103 }
104 else if(dateFormat == 'mm/dd/yyyy')
105 {
106 filter = /^(((0[13578]|1[02])\/(0[1-9]|[12]\d|3[01])\/((19|[2-9]\d)\d{2}))|((0[13456789]|1[012])\/(0[1-9]|[12]\d|30)\/((19|[2-9]\d)\d{2}))|(02\/(0[1-9]|1\d|2[0-8])\/((19|[2-9]\d)\d{2}))|(02\/29\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
107 }
108
109 if(dateFormat == 'dd-mm-yyyy')
110 {
111 filter = /^(((0[1-9]|[12]\d|3[01])-(0[13578]|1[02])-((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)-(0[13456789]|1[012])-((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])-02-((19|[2-9]\d)\d{2}))|(29-02-((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
112 }
113 else if(dateFormat == 'mm-dd-yyyy')
114 {
115 filter = /^(((0[13578]|1[02])-(0[1-9]|[12]\d|3[01])-((19|[2-9]\d)\d{2}))|((0[13456789]|1[012])-(0[1-9]|[12]\d|30)-((19|[2-9]\d)\d{2}))|(02-(0[1-9]|1\d|2[0-8])-((19|[2-9]\d)\d{2}))|(02-29-((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
116 }
117
118 if (filter == '' || !filter.test(date))
119 {
120 err_index++;
121 }
122 });
123
124 if(err_index > 0)
125 {
126 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidDateFormat + '</p>').show();
127 return;
128 }
129
130 // Check sms validation
131 err_index = 0;
132 jQuery.each(form.find('.sib-sms'), function () {
133 var sms = jQuery(this).val();
134 if ( is_valid_sms(sms) == false && sms != '' ) {
135 err_index ++;
136 }
137 });
138 if(err_index > 0)
139 {
140 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidSMSFormat + '</p>').show();
141 return;
142 }
143 form.find('.sib_loader').show();
144 jQuery('.sib_msg_disp').hide();
145 var postData = form.serializeArray();
146 if( captchaRes != '' )
147 {
148 postData.push({"name": "g-recaptcha-response", "value": captchaRes});
149 }
150
151 if( jQuery('.sib-multi-lists').length )
152 {
153 var interesting_lists = [];
154 jQuery('.sib-interesting-lists').each(function () {
155 postData.push({"name":"interestingLists[]", "value": jQuery(this).val()})
156 });
157 }
158 var formURL = form.attr("action");
159 form.addClass('sib_processing');
160
161 postData.push({ "name": "security", "value": ajax_sib_front_object.ajax_nonce });
162 jQuery.ajax({
163 url: formURL,
164 type: "POST",
165 dataType: "json",
166 data: postData,
167 success: function (data, textStatus, jqXHR) {
168 jQuery('.sib_loader').hide();
169 if( jQuery('.sib-multi-lists').length )
170 {
171 jQuery('.sib-multi-lists').removeClass('sib_error');
172 }
173 if (data.status === 'success' || data.status === 'update') {
174 var cdata = '<p class="sib-alert-message sib-alert-message-success ">' + data.msg.successMsg + '</p>';
175 form.find('.sib_msg_disp').html(cdata).show();
176 } else if (data.status === 'failure') {
177 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.errorMsg + '</p>';
178 form.find('.sib_msg_disp').html(cdata).show();
179 } else if (data.status === 'already_exist') {
180 var cdata = '<p class="sib-alert-message sib-alert-message-warning ">' + data.msg.existMsg + '</p>';
181 form.find('.sib_msg_disp').html(cdata).show();
182 } else if (data.status === 'invalid') {
183 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.invalidMsg + '</p>';
184 form.find('.sib_msg_disp').html(cdata).show();
185 } else if (data.status === 'gcaptchaEmpty') {
186 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>';
187 form.find('.sib_msg_disp').html(cdata).show();
188 } else if (data.status === 'gcaptchaFail') {
189 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>';
190 form.find('.sib_msg_disp').html(cdata).show();
191 }
192 form[0].reset();
193 if (data.redirect && (data.status === 'success' || data.status === 'update')) {
194 window.location.href = data.redirect;
195 }
196 var previous_code = form.find('.sib-cflags').data('dial-code');
197 if ( previous_code )
198 {
199 form.find('.sib-sms').val('+' + previous_code);
200 form.find('input[name="sib_SMS_prefix"]').val('+' + previous_code);
201 }
202
203 // run MA script identify() when subscribe on SIB forms
204 if (typeof sendinblue != 'undefined') {
205 var email = form.find('input[name=email]').val();
206 var postData = form.serializeObject();
207 if (data.status === 'success' || data.status === 'update' || data.status === 'already_exist') {
208 sendinblue.identify(email, postData);
209 }
210 }
211 jQuery(".sib-alert-message").delay(2000).hide('slow');
212 form.removeClass('sib_processing');
213 if (typeof grecaptcha != 'undefined')
214 {
215 grecaptcha.reset(gCaptchaSibWidget);
216 }
217 },
218 error: function (jqXHR, textStatus, errorThrown) {
219 form.find('.sib_msg_disp').html(jqXHR).show();
220 if (typeof grecaptcha != 'undefined')
221 {
222 grecaptcha.reset(gCaptchaSibWidget);
223 }
224 }
225 });
226 }
227 });
228 jQuery('.sib-country-block').on('click', function () {
229 jQuery('.sib-country-list').toggle();
230 });
231 if (jQuery('.sib-country-list').length > 0)
232 {
233 jQuery('.sib-country-list').ready( function () {
234 var data = {
235 action : 'sib_get_country_prefix',
236 security: ajax_sib_front_object.ajax_nonce,
237 };
238 jQuery.post( ajax_sib_front_object.ajax_url, data, function (respond) {
239 jQuery('.sib-country-list').html(respond);
240 });
241 });
242 }
243
244 jQuery('body').on('click', function(e){
245 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 ) {
246 jQuery('.sib-sms-field .sib-country-list').hide();
247 }
248 });
249
250 jQuery('.sib-country-list').on( 'click', 'li' , function () {
251 var country_code = jQuery(this).data('country-code').toLowerCase();
252 var dial_code = jQuery(this).data('dial-code');
253 jQuery(this).closest('.sib-sms-field').find('.sib-sms').val('+' + dial_code );
254 jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val('+' + dial_code );
255 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').css('background-image', 'url(' + ajax_sib_front_object.flag_url + country_code + '.png)');
256 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').data('dial-code', dial_code);
257 jQuery(this).closest('.sib-country-list').hide();
258 });
259 jQuery(".sib-sms").on('keypress', function (event){
260 validateInteger(event, 'sms');
261 });
262
263 // allow to input 0-9 and - only for date field
264 jQuery(".sib-date").on('keypress', function(event) {
265 validateInteger(event, 'date');
266 });
267 function is_valid_sms( sms ) {
268 sms = sms.replace(/\b(0(?!\b))+/g, "");
269
270 var tempSms = sms.replace(/( |\(|\)|\.|\-)/g, '');
271
272 if (tempSms.length > 19 || tempSms.length < 6 || tempSms.charAt(0) != '+'){
273 return false;
274 }
275 return true;
276 }
277 function validateInteger(evt,type) {
278 var theEvent = evt || window.event;
279 var key = theEvent.charCode || theEvent.which;
280
281 key = String.fromCharCode( key );
282 // 0-9, +/-, space, brackets
283 var regex = /[ +0-9()-]/;
284 var smsLength = 0;
285 if( type == 'date' ) {
286 regex = /[ 0-9-/]/;
287 }
288 if( !regex.test(key)) {
289 theEvent.returnValue = false;
290 key = theEvent.keyCode;
291 // ignore input for del,tab, back, left, right, home amd end
292 if(theEvent.preventDefault && key != 9 && key != 8 ) theEvent.preventDefault();
293 }
294 }
295
296
297 });
298 // get serialized data form subscribe form
299 jQuery.fn.serializeObject = function()
300 {
301 var o = {};
302 var a = this.serializeArray();
303 jQuery.each(a, function() {
304 if(this.name == 'sib_form_action' || this.name == 'sib_form_id' || this.name == 'email')
305 return true; // continue
306 if (o[this.name] !== undefined) {
307 if (!o[this.name].push) {
308 o[this.name] = [o[this.name]];
309 }
310 o[this.name].push(this.value || '');
311 } else {
312 o[this.name] = this.value || '';
313 }
314 });
315 return o;
316 };
317