PluginProbe
CookieAdmin – Cookie Consent Banner / 1.2.6
CookieAdmin – Cookie Consent Banner v1.2.6
1.2.6 1.2.5 1.2.4 1.2.3 1.2.2 1.2.1 1.2.0 1.1.9 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 All 26 releases
cookieadmin / assets / js / cookie.js

cookie.js in CookieAdmin – Cookie Consent Banner 1.2.6, at assets/js/cookie.js

771 lines 28.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // This file is a part of the admin side of CookieAdmin
2
3 jQuery(document).ready(function($){
4
5 var law = '';
6 var mediaUploader;
7
8 // Handling the General Setting position toggles
9 function toggle_type_options(){
10 let jEle = $(this),
11 type_value = $(this).val();
12
13 if(!type_value){
14 return;
15 }
16
17 let box_layout = $('.cookieadmin_box_layout').closest('label'),
18 footer_layout = $('.cookieadmin_footer_layout').closest('label');
19
20 $('input[name=cookieadmin_position]').prop('checked', false);
21
22 switch(type_value){
23 case 'footer':
24 $('.consent-position').slideDown();
25 $('.consent-modal-layout').slideDown();
26 box_layout.hide();
27 footer_layout.show();
28 break;
29
30 case 'popup':
31 $('.consent-position').slideUp();
32 $('.consent-modal-layout').slideUp();
33 break;
34
35 default:
36 $('.consent-position').slideDown();
37 $('.consent-modal-layout').slideDown();
38 footer_layout.hide();
39 box_layout.show();
40 break;
41 }
42 }
43
44 $('input[name="cookieadmin_layout"]').on('change', toggle_type_options);
45
46 setTimeout( function(){
47 $('.updated, .error').not('.no-autohide').fadeOut('slow');
48 }, 5000);
49
50 //==== Notice Section Preview Live Change
51
52 $('#cookieadmin_notice_title_layout').on('input', function () {
53 const titleValue = $(this).val().trim();
54 $('#cookieadmin_notice_title').text(titleValue);
55 });
56
57 $('#cookieadmin_notice_layout').on('input', function () {
58 const detailValue = $(this).val().trim();
59 $('#cookieadmin_notice').text(detailValue);
60 });
61
62 $('#cookieadmin_consent_inside_bg_color_box').on('input', function () {
63 const color = $(this).val().trim();
64 $('.cookieadmin_consent_inside').css('background-color', color);
65 });
66
67 $('#cookieadmin_consent_inside_border_color_box').on('input', function () {
68 const color = $(this).val().trim();
69 $('.cookieadmin_consent_inside').css('border', "1px solid" + color);
70 });
71
72 $('#cookieadmin_notice_color_box').on('input', function () {
73 const color = $(this).val().trim();
74 $('#cookieadmin_notice').css('color', color);
75 });
76
77 $('#cookieadmin_notice_title_color_box').on('input', function () {
78 const color = $(this).val().trim();
79 $('#cookieadmin_notice_title').css('color', color);
80 });
81
82 //====== Notice Buttons Preview
83
84 $('#cookieadmin_customize_btn').on('input', function () {
85 const textData = $(this).val().trim();
86 $('#cookieadmin_customize_button').text(textData);
87 $('#cookieadmin_customize_modal_button').text(textData);
88 });
89
90 $('#cookieadmin_reject_btn').on('input', function () {
91 const textData = $(this).val().trim();
92 $('#cookieadmin_reject_button').text(textData);
93 $('#cookieadmin_reject_modal_button').text(textData);
94 });
95
96 $('#cookieadmin_accept_btn').on('input', function () {
97 const textData = $(this).val().trim();
98 $('#cookieadmin_accept_button').text(textData);
99 $('#cookieadmin_accept_modal_button').text(textData);
100 });
101
102 $('#cookieadmin_save_btn').on('input', function () {
103 const textData = $(this).val().trim();
104 $('#cookieadmin_prf_modal_button').text(textData);
105 });
106
107 $('#cookieadmin_customize_btn_color_box').on('input', function () {
108 const color = $(this).val().trim();
109 $('#cookieadmin_customize_button').css('color', color);
110 $('#cookieadmin_customize_modal_button').css('color', color);
111 });
112
113 $('#cookieadmin_accept_btn_color_box').on('input', function () {
114 const color = $(this).val().trim();
115 $('#cookieadmin_accept_button').css('color', color);
116 $('#cookieadmin_accept_modal_button').css('color', color);
117 });
118
119 $('#cookieadmin_reject_btn_color_box').on('input', function () {
120 const color = $(this).val().trim();
121 $('#cookieadmin_reject_button').css('color', color);
122 $('#cookieadmin_reject_modal_button').css('color', color);
123 });
124
125 $('#cookieadmin_save_btn_color_box').on('input', function () {
126 const color = $(this).val().trim();
127 $('#cookieadmin_prf_modal_button').css('color', color);
128 });
129
130 $('#cookieadmin_customize_btn_bg_color_box').on('input', function () {
131 const color = $(this).val().trim();
132 $('#cookieadmin_customize_button').css('background-color', color);
133 $('#cookieadmin_customize_modal_button').css('background-color', color);
134 });
135
136 $('#cookieadmin_accept_btn_bg_color_box').on('input', function () {
137 const color = $(this).val().trim();
138 $('#cookieadmin_accept_button').css('background-color', color);
139 $('#cookieadmin_accept_modal_button').css('background-color', color);
140
141 });
142
143 $('#cookieadmin_reject_btn_bg_color_box').on('input', function () {
144 const color = $(this).val().trim();
145 $('#cookieadmin_reject_button').css('background-color', color);
146 $('#cookieadmin_reject_modal_button').css('background-color', color);
147 });
148
149 $('#cookieadmin_save_btn_bg_color_box').on('input', function () {
150 const color = $(this).val().trim();
151 $('#cookieadmin_prf_modal_button').css('background-color', color);
152 });
153
154 //======= Preference Section Preview
155
156 $('#cookieadmin_preference_title_layout').on('input', function () {
157 const titleValue = $(this).val().trim();
158 $('#cookieadmin_preference_title').text(titleValue);
159 });
160
161 $('#cookieadmin_preference_layout').on('input', function () {
162 const detailValue = $(this).val().trim();
163 $('#cookieadmin_preference').text(detailValue);
164 });
165
166 $("#cookieadmin_cookie_modal_bg_color_box").on('input', function () {
167 const color = $(this).val().trim();
168 $(".cookieadmin_cookie_modal").css('background-color', color);
169 });
170
171 $("#cookieadmin_cookie_modal_border_color_box").on('input', function () {
172 const color = $(this).val().trim();
173 $(".cookieadmin_cookie_modal").css('border', "1px solid" + color);
174 });
175
176 $("#cookieadmin_details_wrapper_color_box").on('input', function () {
177 const color = $(this).val().trim();
178 $(".cookieadmin_details_wrapper").css('color', color);
179 });
180
181 $("#cookieadmin_preference_title_color_box").on('input', function () {
182 const color = $(this).val().trim();
183 $("#cookieadmin_preference_title").css('color', color);
184 });
185
186 //set default or set values in input and preview on page load.
187 for(law in cookieadmin_policy){
188
189 law = cookieadmin_policy[cookieadmin_policy["set"]];
190
191 $("#cookieadmin_consent_type").find("#"+cookieadmin_policy["set"]).attr("selected", true);
192
193 $("#cookieadmin_consent_expiry").val(law.cookieadmin_days);
194 $("#cookieadmin_layout_"+law.cookieadmin_layout).prop("checked", true).trigger("change");
195
196 if(!!law.cookieadmin_position){
197 $("#cookieadmin_position_"+law.cookieadmin_position).prop("checked", true);
198 }else{
199 $(".consent-position").closest('label').hide();
200 }
201 $("#cookieadmin_modal_" + law.cookieadmin_modal).prop("checked", true);
202 $(".cookieadmin_cookie_modal").addClass("cookieadmin_" + law.cookieadmin_modal);
203
204 $(".cookieadmin_consent_inside").css('background-color', law.cookieadmin_consent_inside_bg_color);
205 $("#cookieadmin_notice_title").css('color', law.cookieadmin_notice_title_color);
206 $("#cookieadmin_notice").css('color', law.cookieadmin_notice_color);
207 $(".cookieadmin_consent_inside").css('border', "1px solid" + law.cookieadmin_consent_inside_border_color);
208
209 $(".cookieadmin_cookie_modal").css('background-color', law.cookieadmin_cookie_modal_bg_color);
210 $("#cookieadmin_preference_title").css('color', law.cookieadmin_preference_title_color);
211 $(".cookieadmin_details_wrapper").css('color', law.cookieadmin_details_wrapper_color);
212 $(".cookieadmin_cookie_modal").css('border', "1px solid" + law.cookieadmin_cookie_modal_border_color);
213
214 // $("#cookieadmin_notice_title_layout").val(law.cookieadmin_notice_title);
215 $("#cookieadmin_notice_title").html(law.cookieadmin_notice_title);
216
217 // $("#cookieadmin_notice_layout").val(law.cookieadmin_notice);
218 $("#cookieadmin_notice").html(law.cookieadmin_notice);
219
220 // $("#cookieadmin_preference_title_layout").val(law.cookieadmin_preference_title);
221 $("#cookieadmin_preference_title").html(law.cookieadmin_preference_title);
222
223 // $("#cookieadmin_preference_layout").val(law.cookieadmin_preference);
224 $("#cookieadmin_preference").html(law.cookieadmin_preference);
225
226 $(".cookieadmin_customize_btn").text(law.cookieadmin_customize_btn);
227 $(".cookieadmin_customize_btn").css('background-color', $("#cookieadmin_customize_btn_bg_color").val());
228 $(".cookieadmin_customize_btn").css('color', $("#cookieadmin_customize_btn_color").val());
229
230 $(".cookieadmin_reject_btn").text(law.cookieadmin_reject_btn);
231 $(".cookieadmin_reject_btn").css('background-color', $("#cookieadmin_reject_btn_bg_color").val());
232 $(".cookieadmin_reject_btn").css('color', $("#cookieadmin_reject_btn_color").val());
233
234 $(".cookieadmin_accept_btn").text(law.cookieadmin_accept_btn);
235 $(".cookieadmin_accept_btn").css('background-color', $("#cookieadmin_accept_btn_bg_color").val());
236 $(".cookieadmin_accept_btn").css('color', $("#cookieadmin_accept_btn_color").val());
237
238 $(".cookieadmin_save_btn").text(law.cookieadmin_save_btn);
239 $(".cookieadmin_save_btn").css('background-color', $("#cookieadmin_save_btn_bg_color").val());
240 $(".cookieadmin_save_btn").css('color', $("#cookieadmin_save_btn_color").val());
241
242 $(".act").css('color', law.cookieadmin_links_color);
243
244 const sliders = $("#cookieadmin_wrapper .cookieadmin_slider");
245 $(sliders[0]).css('background-color', law.cookieadmin_slider_off_bg_color);
246 $(sliders[1]).css('background-color', law.cookieadmin_slider_off_bg_color);
247 $(sliders[2]).css('background-color', law.cookieadmin_slider_off_bg_color);
248
249 //Also set layout of consents
250 if(!!law.cookieadmin_position){
251 $.each(law.cookieadmin_position.split("_"), function(i,v){
252 $(".cookieadmin_law_container").addClass("cookieadmin_" + v);
253 });
254 }
255
256 if(!!law.cookieadmin_layout){
257 $.each(law.cookieadmin_layout.split("_"), function(i,v){
258 $(".cookieadmin_law_container").addClass("cookieadmin_" + v);
259 });
260 }
261
262 cookieadmin_policy['set'] == 'cookieadmin_gdpr' ? $(".setting-prior").show() : $(".setting-prior").hide();
263
264 break;
265 }
266
267 function show_modal(){
268 if($(".cookieadmin_cookie_modal").css("display") === "none"){
269 $(".cookieadmin_cookie_modal").css("display", "flex");
270 }
271 else{
272 $(".cookieadmin_cookie_modal").css("display", "none");
273 }
274 }
275
276 function cookieadminShowPreview(){
277 $('#cookieadmin_show_preview').toggle();
278 $('.cookieadmin_law_container').toggle();
279 $('#cookieadmin_hide_preview').toggle();
280 }
281 $('#cookieadmin_show_preview, #cookieadmin_hide_preview').on('click', cookieadminShowPreview);
282
283 $('.cookieadmin_customize_btn').on('click', function(){
284 show_modal();
285 });
286
287 $(".cookieadmin_close_pref").on("click", function(){
288 $(".cookieadmin_cookie_modal").hide();
289 });
290
291 function cookieadminChangeLaw(){
292
293 var law = $("#cookieadmin_consent_type").find(":selected").attr("name");
294
295 $("#cookieadmin_consent_expiry").val(cookieadmin_policy[law].cookieadmin_days);
296
297 $("[id^=cookieadmin_layout_]").prop("checked", false);
298 $("#cookieadmin_layout_"+cookieadmin_policy[law].cookieadmin_layout).prop("checked", true);
299
300 if(cookieadmin_policy[law].cookieadmin_layout == "box"){
301 $(".cookieadmin_footer_layout").closest('label').hide();
302 $(".cookieadmin_box_layout").closest('label').show();
303 }else{
304 $(".cookieadmin_footer_layout").closest('label').show();
305 $(".cookieadmin_box_layout").closest('label').hide();
306 }
307
308 $("[id^=cookieadmin_position_]").prop("checked", false);
309 $("#cookieadmin_position_"+cookieadmin_policy[law].cookieadmin_position).prop("checked", true);
310
311 $("[id^=cookieadmin_modal_]").prop("checked", false);
312 $("#cookieadmin_modal_"+cookieadmin_policy[law].cookieadmin_modal).prop("checked", true);
313
314 $("#cookieadmin_notice_title_layout").val(cookieadmin_policy[law].cookieadmin_notice_title);
315 $("#cookieadmin_notice_layout").val(cookieadmin_policy[law].cookieadmin_notice);
316
317 $("#cookieadmin_notice_title_color_box").val(cookieadmin_policy[law].cookieadmin_notice_title_color);
318 $("#cookieadmin_notice_title_color").val(cookieadmin_policy[law].cookieadmin_notice_title_color);
319 $("#cookieadmin_notice_color_box").val(cookieadmin_policy[law].cookieadmin_notice_color);
320 $("#cookieadmin_notice_color").val(cookieadmin_policy[law].cookieadmin_notice_color);
321 $("#cookieadmin_consent_inside_bg_color_box").val(cookieadmin_policy[law].cookieadmin_consent_inside_bg_color);
322 $("#cookieadmin_consent_inside_bg_color").val(cookieadmin_policy[law].cookieadmin_consent_inside_bg_color);
323 $("#cookieadmin_consent_inside_border_color_box").val(cookieadmin_policy[law].cookieadmin_consent_inside_border_color);
324 $("#cookieadmin_consent_inside_border_color").val(cookieadmin_policy[law].cookieadmin_consent_inside_border_color);
325
326 $("#cookieadmin_customize_btn").val(cookieadmin_policy[law].cookieadmin_customize_btn);
327 $("#cookieadmin_customize_btn_color_box").val(cookieadmin_policy[law].cookieadmin_customize_btn_color);
328 $("#cookieadmin_customize_btn_color").val(cookieadmin_policy[law].cookieadmin_customize_btn_color);
329 $("#cookieadmin_customize_btn_bg_color_box").val(cookieadmin_policy[law].cookieadmin_customize_btn_bg_color);
330 $("#cookieadmin_customize_btn_bg_color").val(cookieadmin_policy[law].cookieadmin_customize_btn_bg_color);
331
332 $("#cookieadmin_reject_btn").val(cookieadmin_policy[law].cookieadmin_reject_btn);
333 $("#cookieadmin_reject_btn_color_box").val(cookieadmin_policy[law].cookieadmin_reject_btn_color);
334 $("#cookieadmin_reject_btn_color").val(cookieadmin_policy[law].cookieadmin_reject_btn_color);
335 $("#cookieadmin_reject_btn_bg_color_box").val(cookieadmin_policy[law].cookieadmin_reject_btn_bg_color);
336 $("#cookieadmin_reject_btn_bg_color").val(cookieadmin_policy[law].cookieadmin_reject_btn_bg_color);
337
338 $("#cookieadmin_accept_btn").val(cookieadmin_policy[law].cookieadmin_accept_btn);
339 $("#cookieadmin_accept_btn_color_box").val(cookieadmin_policy[law].cookieadmin_accept_btn_color);
340 $("#cookieadmin_accept_btn_color").val(cookieadmin_policy[law].cookieadmin_accept_btn_color);
341 $("#cookieadmin_accept_btn_bg_color_box").val(cookieadmin_policy[law].cookieadmin_accept_btn_bg_color);
342 $("#cookieadmin_accept_btn_bg_color").val(cookieadmin_policy[law].cookieadmin_accept_btn_bg_color);
343
344 $("#cookieadmin_save_btn").val(cookieadmin_policy[law].cookieadmin_save_btn);
345 $("#cookieadmin_save_btn_color_box").val(cookieadmin_policy[law].cookieadmin_save_btn_color);
346 $("#cookieadmin_save_btn_color").val(cookieadmin_policy[law].cookieadmin_save_btn_color);
347 $("#cookieadmin_save_btn_bg_color_box").val(cookieadmin_policy[law].cookieadmin_save_btn_bg_color);
348 $("#cookieadmin_save_btn_bg_color").val(cookieadmin_policy[law].cookieadmin_save_btn_bg_color);
349
350 $("#cookieadmin_preference_title_layout").val(cookieadmin_policy[law].cookieadmin_preference_title);
351 $("#cookieadmin_preference_layout").val(cookieadmin_policy[law].cookieadmin_preference);
352
353 $("#cookieadmin_preference_title_color_box").val(cookieadmin_policy[law].cookieadmin_preference_title_color);
354 $("#cookieadmin_preference_title_color").val(cookieadmin_policy[law].cookieadmin_preference_title_color);
355 $("#cookieadmin_details_wrapper_color_box").val(cookieadmin_policy[law].cookieadmin_details_wrapper_color);
356 $("#cookieadmin_details_wrapper_color").val(cookieadmin_policy[law].cookieadmin_details_wrapper_color);
357 $("#cookieadmin_cookie_modal_bg_color_box").val(cookieadmin_policy[law].cookieadmin_cookie_modal_bg_color);
358 $("#cookieadmin_cookie_modal_bg_color").val(cookieadmin_policy[law].cookieadmin_cookie_modal_bg_color);
359 $("#cookieadmin_cookie_modal_border_color_box").val(cookieadmin_policy[law].cookieadmin_cookie_modal_border_color);
360 $("#cookieadmin_cookie_modal_border_color").val(cookieadmin_policy[law].cookieadmin_cookie_modal_border_color);
361
362 $("#cookieadmin_slider_on_bg_color_box").val(cookieadmin_policy[law].cookieadmin_slider_on_bg_color);
363 $("#cookieadmin_slider_on_bg_color").val(cookieadmin_policy[law].cookieadmin_slider_on_bg_color);
364 $("#cookieadmin_slider_off_bg_color_box").val(cookieadmin_policy[law].cookieadmin_slider_off_bg_color);
365 $("#cookieadmin_slider_off_bg_color").val(cookieadmin_policy[law].cookieadmin_slider_off_bg_color);
366
367 $("#cookieadmin_links_color_box").val(cookieadmin_policy[law].cookieadmin_links_color);
368 $("#cookieadmin_links_color").val(cookieadmin_policy[law].cookieadmin_links_color);
369
370 law == 'cookieadmin_gdpr' ? $(".setting-prior").show() : $(".setting-prior").hide();
371 }
372 $("#cookieadmin_consent_type").on("change", cookieadminChangeLaw);
373
374 function cookieadminSubmitConsent(e){
375 var checked = false;
376
377 if (!$("input[name=cookieadmin_position]:checked").length && !$("#cookieadmin_layout_popup").prop("checked")) {
378 alert('Please select a notice position.');
379 e.preventDefault(); // Prevent form submission
380 }
381 }
382 $("#consent_submenu").submit(cookieadminSubmitConsent);
383
384 function cookieadminPreloadCookies(){
385 let notice = $('.cookieadmin-collapsible-notice');
386
387 if($('[name="cookieadmin_preload[]"]:checked').length > 1){
388 if(notice.css('display') == 'none'){
389 notice.show();
390 }
391 } else {
392 if(notice.css('display') !== 'none'){
393 notice.hide();
394 }
395 }
396 }
397 $('[name="cookieadmin_preload[]"]').on('click', cookieadminPreloadCookies);
398
399 function cookieadminScanCookies(){
400
401 let cookieadmin_btn_val = $(this).prop('value');
402 var this_btn = $(this);
403 this_btn.prop("disabled", true).prop('value', 'Scanning...');
404
405 $.ajax({
406 url: cookieadmin_policy.admin_url,
407 method: "POST",
408 data : {
409 action : 'cookieadmin_ajax_handler',
410 cookieadmin_act : 'scan_cookies',
411 cookieadmin_security : cookieadmin_policy.cookieadmin_nonce,
412 },
413 success: function(result){
414
415 if(result.success){
416 if(typeof cookieadmin_pro_policy === 'object'){
417 alert(cookieadmin_pro_policy.lang.background_scan);
418 }else{
419 alert(cookieadmin_policy.lang.scan_completed);
420 window.location.reload();
421 }
422 }else{
423 alert(result.message);
424 }
425
426 },
427 error: function(xhr, status, error) {
428 console.log('CookieAdmin AJAX Error:', status, error);
429 console.log('CookieAdmin response: ' + xhr.responseText); // Check the error message
430 alert("Request failed: " + error);
431 },
432 complete: function() {
433 this_btn.prop("disabled", false).prop("value", cookieadmin_btn_val);
434 }
435 });
436 }
437 $(".cookieadmin-scan").on("click", cookieadminScanCookies);
438
439 function cookieadminSaveCookie(){
440
441 $('#cookieadmin-message').removeClass().addClass('spinner is-active').text('').css('height','auto');
442 $(this).prop("disabled", true);
443
444 //set 0 to add real id to delete
445 cookie_id = $(this).attr("cookieadmin_cookie_id");
446 // Get the patterns
447 const patterns = $("#cookieadmin-dialog-cookie-patterns").val();
448
449 let cookie_info = {
450 name: $("#cookieadmin-dialog-cookie-name").val(),
451 id: cookie_id,
452 description: $("#cookieadmin-dialog-cookie-desc").val(),
453 duration: $("#cookieadmin-dialog-cookie-duration").val(),
454 type: $("#cookieadmin-dialog-cookie-category").val()
455 };
456
457 if(patterns){
458 cookie_info.patterns = patterns;
459 }
460
461 $.each(cookie_info, function (i, val){
462 if(!val){
463 cookie_info = null;
464 return false;
465 }
466 });
467
468 if(!cookie_info){
469 $(this).prop("disabled", false);
470 $('#cookieadmin-message').removeClass().addClass('cookieadmin-error-message').text('Please fill all the fields');
471 return false;
472 }
473
474 // Used to call add cookie, in the Pro file.
475 if(cookie_id == 0 && typeof cookieadminProSaveCookie === 'function'){
476 cookieadminProSaveCookie(cookie_info);
477 return;
478 }
479
480 $.ajax({
481 url: cookieadmin_policy.admin_url,
482 method: "POST",
483 data : {
484 action : 'cookieadmin_ajax_handler',
485 cookieadmin_act : 'cookieadmin-edit-cookie',
486 cookie_info : cookie_info,
487 cookieadmin_security : cookieadmin_policy.cookieadmin_nonce,
488 },
489 success: function(result){
490
491 if(result.success){
492 cookieadminAddCookieToTable(cookie_info);
493 $('#cookieadmin-message').removeClass().addClass('cookieadmin-success-message').text(result.message);
494 }else{
495 alert(result.message);
496 }
497 },
498 error: function(xhr, status, error) {
499 console.log('CookieAdmin AJAX Error:', status, error);
500 console.log('CookieAdmin response: ' + xhr.responseText); // Check the error message
501 alert("Request failed: " + error);
502 }
503 });
504 $(this).prop("disabled", false);
505 }
506 $("#cookieadmin_dialog_save_btn").on("click", cookieadminSaveCookie);
507
508 $("input[type=color]").on("input", function(){
509 elemt = $(this).attr("id").replace("_box", "");
510 $("#"+elemt).val($(this).val());
511
512 // Updating the background color of the reconsent icon list
513 if(elemt === 'cookieadmin_re_consent_bg_color'){
514 $('.cookieadmin-reconsent-icon').css('background-color', $(this).val());
515 }
516 });
517
518
519 function cookieadminDeleteCookie(){
520
521 if(confirm("Are you sure you want to delete ?")){
522
523 cookie_raw_id = $(this).attr("id").replace("delete_", "");
524 var row = $(this).parents("tr")
525
526 $.ajax({
527 url: cookieadmin_policy.admin_url,
528 method: "POST",
529 data : {
530 action : 'cookieadmin_ajax_handler',
531 cookieadmin_act : 'cookieadmin-delete-cookie',
532 cookie_raw_id : cookie_raw_id,
533 cookieadmin_security : cookieadmin_policy.cookieadmin_nonce,
534 },
535 success: function(result){
536 if (result.success) {
537 row.remove();
538 delete categorized_cookies[cookie_raw_id];
539 }else{
540 alert(result.message);
541 }
542 },
543 error: function(xhr, status, error) {
544 console.log('CookieAdmin AJAX Error:', status, error);
545 console.log('CookieAdmin response: ' + xhr.responseText); // Check the error message
546 alert("Request failed: " + error);
547 }
548 });
549 }
550 }
551 $('.cookieadmin-metabox-holder').on("click", ".cookieadmin_delete_icon", cookieadminDeleteCookie);
552
553 function cookieadminOpenCookieDialog(){
554
555 const modal = document.getElementById('edit-cookie-modal');
556
557 if(modal.classList.contains("active")){
558 modal.classList.remove('active');
559 }else{
560 modal.classList.add('active');
561
562 if($(this).hasClass('cookieadmin-add-cookie')){
563 $("#cookieadmin_dialog_save_btn").attr("cookieadmin_cookie_id", 0);
564 $('.cookieadmin_modal-header').children()[0].innerHTML = 'Add Cookie';
565 $('.cookieadmin_modal-container').find('input,textarea,select').val('');
566 }else{
567
568 $('.cookieadmin_modal-header').children()[0].innerHTML = 'Edit Cookie';
569 var cookie_id = $(this).attr("id").replace("edit_", "");
570
571 $("#cookieadmin_dialog_save_btn").attr("cookieadmin_cookie_id", cookie_id);
572 $("#cookieadmin-dialog-cookie-name").val(categorized_cookies[cookie_id]['cookie_name']);
573 $("#cookieadmin-dialog-cookie-desc").val(categorized_cookies[cookie_id]['description']);
574 $("#cookieadmin-dialog-cookie-duration").val(categorized_cookies[cookie_id]['expires']);
575 $("#cookieadmin-dialog-cookie-patterns").val(categorized_cookies[cookie_id]['patterns']);
576 if(!!categorized_cookies[cookie_id]['category']){
577 $("#cookieadmin-dialog-cookie-category").val(categorized_cookies[cookie_id]['category']);
578 }else{
579 $("#cookieadmin-dialog-cookie-category").val("unknown");
580 }
581 }
582
583 $('.cookieadmin-metabox-holder').on('mousedown.cookieadmin-close-dialog2', function(e){
584 if ( !$(".cookieadmin_modal-container").is(e.target) && $(".cookieadmin_modal-container").has(e.target).length === 0 && !$(".cookieadmin_modal-container").is(e.target) && $(".cookieadmin_modal-container").has(e.target).length === 0) {
585 modal.classList.remove('active');
586 $('#cookieadmin-message').removeClass().addClass('cookieadmin-success-message').text('');
587 $('.cookieadmin-metabox-holder').off('mousedown.cookieadmin-close-dialog2');
588 }
589 });
590 }
591 }
592 $(document).on("click", ".cookieadmin_edit_icon, .cookieadmin_dialog_modal_close_btn, .cookieadmin-add-cookie", cookieadminOpenCookieDialog);
593
594
595 function cookieadminExpandCollapseCookiesList() {
596 var $tbody = $(this).closest('tbody');
597 var $rows = $tbody.find('tr:not(:first-child)');
598
599 if ($rows.is(':visible')) {
600 $rows.slideUp();
601 $tbody.addClass('collapsed');
602 } else {
603 $rows.slideDown();
604 $tbody.removeClass('collapsed');
605 }
606 }
607 $('.cookieadmin-metabox-holder').on('click', '.cookieadmin-cookie-categorized tbody > tr:first-child', cookieadminExpandCollapseCookiesList);
608
609 function cookieadminUploadReconsentIcon(e){
610
611 e.preventDefault();
612
613 if(mediaUploader){
614 mediaUploader.open();
615 return;
616 }
617
618 mediaUploader = wp.media({
619 title: 'Select or Upload Icon',
620 button: {text: 'Use this icon'},
621 multiple: false,
622 library: {type: 'image'}
623 });
624
625 mediaUploader.on('select', function() {
626 const attachment = mediaUploader.state().get('selection').first().toJSON();
627 $('#cookieadmin_reconsent_img_url').val(attachment.url);
628 });
629
630 mediaUploader.open();
631
632 }
633 $('.cookieadmin-metabox-holder').on('click', '#cookieadmin_upload_icon_btn', cookieadminUploadReconsentIcon);
634
635 // Content Blocking Toggle
636 $("#cookieadmin_content_blocking").on("change", function(){
637 if($(this).prop("checked")){
638 $(".cookieadmin-content-blocking-options").fadeIn(250);
639 }else{
640 $(".cookieadmin-content-blocking-options").fadeOut(250);
641 }
642 });
643
644 // Tooltip
645 let cookieadminToolTip;
646
647 function cookieadminCreateTooltip(){
648 cookieadminToolTip = $('<div>', {
649 class: 'cookieadmin-tooltip'
650 }).appendTo('body');
651 }
652
653 $('.cookieadmin-tooltip-box').on('mouseenter', function(e){
654
655 if(!cookieadminToolTip){
656 cookieadminCreateTooltip();
657 }
658
659 var tip = $(this).attr('data-tip') || '';
660 cookieadminToolTip.text(tip).css('opacity', 1);
661
662 }).on('mousemove', function(e){
663
664 if(!cookieadminToolTip){
665 return;
666 }
667
668 var offset = 12;
669 var tooltipRect = cookieadminToolTip[0].getBoundingClientRect();
670
671 var top = e.clientY - tooltipRect.height - offset;
672 var left = e.clientX + offset;
673
674 // Flip below if not enough space above
675 if(top < 8){
676 top = e.clientY + offset;
677 }
678
679 // Prevent right overflow
680 if(left + tooltipRect.width > window.innerWidth - 8){
681 left = e.clientX - tooltipRect.width - offset;
682 }
683
684 cookieadminToolTip.css({
685 top: top + 'px',
686 left: left + 'px'
687 });
688 })
689 .on('mouseleave', function(){
690
691 if(!cookieadminToolTip){
692 return;
693 }
694
695 cookieadminToolTip.css('opacity', 0);
696 });
697
698 // Recommended plugins install/activate handler
699 $(document).on('click', '.cookieadmin-plugin-install-btn, .cookieadmin-plugin-activate-btn', function(e){
700 e.preventDefault();
701 var $btn = $(this);
702 var slug = $btn.data('slug');
703 var is_install = $btn.hasClass('cookieadmin-plugin-install-btn');
704 var originalText = $btn.text();
705
706 $btn.text(cookieadmin_policy.lang.processing).prop('disabled', true);
707
708 $.ajax({
709 url: ajaxurl,
710 method: 'POST',
711 data: {
712 action: 'cookieadmin_ajax_handler',
713 cookieadmin_act: is_install ? 'install_recommended_plugin' : 'activate_recommended_plugin',
714 cookieadmin_security: cookieadmin_policy.cookieadmin_nonce,
715 plugin: slug,
716 },
717 dataType: 'json',
718 success: function(data){
719 if(data.success){
720 $btn.replaceWith('<span class="cookieadmin-badge cookieadmin-success">' + cookieadmin_policy.lang.active + '</span>');
721 }else{
722 $btn.text(originalText).prop('disabled', false);
723 alert(data.data && data.data.message ? data.data.message : cookieadmin_policy.lang.install_failed);
724 }
725 },
726 error: function(){
727 $btn.text(originalText).prop('disabled', false);
728 alert(cookieadmin_policy.lang.error_occurred);
729 },
730 });
731 });
732
733
734 });
735
736 function cookieadminAddCookieToTable(cookie_info){
737
738 var row = '';
739
740 categorized_cookies[cookie_info.id] = !categorized_cookies[cookie_info.id] ? {} : categorized_cookies[cookie_info.id];
741
742 categorized_cookies[cookie_info.id]['id'] = cookie_info.id;
743 categorized_cookies[cookie_info.id]['cookie_name'] = cookie_info.name;
744 categorized_cookies[cookie_info.id]['description'] = cookie_info.description;
745 categorized_cookies[cookie_info.id]['expires'] = cookie_info.duration;
746 categorized_cookies[cookie_info.id]['category'] = cookie_info.type;
747 categorized_cookies[cookie_info.id]['patterns'] = cookie_info.patterns;
748
749 if(cookie_info.duration > 0){
750 cookie_info.duration += ' ' + cookieadmin_policy.lang.days;
751 }else{
752 cookie_info.duration = cookieadmin_policy.lang.session;
753 }
754
755 row = '<tr>';
756 row += '<td>' + cookie_info.name + '</td>';
757 row += '<td>' + cookie_info.description + '</td>';
758 row += '<td>' + cookie_info.duration + '</td>';
759 row += '<td> <span class="dashicons dashicons-edit cookieadmin_edit_icon" id="edit_'+cookie_info.id+'"></span> <span class="dashicons dashicons-trash cookieadmin_delete_icon" id="edit_'+cookie_info.id+'"></span> </td>';
760 row += '</tr>';
761
762 jQuery("#edit_"+cookie_info.id).parents("tr").remove();
763 tbody = "#" + cookie_info.type.toLowerCase() + "_tbody";
764 jQuery(tbody).find('.cookieadmin-empty-row').remove();
765 jQuery(tbody).append(row);
766
767 if(!categorized_cookies[cookie_id]){
768 jQuery('.cookieadmin_modal-container').find('input,textarea,select').val('');
769 }
770 }
771