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