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