PluginProbe ʕ •ᴥ•ʔ
Brevo – Email, SMS, Web Push, Chat, and more. / 2.9.9
Brevo – Email, SMS, Web Push, Chat, and more. v2.9.9
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 6 years ago
mailin-front.js
305 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.status === 'success' || data.status === 'update') {
162 var cdata = '<p class="sib-alert-message sib-alert-message-success ">' + data.msg.successMsg + '</p>';
163 form.find('.sib_msg_disp').html(cdata).show();
164 } else if (data.status === 'failure') {
165 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.errorMsg + '</p>';
166 form.find('.sib_msg_disp').html(cdata).show();
167 } else if (data.status === 'already_exist') {
168 var cdata = '<p class="sib-alert-message sib-alert-message-warning ">' + data.msg.existMsg + '</p>';
169 form.find('.sib_msg_disp').html(cdata).show();
170 } else if (data.status === 'invalid') {
171 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.invalidMsg + '</p>';
172 form.find('.sib_msg_disp').html(cdata).show();
173 } else if (data.status === 'gcaptchaEmpty') {
174 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>';
175 form.find('.sib_msg_disp').html(cdata).show();
176 } else if (data.status === 'gcaptchaFail') {
177 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>';
178 form.find('.sib_msg_disp').html(cdata).show();
179 }
180 form[0].reset();
181 if (data.redirect && (data.status === 'success' || data.status === 'update')) {
182 window.location.href = data.redirect;
183 }
184 var previous_code = form.find('.sib-cflags').data('dial-code');
185 if ( previous_code )
186 {
187 form.find('.sib-sms').val('+' + previous_code);
188 form.find('input[name="sib_SMS_prefix"]').val('+' + previous_code);
189 }
190
191 // run MA script identify() when subscribe on SIB forms
192 if (typeof sendinblue != 'undefined') {
193 var email = form.find('input[name=email]').val();
194 var postData = form.serializeObject();
195 if (data.status === 'success' || data.status === 'update' || data.status === 'already_exist') {
196 sendinblue.identify(email, postData);
197 }
198 }
199 jQuery(".sib-alert-message").delay(2000).hide('slow');
200 form.removeClass('sib_processing');
201 if (typeof grecaptcha != 'undefined')
202 {
203 grecaptcha.reset(gCaptchaSibWidget);
204 }
205 },
206 error: function (jqXHR, textStatus, errorThrown) {
207 form.find('.sib_msg_disp').html(jqXHR).show();
208 if (typeof grecaptcha != 'undefined')
209 {
210 grecaptcha.reset(gCaptchaSibWidget);
211 }
212 }
213 });
214 }
215 });
216 jQuery('.sib-country-block').on('click', function () {
217 jQuery('.sib-country-list').toggle();
218 });
219 if (jQuery('.sib-country-list').length > 0)
220 {
221 jQuery('.sib-country-list').ready( function () {
222 var data = {
223 action : 'sib_get_country_prefix',
224 security: ajax_sib_front_object.ajax_nonce,
225 };
226 jQuery.post( ajax_sib_front_object.ajax_url, data, function (respond) {
227 jQuery('.sib-country-list').html(respond);
228 });
229 });
230 }
231
232 jQuery('body').on('click', function(e){
233 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 ) {
234 jQuery('.sib-sms-field .sib-country-list').hide();
235 }
236 });
237
238 jQuery('.sib-country-list').on( 'click', 'li' , function () {
239 var country_code = jQuery(this).data('country-code').toLowerCase();
240 var dial_code = jQuery(this).data('dial-code');
241 jQuery(this).closest('.sib-sms-field').find('.sib-sms').val('+' + dial_code );
242 jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val('+' + dial_code );
243 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').css('background-image', 'url(' + ajax_sib_front_object.flag_url + country_code + '.png)');
244 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').data('dial-code', dial_code);
245 jQuery(this).closest('.sib-country-list').hide();
246 });
247 jQuery(".sib-sms").on('keypress', function (event){
248 validateInteger(event, 'sms');
249 });
250
251 // allow to input 0-9 and - only for date field
252 jQuery(".sib-date").on('keypress', function(event) {
253 validateInteger(event, 'date');
254 });
255 function is_valid_sms( sms ) {
256 sms = sms.replace(/\b(0(?!\b))+/g, "");
257
258 var tempSms = sms.replace(/( |\(|\)|\.|\-)/g, '');
259
260 if (tempSms.length > 19 || tempSms.length < 6 || tempSms.charAt(0) != '+'){
261 return false;
262 }
263 return true;
264 }
265 function validateInteger(evt,type) {
266 var theEvent = evt || window.event;
267 var key = theEvent.charCode || theEvent.which;
268
269 key = String.fromCharCode( key );
270 // 0-9, +/-, space, brackets
271 var regex = /[ +0-9()-]/;
272 var smsLength = 0;
273 if( type == 'date' ) {
274 regex = /[ 0-9-/]/;
275 }
276 if( !regex.test(key)) {
277 theEvent.returnValue = false;
278 key = theEvent.keyCode;
279 // ignore input for del,tab, back, left, right, home amd end
280 if(theEvent.preventDefault && key != 9 && key != 8 ) theEvent.preventDefault();
281 }
282 }
283
284
285 });
286 // get serialized data form subscribe form
287 jQuery.fn.serializeObject = function()
288 {
289 var o = {};
290 var a = this.serializeArray();
291 jQuery.each(a, function() {
292 if(this.name == 'sib_form_action' || this.name == 'sib_form_id' || this.name == 'email')
293 return true; // continue
294 if (o[this.name] !== undefined) {
295 if (!o[this.name].push) {
296 o[this.name] = [o[this.name]];
297 }
298 o[this.name].push(this.value || '');
299 } else {
300 o[this.name] = this.value || '';
301 }
302 });
303 return o;
304 };
305