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