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