PluginProbe ʕ •ᴥ•ʔ
Brevo – Email, SMS, Web Push, Chat, and more. / 3.1.14
Brevo – Email, SMS, Web Push, Chat, and more. v3.1.14
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 / admin.js
mailin / js Last commit date
bootstrap 6 years ago admin.js 5 years ago chosen.jquery.min.js 9 years ago index.php 11 years ago mailin-front.js 5 years ago
admin.js
1153 lines
1 var $jQ = jQuery.noConflict();
2 $jQ(document).ready(function(){
3
4 var bodyHeight = $jQ(document).height();
5 var adminmenu_height = $jQ('#adminmenuwrap').height();
6 if(bodyHeight > adminmenu_height){
7 $jQ("#datamain").height(bodyHeight);
8 }
9 else
10 {
11 $jQ("#datamain").height(adminmenu_height);
12 }
13
14
15 var normal_attributes = [];
16
17 var category_attributes = [];
18
19 function isValidEmailAddress(emailAddress) {
20
21 var pattern = new RegExp(/^[#&*\/=?^{!}~'_a-z0-9-\+]+([#&*\/=?^{!}~'_a-z0-9-\+]+)*(\.[#&*\/=?^{!}~'_a-z0-9-\+]+)*[.]?@[_a-z0-9-]+(\.[_a-z0-9-]+)*(\.[a-z0-9]{2,10})$/);
22 return pattern.test(emailAddress);
23 }
24
25 function change_field_attr(){
26 var attr_val = $jQ('#sib_sel_attribute').val();
27 var attr_type, attr_name, attr_text;
28 if (attr_val == 'email' || attr_val == 'submit') {
29 // get all info of attr
30 var hidden_attr = $jQ('#sib_hidden_' + attr_val);
31 attr_type = hidden_attr.attr('data-type');
32 attr_name = hidden_attr.attr('data-name');
33 attr_text = hidden_attr.attr('data-text');
34 }
35 else {
36 $jQ.each(normal_attributes, function(index, value) {
37 if (value['name'] == attr_val) {
38 attr_type = value['type'];
39 attr_name = value['name'];
40 attr_text = attr_name;
41 }
42 });
43
44 $jQ.each(category_attributes, function(index, value) {
45 if (value['name'] == attr_val) {
46 attr_type = value['type'];
47 attr_name = value['name'];
48 attr_text = attr_name;
49 }
50 });
51 }
52
53 // generate attribute html
54 generate_attribute_html(attr_type, attr_name, attr_text);
55 }
56
57 function change_attribute_tag(attr_type, attr_name, attr_text){
58 $jQ('#sib_field_label').attr('value', attr_text);
59 $jQ('#sib_field_placeholder').attr('value', '');
60 $jQ('#sib_field_initial').attr('value', '');
61 $jQ('#sib_field_button_text').attr('value', attr_text);
62 $jQ('.sib-attr-other').hide();
63 $jQ('.sib-attr-normal').hide();
64 $jQ('.sib-attr-category').hide();
65 $jQ('#sib_field_required').removeAttr('checked');
66 var dateformat = $jQ('.sib-dateformat').val();
67 switch(attr_type)
68 {
69 case 'email':
70 $jQ('#sib_field_required').attr('checked', 'true');
71 dateformat = '';
72 case 'date':
73 $jQ('#sib_field_placeholder').val(dateformat);
74 case 'text':
75 case 'float':
76 $jQ('.sib-attr-normal').show();
77 if(attr_name == 'SMS'){
78 $jQ('#sib_field_initial_area').hide();
79 }
80 break;
81 case 'boolean':
82 $jQ('.sib-attr-normal').show();
83 break;
84 case 'category':
85 $jQ('.sib-attr-category').show();
86 break;
87 case 'submit':
88 $jQ('.sib-attr-other').show();
89 break;
90 }
91 }
92
93 // generate attribute html
94 function generate_attribute_html(attr_type, attr_name, attr_text){
95 var field_label = $jQ('#sib_field_label').val();
96 var field_placeholder = $jQ('#sib_field_placeholder').val();
97 var field_initial = $jQ('#sib_field_initial').val();
98 var field_buttontext = $jQ('#sib_field_button_text').val();
99 //var field_wrap = $jQ('#sib_field_wrap').is(':checked');
100 var field_required = $jQ('#sib_field_required').is(':checked');
101 if(field_required == true) field_label += '*';
102 var field_type = $jQ('input[name=sib_field_type]:checked').val();
103 var dateformat = $jQ('.sib-dateformat').val();
104 var field_html = '';
105
106 if(attr_type != 'submit') {
107 field_html += '<p class="sib-' + attr_name + '-area"> \n';
108 }
109 else {
110 field_html += '<p> \n';
111 }
112
113 if ((field_label != '') && (attr_type == 'category')) {
114 if (field_type == 'select') {
115 field_html += ' <label class="sib-' + attr_name + '-area">' + field_label + '</label> \n';
116 }
117 else {
118 field_html += ' <div style="display:block;"><label class="sib-' + attr_name + '-area">' + field_label + '</label></div> \n';
119 }
120 }
121 else if((field_label != '') && (attr_type != 'submit')) {
122 field_html += ' <label class="sib-' + attr_name + '-area">' + field_label + '</label> \n';
123 }
124
125 switch (attr_type)
126 {
127 case 'email':
128 field_html += ' <input type="email" class="sib-' + attr_name + '-area" name="' + attr_name + '" ';
129 field_html += 'placeholder="' + field_placeholder + '" ';
130 field_html += 'value="' + field_initial + '" ';
131 if(field_required == true) {
132 field_html += 'required="required" ';
133 }
134 field_html += '> \n';
135 break;
136 case 'date':
137 field_html += ' <input type="text" class="sib-' + attr_name + '-area sib-date" name="' + attr_name + '" placeholder="' + dateformat + '" data-format="' + dateformat + '">';
138 break;
139 case 'boolean':
140 field_html += ' <input type="hidden" name="' + attr_name + '" value="0"><input type="checkbox" value="1" class="sib-' + attr_name + '-area" name="' + attr_name + '" ';
141 if(field_placeholder != '') {
142 field_html += 'placeholder="' + field_placeholder + '" ';
143 }
144 if(field_required == true) {
145 field_html += 'required="required" ';
146 }
147 field_html += '> \n';
148 break;
149 case 'text':
150 if ( attr_name == "SMS" ) {
151 field_html += '<div class="sib-sms-field"><div class="sib-country-block">' +
152 '<div class="sib-toggle sib-country-flg"><div class="sib-cflags"></div> ' +
153 '<div class="sib-icon-arrow"></div></div> '+
154 '</div>' + '<ul class="sib-country-list" style="display: none;"></ul>' +
155 '<input type="hidden" name="sib_SMS_prefix" value="+33"><input type="text" name="SMS" class="sib-sms" value="+33" ';
156 if(field_placeholder != '') {
157 field_html += 'placeholder="' + field_placeholder + '" ';
158 }
159 if(field_required == true) {
160 field_html += 'required="required" ';
161 }
162 field_html += '></div>\n';
163 }
164 else {
165 field_html += ' <input type="text" class="sib-' + attr_name + '-area" name="' + attr_name + '" ';
166 if(field_placeholder != '') {
167 field_html += 'placeholder="' + field_placeholder + '" ';
168 }
169 if(field_initial != '') {
170 field_html += 'value="' + field_initial + '" ';
171 }
172 if(field_required == true) {
173 field_html += 'required="required" ';
174 }
175 field_html += '> \n';
176 }
177 break;
178 case 'float':
179 field_html += ' <input type="text" class="sib-' + attr_name + '-area" name="' + attr_name + '" ';
180 if(field_placeholder != '') {
181 field_html += 'placeholder="' + field_placeholder + '" ';
182 }
183 if(field_initial != '') {
184 field_html += 'value="' + field_initial + '" ';
185 }
186 if(field_required == true) {
187 field_html += 'required="required" ';
188 }
189 field_html += 'pattern="[0-9]+([\\.|,][0-9]+)?" > \n';
190 break;
191 case 'submit':
192 field_html += ' <input type="submit" class="sib-default-btn" name="' + attr_name + '" ';
193 field_html += 'value="' + field_buttontext + '" ';
194 field_html += '> \n';
195 break;
196 case 'category':
197 var enumeration = [];
198 $jQ.each(category_attributes, function(index, value) {
199 if (value['name'] == attr_name) {
200 enumeration = value['enumeration'];
201 }
202 });
203
204 if (field_type == 'select') {
205 field_html += ' <select class="sib-' + attr_name + '-area" name="' + attr_name + '" ';
206 if (field_required == true) {
207 field_html += 'required="required" ';
208 }
209 field_html += '> \n';
210 }
211 $jQ.each(enumeration, function(index, value) {
212 if (field_type == 'select') {
213 field_html += ' <option value="' + value['value'] + '">' + value['label'] + '</option> \n';
214 }
215 else {
216 field_html += ' <div style="display:block;"><input type="radio" class="sib-' + attr_name + '-area" name="' + attr_name + '" value="' + value['value'] + '" ';
217 if (field_required == true) {
218 field_html += 'required="required" ';
219 }
220 field_html += '>' + value['label'] + '</div> \n';
221 }
222 });
223 if (field_type == 'select') {
224 field_html += ' </select> \n';
225 }
226 break;
227 }
228
229 field_html += '</p>';
230 $jQ('#sib_field_html').html(field_html);
231 }
232
233 function set_select_list() {
234 var selected_list_id = $jQ('#sib_selected_list_id').val();
235
236 var data = {
237 frmid : $jQ('input[name=sib_form_id]').val(),
238 action : 'sib_get_lists',
239 security: ajax_sib_object.ajax_nonce
240 };
241 $jQ.post(ajax_sib_object.ajax_url, data, function(respond) {
242 var select_html = '';
243 var selected = respond.selected;
244
245 $jQ.each(respond.lists, function(index, value) {
246 if(value['name'] == 'Temp - DOUBLE OPTIN') return true;
247 if ( selected.indexOf(value['id'].toString()) != '-1' ) {
248 select_html += '<option value="' + value['id'] + '" selected>' + value['name'] + '</option>';
249 }
250 else {
251 select_html += '<option value="' + value['id'] + '">' + value['name'] + '</option>';
252 }
253 });
254 $jQ('#sib_select_list').html(select_html).trigger("chosen:updated");
255
256 set_select_attributes();
257
258 });
259 }
260
261 function set_select_template() {
262 var selected_template_id = $jQ('#sib_selected_template_id').val();
263 var selected_do_template_id = $jQ('#sib_selected_do_template_id').val();
264 var selected_confirm_template_id = $jQ('#sib_selected_confirm_template_id').val();
265 var default_template_name = $jQ('#sib_default_template_name').val();
266 var data = {
267 action : 'sib_get_templates',
268 security: ajax_sib_object.ajax_nonce
269 };
270 $jQ.post(ajax_sib_object.ajax_url, data, function(respond) {
271 var select_html = '<select id="sib_template_id" class="col-md-11" name="template_id">';
272 if (selected_template_id == '-1') {
273 select_html += '<option value="-1" selected>' + default_template_name + '</option>';
274 }
275 else {
276 select_html += '<option value="-1">' + default_template_name + '</option>';
277 }
278 $jQ.each(respond.templates, function(index, value) {
279 if (value['id'] == selected_template_id) {
280 select_html += '<option value="' + value['id'] + '" selected>' + value['name'] + '</option>';
281 }
282 else {
283 select_html += '<option value="' + value['id'] + '">' + value['name'] + '</option>';
284 }
285 });
286 select_html += '</select>';
287 $jQ('#sib_template_id_area').html(select_html);
288
289 // For double optin.
290 select_html = '<select class="col-md-11" name="doubleoptin_template_id" id="sib_doubleoptin_template_id">';
291 if (selected_do_template_id == '-1') {
292 select_html += '<option value="-1" selected>' + default_template_name + '</option>';
293 }
294 else {
295 select_html += '<option value="-1">' + default_template_name + '</option>';
296 }
297 $jQ.each(respond.templates, function(index, value) {
298 if (value['id'] == selected_do_template_id) {
299 select_html += '<option is_shortcode="' + value['is_dopt'] + '" value="' + value['id'] + '" selected>' + value['name'] + '</option>';
300 }
301 else {
302 select_html += '<option is_shortcode="' + value['is_dopt'] + '" value="' + value['id'] + '">' + value['name'] + '</option>';
303 }
304 });
305 select_html += '</select>';
306 $jQ('#sib_doubleoptin_template_id_area').html(select_html);
307
308 // For final confirmation emait template
309 select_html = '<select id="sib_confirm_template_id" class="col-md-11" name="confirm_template_id">';
310 if (selected_confirm_template_id == '-1') {
311 select_html += '<option value="-1" selected>' + default_template_name + '</option>';
312 }
313 else {
314 select_html += '<option value="-1">' + default_template_name + '</option>';
315 }
316
317 $jQ.each(respond.templates, function(index, value) {
318 if (value['id'] == selected_confirm_template_id) {
319 select_html += '<option is_shortcode="' + value['is_dopt'] + '" value="' + value['id'] + '" selected>' + value['name'] + '</option>';
320 }
321 else {
322 select_html += '<option is_shortcode="' + value['is_dopt'] + '" value="' + value['id'] + '">' + value['name'] + '</option>';
323 }
324 });
325 select_html += '</select>';
326 $jQ('#sib_final_confirm_template_id_area').html(select_html);
327
328 // double optin template id
329 $jQ('#sib_doubleoptin_template_id').on('change', function() {
330 var shortcode_exist = $jQ(this).find(':selected').attr('is_shortcode');
331 if (shortcode_exist == 0 && $jQ(this).val() != -1) {
332 $jQ('#sib_form_alert_message').show();
333 $jQ('#sib_disclaim_smtp').hide();
334 $jQ('#sib_disclaim_confirm_template').hide();
335 $jQ('#sib_disclaim_do_template').show();
336 $jQ(this).val('-1');
337 }
338 else {
339 $jQ('#sib_form_alert_message').hide();
340 }
341 });
342
343 // Final confirm template id
344 $jQ('#sib_confirm_template_id').on('change', function() {
345 var shortcode_exist = $jQ(this).find(':selected').attr('is_shortcode');
346 if (shortcode_exist == 1 && $jQ(this).val() != -1) {
347 $jQ('#sib_form_alert_message').show();
348 $jQ('#sib_disclaim_smtp').hide();
349 $jQ('#sib_disclaim_confirm_template').show();
350 $jQ('#sib_disclaim_do_template').hide();
351 $jQ(this).val('-1');
352 }
353 else {
354 $jQ('#sib_form_alert_message').hide();
355 }
356 });
357
358 $jQ('#sib_setting_signup_spin').addClass('hide');
359
360 });
361 }
362
363 function set_select_attributes() {
364 var data = {
365 action : 'sib_get_attributes',
366 security: ajax_sib_object.ajax_nonce
367 };
368
369 $jQ.post(ajax_sib_object.ajax_url, data, function(respond) {
370
371 var iframWidth = $jQ('.form-field').width() - 48;
372 $jQ('#sib-preview-form').width(iframWidth);
373
374 normal_attributes = respond.attrs.attributes.normal_attributes;
375 category_attributes = respond.attrs.attributes.category_attributes;
376 var attr_email_name = $jQ('#sib_hidden_email').attr('data-text');
377 var message_1 = $jQ('#sib_hidden_message_1').val();
378 var message_2 = $jQ('#sib_hidden_message_2').val();
379 var message_3 = $jQ('#sib_hidden_message_3').val();
380 var message_4 = $jQ('#sib_hidden_message_4').val();
381 var message_5 = $jQ('#sib_hidden_message_5').val();
382 var select_html = '<select class="col-md-12" id="sib_sel_attribute">' +
383 '<option value="-1" disabled selected>' + message_1 + '</option>' +
384 '<optgroup label="' + message_2 + '">';
385 select_html += '<option value="email">' + attr_email_name + '*</option>';
386 $jQ.each(normal_attributes, function(index, value) {
387 select_html += '<option value="' + value['name'] + '">' + value['name'] + '</option>';
388 });
389 select_html += '</optgroup>';
390 select_html += '<optgroup label="' + message_3 + '">';
391 $jQ.each(category_attributes, function(index, value) {
392 if(value['name'] == 'DOUBLE_OPT-IN') return;
393 select_html += '<option value="' + value['name'] + '">' + value['name'] + '</option>';
394 });
395 select_html += '</optgroup>';
396 select_html += '<optgroup label="' + message_4 + '">';
397 select_html += '<option value="submit">' + message_5 + '</option>';
398 select_html += '</optgroup>';
399 select_html += '</select>';
400
401 $jQ('#sib_sel_attribute_area').html(select_html);
402 $jQ('#sib_sel_attribute').on('change', function() {
403 //
404 $jQ('#sib-field-content').show();
405
406 var attr_val = $jQ(this).val();
407 var attr_type, attr_name, attr_text;
408 if (attr_val == 'email' || attr_val == 'submit') {
409 // get all info of attr
410 var hidden_attr = $jQ('#sib_hidden_' + attr_val);
411 attr_type = hidden_attr.attr('data-type');
412 attr_name = hidden_attr.attr('data-name');
413 attr_text = hidden_attr.attr('data-text');
414 }
415 else {
416 $jQ.each(normal_attributes, function(index, value) {
417 if (value['name'] == attr_val) {
418 attr_type = value['type'];
419 attr_name = value['name'];
420 attr_text = attr_name;
421 }
422 });
423
424 $jQ.each(category_attributes, function(index, value) {
425 if (value['name'] == attr_val) {
426 attr_type = value['type'];
427 attr_name = value['name'];
428 attr_text = attr_name;
429 }
430 });
431 }
432 // change attribute tags
433 change_attribute_tag(attr_type, attr_name, attr_text);
434
435 // generate attribute html
436 generate_attribute_html(attr_type, attr_name, attr_text);
437 });
438 $jQ('#sib_setting_form_spin').addClass('hide');
439 set_select_template();
440 });
441 }
442
443 function update_preview(){
444
445 var frmid = $jQ('#sib_form_id').val();
446 var formHtml = $jQ('#sibformmarkup').val();
447 var formCss = $jQ('#sibcssmarkup').val();
448 var isDepend = $jQ('input[name=sib_css_type]:checked').val();
449 var gCaptcha = $jQ('input[name=sib_add_captcha]:checked').val();
450 var gCaptchaType = $jQ('input[name=sib_recaptcha_type]:checked').val();
451 var gCaptchaSite = $jQ('#sib_captcha_site').val();
452 var data = {
453 action:'sib_update_form_html',
454 security: ajax_sib_object.ajax_nonce,
455 frmid: frmid,
456 frmData: formHtml,
457 frmCss: formCss,
458 isDepend: isDepend,
459 gCaptcha: gCaptcha,
460 gCaptchaType: gCaptchaType,
461 gCaptchaSite: gCaptchaSite
462 };
463 $jQ.post(ajax_sib_object.ajax_url, data,function() {
464 var preview_form = $jQ('#sib-preview-form');
465 preview_form.attr('src', preview_form.attr('src') + '&action=update');
466 });
467 }
468 // get cursor posistion of text area
469 function get_cursor_position(node) {
470 //node.focus();
471 /* without node.focus() IE will returns -1 when focus is not on node */
472 if(node.selectionStart) return node.selectionStart;
473 else if(!document.selection) return 0;
474 var c = "\001";
475 var sel = document.selection.createRange();
476 var dul = sel.duplicate();
477 dul.moveToElementText(node);
478 sel.text = c;
479 var len = (dul.text.indexOf(c));
480 sel.moveStart('character',-1);
481 sel.text = "";
482 return len;
483 }
484 // set cursor position at top of text area
485 function setSelectionRange(input, selectionStart, selectionEnd) {
486 if (input.setSelectionRange) {
487 input.focus();
488 input.setSelectionRange(selectionStart, selectionEnd);
489 } else if (input.createTextRange) {
490 var range = input.createTextRange();
491 range.collapse(true);
492 range.moveEnd('character', selectionEnd);
493 range.moveStart('character', selectionStart);
494 range.select();
495 }
496 }
497
498 // generate html for multi subscription lists
499 function generate_multi_list_html() {
500 var field_label = $jQ('#sib_multi_field_label').val();
501 var field_html = '<p class="sib-multi-lists-area">\n';
502 var list_id = '';
503 var list_name = '';
504 var required = false;
505 var required_label = '';
506 var required_attr = '';
507 if ( $jQ('#sib_multi_field_required').is(":checked"))
508 {
509 required = true;
510 required_label = '*';
511 required_attr = 'required';
512 }
513 if ( field_label != '' )
514 {
515 field_html += '<label>' + field_label + required_label + '</label>\n';
516 }
517
518 field_html += '<div class="sib-multi-lists" data-require="' + required_attr + '">\n';
519 var selected_lists = $jQ('#sib_select_multi_list').find('option:selected', this);
520 selected_lists.each(function(){
521 list_id = $jQ(this).val();
522 list_name = $jQ(this).data('list');
523 field_html += '<div style="block"><input type="checkbox" class="sib-interesting-lists" value="' + list_id + '" name="listIDs[]">' + list_name + '</div>\n';
524 });
525 field_html += '</div></p>';
526 $jQ('#sib_multi_field_html').html(field_html);
527 }
528 /////////////////////////////////
529 /* home settings */
530 /////////////////////////////////
531
532 // var elements
533 var sib_access_key = $jQ('#sib_access_key');
534 var sib_validate_btn = $jQ('#sib_validate_btn');
535
536 // validate button click process in welcome page
537 sib_validate_btn.on('click', function(){
538
539 var access_key = sib_access_key.val();
540
541 // check validation
542 var error_flag = 0;
543 if(access_key == '') {
544 sib_access_key.addClass('error');
545 error_flag =1;
546 }
547
548 if(error_flag != 0) {
549 return false;
550 }
551
552 // ajax process for validate
553 var data = {
554 action:'sib_validate_process',
555 access_key: access_key,
556 security: ajax_sib_object.ajax_nonce
557 };
558
559 $jQ('.sib_alert').hide();
560 $jQ('.sib-spin').show();
561 sib_access_key.removeClass('error');
562 $jQ(this).attr('disabled', 'true');
563
564 $jQ.post(ajax_sib_object.ajax_url, data, function(respond) {
565 $jQ('.sib-spin').hide();
566 sib_validate_btn.removeAttr('disabled');
567 if(respond == 'success') {
568 $jQ('#success-alert').show();
569 /*var cur_url = $jQ('#cur_refer_url').val();
570 window.location.href = cur_url;*/
571 window.location.reload();
572 }
573 else if (respond == 'curl_no_installed') {
574 sib_access_key.addClass('error');
575 $jQ('#failure-alert').html($jQ('#curl_no_exist_error').val()).show();
576 }
577 else if (respond == 'curl_error') {
578 sib_access_key.addClass('error');
579 $jQ('#failure-alert').html($jQ('#curl_error').val()).show();
580 }
581 else {
582 sib_access_key.addClass('error');
583 $jQ('#failure-alert').html(respond).show();
584 }
585 });
586 });
587
588 sib_access_key.on('keypress', function(){
589 $jQ(this).removeClass('error');
590 });
591
592 // Transactional emails
593 $jQ('input[name=activate_email]').on('click', function(){
594 var option_val = $jQ(this).val();
595 var data = {
596 action: 'sib_activate_email_change',
597 option_val: option_val,
598 security: ajax_sib_object.ajax_nonce
599 };
600 $jQ.post(ajax_sib_object.ajax_url, data, function(respond) {
601 if(respond == 'yes')
602 $jQ('#email_send_field').show();
603 else
604 $jQ('#email_send_field').hide();
605 });
606
607 return true;
608 });
609
610 // change sender detail
611 $jQ('#sender_list').on('change',function(){
612 var data = {
613 action: 'sib_sender_change',
614 sender: $jQ(this).val(),
615 security: ajax_sib_object.ajax_nonce
616 };
617 $jQ.post(ajax_sib_object.ajax_url, data, function() {
618 $jQ(this).blur();
619 });
620
621 return true;
622 });
623
624 // validate MA
625 $jQ('#validate_ma_btn').on('click',function(){
626 var option_val = $jQ('input[name=activate_ma]:checked').val();
627 var data = {
628 action:'sib_validate_ma',
629 option_val: option_val,
630 security: ajax_sib_object.ajax_nonce
631 };
632 var uninstall = false;
633 var uninstallMsg = $jQ('#sib-ma-unistall').val();
634 if(option_val != 'yes'){
635 uninstall = confirm(uninstallMsg);
636 }
637 if(option_val == 'yes' || uninstall) {
638 $jQ(this).find('.sib-spin').show();
639 $jQ('.sib-ma-alert').hide();
640 $jQ(this).attr('disabled', 'true');
641 $jQ.post(ajax_sib_object.ajax_url, data, function (respond) {
642 $jQ('.sib-spin').hide();
643 $jQ('#validate_ma_btn').removeAttr('disabled');
644 if (respond == 'yes') {
645 $jQ('.sib-ma-active').show();
646 } else if(respond == 'no') {
647 $jQ('.sib-ma-inactive').show();
648 } else if(respond == 'disabled'){
649 $jQ('.sib-ma-disabled').show();
650 $jQ('#activate_ma_radio_no').prop('checked', true);
651 }
652 setTimeout(function(){
653 if(respond != 'disabled')
654 window.location.reload();
655 },2000);
656
657 });
658 }
659 });
660
661 // send activate email button
662 $jQ('#send_email_btn').on('click',function(){
663 var activate_email = $jQ('#activate_email');
664 var email = activate_email.val();
665 if(email == '' || isValidEmailAddress(email) != true) {
666 activate_email.removeClass('has-success').addClass('error');
667 $jQ('#failure-alert').show();
668 return false;
669 }
670 $jQ(this).attr('disabled', 'true');
671
672 var data = {
673 action:'sib_send_email',
674 email:email,
675 security: ajax_sib_object.ajax_nonce
676 };
677
678 $jQ('.sib_alert').hide();
679 activate_email.removeClass('error');
680 $jQ(this).find('.sib-spin').show();
681 $jQ.post(ajax_sib_object.ajax_url, data,function(respond) {
682 $jQ('.sib-spin').hide();
683 $jQ('#send_email_btn').removeAttr('disabled');
684 if(respond != 'success') {
685 $jQ('#activate_email').removeClass('has-success').addClass('error');
686 $jQ('#failure-alert').show();
687 } else {
688 $jQ('#success-alert').show();
689 }
690 });
691 });
692
693 ////////////////////////////////
694 /* manage forms */
695 ////////////////////////////////
696
697 $jQ('#sib-field-content').hide();
698
699 // check confirm email
700 var is_send_confirm_email = $jQ("input[name=is_confirm_email]:checked").val();
701
702 if(is_send_confirm_email == '1') {
703 $jQ('#sib_confirm_template_area').show();
704 $jQ('#sib_confirm_sender_area').show();
705 } else {
706 $jQ('#sib_confirm_template_area').hide();
707 $jQ('#sib_confirm_sender_area').hide();
708 }
709
710 // check double optin
711 var is_double_optin = $jQ("input[name=is_double_optin]:checked").val();
712
713 if(is_double_optin == '1') {
714 $jQ('#is_confirm_email_no').prop("checked", true);
715 $jQ('#sib_confirm_template_area').hide();
716 $jQ('#sib_confirm_sender_area').hide();
717 $jQ('#sib_double_sender_area').show();
718 $jQ('#sib_doubleoptin_template_area').show();
719
720 } else {
721 $jQ('#sib_double_sender_area').hide();
722 $jQ('#sib_double_redirect_area').hide();
723 $jQ('#sib_doubleoptin_template_area').hide();
724 $jQ('#sib_final_confirm_template_area').hide();
725 }
726
727 if ($jQ('#sib_setting_signup_body').find('#sib_select_list_area').length > 0 ) {
728 set_select_list();
729 $jQ('#sib_select_list').chosen({width:"100%"});
730 }
731
732 // For multi lists subscription
733 if ( $jQ('#sib_setting_form_body').find('#sib_sel_multi_list_area').length > 0 ) {
734 var data = {
735 frmid : $jQ('input[name=sib_form_id]').val(),
736 action : 'sib_get_lists',
737 security: ajax_sib_object.ajax_nonce
738 };
739 $jQ.post(ajax_sib_object.ajax_url, data, function(respond) {
740 var select_html = '';
741 $jQ.each(respond.lists, function(index, value) {
742 if(value['name'] == 'Temp - DOUBLE OPTIN') return true;
743 select_html += '<option value="' + value['id'] + '" data-list="' + value['name'] + '">' + value['name'] + '</option>';
744 });
745 $jQ('#sib_select_multi_list').html(select_html).trigger("chosen:updated");
746 $jQ('#sib_select_multi_list').chosen({width:"100%"});
747 });
748 }
749
750 $jQ('#sib_select_multi_list').on('change', function(){
751 if ( $jQ(this).val() != null )
752 {
753 $jQ('#sib_multi_list_field').show();
754 generate_multi_list_html();
755 }
756 else {
757 $jQ('#sib_multi_list_field').hide();
758 }
759 });
760
761 $jQ('#sib_multi_field_label').on('change', function () {
762 generate_multi_list_html();
763 });
764
765 $jQ('#sib_multi_field_required').on('change', function () {
766 generate_multi_list_html();
767 });
768 // keep change of fields
769 $jQ('.sib_field_changes').on('change',function() {
770 change_field_attr();
771 });
772
773 // click confirm email
774 $jQ("input[name=is_confirm_email]").on('click',function() {
775 var confirm_email = $jQ(this).val();
776 var is_activated_smtp = parseInt($jQ("#is_smtp_activated").val());
777
778 if(confirm_email == '1') {
779 $jQ('#sib_doubleoptin_template_id').val('-1');
780 $jQ('#sib_confirm_template_id').val('-1');
781 $jQ('#is_double_optin_no').prop("checked", true);
782 $jQ('#sib_double_sender_area').hide();
783 $jQ('#sib_double_redirect_area').hide();
784 $jQ('#sib_confirm_template_area').show();
785 $jQ('#sib_confirm_sender_area').show();
786 $jQ('#sib_doubleoptin_template_area').hide();
787 $jQ('#sib_final_confirm_template_area').hide();
788 $jQ('#sib_form_alert_message').hide();
789 if (is_activated_smtp == 0) {
790 $jQ('#sib_form_alert_message').show();
791 $jQ('#sib_disclaim_smtp').show();
792 $jQ('#sib_disclaim_do_template').hide();
793 $jQ('#sib_disclaim_confirm_template').hide();
794 }
795 } else {
796 $jQ('#sib_confirm_template_area').hide();
797 $jQ('#sib_confirm_sender_area').hide();
798 $jQ('#sib_form_alert_message').hide();
799 }
800 });
801
802 // click double optin
803 $jQ('input[name=is_double_optin]').on('click', function() {
804 var double_optin = $jQ(this).val();
805 var is_activated_smtp = parseInt($jQ("#is_smtp_activated").val());
806 if(double_optin == '1') {
807 $jQ('#sib_template_id').val('-1');
808 $jQ('#is_confirm_email_no').prop("checked", true);
809 $jQ('#sib_confirm_template_area').hide();
810 $jQ('#sib_confirm_sender_area').hide();
811 $jQ('#sib_double_sender_area').show();
812 $jQ('#sib_double_redirect_area').show();
813 $jQ('#sib_doubleoptin_template_area').show();
814 $jQ('#sib_final_confirm_template_area').show();
815 if (is_activated_smtp == 0) {
816 $jQ('#sib_form_alert_message').show();
817 $jQ('#sib_disclaim_smtp').show();
818 $jQ('#sib_disclaim_do_template').hide();
819 $jQ('#sib_disclaim_confirm_template').hide();
820 }
821 } else {
822 $jQ('#sib_double_sender_area').hide();
823 $jQ('#sib_double_redirect_area').hide();
824 $jQ('#sib_doubleoptin_template_area').hide();
825 $jQ('#sib_form_alert_message').hide();
826 $jQ('#sib_final_confirm_template_area').hide();
827 }
828 });
829
830 // click redirect url
831 $jQ('#is_redirect_url_click_yes').on('click', function () {
832 $jQ('#sib_subscrition_redirect_area').show();
833 });
834 $jQ('#is_redirect_url_click_no').on('click', function () {
835 $jQ('#sib_subscrition_redirect_area').hide();
836 });
837
838 //// refresh iframe to preview form
839 $jQ('#sib-preview-form-refresh').on('click',function(){
840 // ajax to update form html
841 update_preview();
842 });
843
844 //// display popup when delete form
845 $jQ('.sib-form-delete').on('click', function(e) {
846 return confirm('Are you sure you want to delete this form?');
847 });
848
849 //// custom or theme's css
850 $jQ('input[name=sib_css_type]').on('change',function() {
851 $jQ('#sibcssmarkup').toggle();
852 update_preview();
853 });
854
855 // remove all transients
856 $jQ(window).focus(function() {
857
858 var data = {
859 action: 'sib_remove_cache',
860 security: ajax_sib_object.ajax_nonce
861 };
862 $jQ.post(ajax_sib_object.ajax_url, data,function(respond) {
863
864 if(respond == 'success') {
865 //
866 }
867 });
868 });
869
870 /* sync wordpress users to sendinblue contact list */
871 // sync popup
872 $jQ('#sib-sync-btn').on('click', function() {
873 var syncModal = $jQ('.sib-sync-modal');
874 syncModal.modal();
875 $jQ('#sync-failure').hide();
876
877 // add to multilist field
878 var list = $jQ('#sib_select_list');
879 list[0].selectedIndex = 0;
880 list.chosen({width:"100%"});
881
882 syncModal.on('hidden.bs.modal', function () {
883 //window.location.reload();
884 });
885 });
886
887 var attrFieldLine = $jQ('.sync-attr-line').html();
888 // sync add attr line filed
889 $jQ('.modal-body').on('click', '.sync-attr-plus', function(){
890 $jQ('.sync-attr-line').append(attrFieldLine);
891 $jQ('.sync-attr-dismiss').show();
892 });
893 // sync dismiss attr line filed
894 $jQ('.modal-body').on('click', '.sync-attr-dismiss', function(){
895 $jQ(this).closest('.sync-attr').remove();
896 var attrCount = $jQ('.sync-attr').length;
897 if(attrCount == 1) $jQ('.sync-attr-dismiss').hide();
898 });
899
900 // set attribute matching
901 $jQ('.modal-body').on('change', 'select', function () {
902 if($jQ(this).attr("class") == 'sync-wp-attr'){
903 $jQ(this).closest('.sync-attr').find('.sync-match').val($jQ(this).val());
904 }else{
905 $jQ(this).closest('.sync-attr').find('.sync-match').attr('name',$jQ(this).val());
906 }
907 });
908
909 // sync users to sendinblue
910 $jQ('#sib_sync_users_btn').on('click', function(){
911
912 $jQ(this).attr('disabled', 'true');
913 var postData = $jQ('#sib-sync-form').serializeObject();
914 $jQ(this).closest('form').find('input[type=hidden]').each(function (index, value) {
915 var attrName = $jQ(this).attr('name');
916 if($jQ('input[name='+attrName+']').length > 1){
917 // the attribute is duplicated !
918 postData['errAttr'] = attrName;
919 }
920 });
921
922 var data = {
923 action:'sib_sync_users',
924 data: postData,
925 security: ajax_sib_object.ajax_nonce
926 };
927
928 $jQ('.sib_alert').hide();
929 $jQ(this).find('.sib-spin').show();
930 $jQ.post(ajax_sib_object.ajax_url, data,function(respond) {
931 $jQ('.sib-spin').hide();
932 $jQ('#sib_sync_users_btn').removeAttr('disabled');
933 let messageBox = '';
934 if(respond.code != 'success') {
935 messageBox = 'sync-failure';
936 $jQ('#sync-failure').show().html(respond.message);
937 } else {
938 // success to sync wp users
939 $jQ('.sib-sync-modal').modal('toggle');
940 $jQ('#sib-message-body').html(respond.message);
941 $jQ('#sib-message-box').show();
942 }
943 });
944
945 });
946 $jQ('.sib-add-captcha').on('click', function(){
947 var add_captcha = $jQ(this).val();
948 if(add_captcha == '1')
949 {
950 $jQ('.sib-captcha-key').show('slow');
951 }
952 else
953 {
954 $jQ('.sib-captcha-key').hide('slow');
955 }
956 });
957
958 $jQ('.popover-help-form').popover({
959 });
960 $jQ('.sib-spin').hide();
961 $jQ('body').on('click', function(e) {
962 if(!$jQ(e.target).hasClass('popover-help-form')) {
963 $jQ('.popover-help-form').popover('hide');
964 }
965 });
966
967 $jQ('.sib-add-terms').on('click', function(){
968 var add_terms = $jQ(this).val();
969 if(add_terms == '1')
970 {
971 $jQ('.sib-terms-url').show('slow');
972 }
973 else
974 {
975 $jQ('.sib-terms-url').hide('slow');
976 }
977 });
978
979 $jQ('.sib-add-to-form').on('click', function(){
980 var btn_id = $jQ(this).attr('id');
981 var field_html = '';
982 if(btn_id == 'sib_add_to_form_btn')
983 {
984 field_html = $jQ('#sib_field_html').val();
985 }
986 else if(btn_id == 'sib_multi_lists_add_form_btn')
987 {
988 field_html = $jQ('#sib_multi_field_html').val();
989 $jQ('#sib_multi_list_field').hide();
990 }
991 else if(btn_id == 'sib_add_captcha_btn')
992 {
993 var site_key = $jQ('#sib_captcha_site').val();
994 var secret_key = $jQ('#sib_captcha_secret').val();
995 var gCaptcha_type = $jQ('input[name=sib_recaptcha_type]:checked').val();
996
997 if(gCaptcha_type == '0')
998 {
999 field_html = '<div id="sib_captcha"></div>';
1000 }
1001
1002 if(site_key == '')
1003 {
1004 $jQ('#sib_form_captcha .alert-danger').html('You should input <strong>Site Key</strong>').show(300);
1005 return false;
1006 }
1007 else if(secret_key == '')
1008 {
1009 $jQ('#sib_form_captcha .alert-danger').html('You should input <strong>Secrete Key</strong>').show(300);
1010 return false;
1011 }
1012 }
1013 else if(btn_id == 'sib_add_termsUrl_btn')
1014 {
1015 var terms_url = $jQ('#sib_terms_url').val();
1016 field_html = '<input type="checkbox" name="terms" required="required">I accept the <a href="' + terms_url + '">terms and conditions</a> ';
1017 if(terms_url == '')
1018 {
1019 $jQ('#sib_form_terms .alert-danger').html('You should input <strong>Terms URL</strong>').show(300);
1020 return false;
1021 }
1022 }
1023 else if(btn_id == 'sib_add_compliance_note')
1024 {
1025 var compliance_note = $jQ('#sib_gdpr_text').val();
1026 field_html = '<p>' + compliance_note + '</p>';
1027 }
1028
1029 var formMarkup = $jQ("#sibformmarkup");
1030
1031 var cursorPosition = get_cursor_position(formMarkup[0]);
1032 var html = formMarkup.val();
1033 if(html.charCodeAt(cursorPosition) == 10 || html.charCodeAt(cursorPosition) == 13){ // 10 is value of new line
1034 field_html = "\n" + field_html;
1035 }else{
1036 field_html = field_html + "\n";
1037 }
1038 var formData = [html.slice(0, cursorPosition), field_html, html.slice(cursorPosition)].join('');
1039 formMarkup.val(formData);
1040
1041 // hide field edit after add the field to form
1042 $jQ('#sib-field-content').hide();
1043 $jQ("#sib_sel_attribute").val('-1');
1044
1045 /*/ refresh iframe form /*/
1046 // ajax to update form html
1047 update_preview();
1048 // set cursor position at top
1049 setSelectionRange(formMarkup[0], 0, 0);
1050 return false;
1051 });
1052
1053 var redirect = '';
1054 $jQ('.sib-form-redirect').on('click', function(e){
1055 e.preventDefault();
1056 redirect = $jQ(this).attr('href');
1057 $jQ('#sib_modal').modal();
1058 });
1059
1060 $jQ('#sib_form_lang').on('change', function(){
1061 $jQ('#sib_modal').modal();
1062 });
1063
1064 $jQ('#sib_modal_cancel').on('click', function(){
1065 $jQ('#sib_modal').modal('hide');
1066 $jQ('#sib_form_lang').val("");
1067 });
1068 $jQ('#sib_modal_ok').on('click', function(){
1069 var url = (redirect != '')? redirect :$jQ('#sib_form_lang').val();
1070 window.location.href = url;
1071 });
1072
1073 // duplicate content from origin form in translation
1074 $jQ('.sib-duplicate-btn').on('click', function(){
1075 $jQ('.sib-spin').show();
1076 var pid = $jQ('input[name="pid"]').val();
1077 var data = {
1078 action: 'sib_copy_origin_form',
1079 pid: pid,
1080 security: ajax_sib_object.ajax_nonce
1081 };
1082 $jQ.post(ajax_sib_object.ajax_url, data, function(respond) {
1083 $jQ('.sib-spin').hide();
1084 $jQ('#sibformmarkup').val(respond);
1085 });
1086
1087 });
1088
1089 $jQ('.sib-add-compliant-note').on('click', function () {
1090 var add_notes = $jQ(this).val();
1091 if(add_notes == '1')
1092 {
1093 $jQ('.sib-gdpr-block-area').show('slow');
1094 $jQ('.sib-gdpr-block-btn').show('slow');
1095 }
1096 else
1097 {
1098 $jQ('.sib-gdpr-block-area').hide('slow');
1099 $jQ('.sib-gdpr-block-btn').hide('slow');
1100 }
1101 });
1102 $jQ('#set_gdpr_default').on('click', function () {
1103 $jQ('#sib_gdpr_text').val(ajax_sib_object.compliance_note);
1104 })
1105
1106 if($jQ("#sib-statistics-date").length) {
1107 $jQ("#sib-statistics-date").datepicker({
1108 dateFormat: 'yy-mm-dd',
1109 numberOfMonths: 1,
1110 onSelect: function( selectedDate ) {
1111 if(!$jQ(this).data().datepicker.first){
1112 $jQ(this).data().datepicker.inline = true
1113 $jQ(this).data().datepicker.first = selectedDate;
1114 }else{
1115 if(selectedDate > $jQ(this).data().datepicker.first){
1116 $jQ(this).val($jQ(this).data().datepicker.first+" - "+selectedDate);
1117 }else{
1118 $jQ(this).val(selectedDate+" - "+$jQ(this).data().datepicker.first);
1119 }
1120 $jQ(this).data().datepicker.inline = false;
1121 }
1122 },
1123 onClose:function(){
1124 delete $jQ(this).data().datepicker.first;
1125 $jQ(this).data().datepicker.inline = false;
1126 }
1127 })
1128 }
1129 $jQ('#sib-statistics-form').on('submit', function (data) {
1130 $jQ("#apply-date-range").attr("disabled", true);
1131 $jQ('.sib-spinner').addClass('is-active');
1132 return true;
1133 });
1134 });
1135
1136 // get serialized data form sync users form
1137 $jQ.fn.serializeObject = function()
1138 {
1139 var o = {};
1140 var a = this.serializeArray();
1141 $jQ.each(a, function() {
1142 if (o[this.name] !== undefined) {
1143 if (!o[this.name].push) {
1144 o[this.name] = [o[this.name]];
1145 }
1146 o[this.name].push(this.value || '');
1147 } else {
1148 o[this.name] = this.value || '';
1149 }
1150 });
1151 return o;
1152 };
1153