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
← All changes | assets/js/cookie.js +361 -211 1.0.4 → 1.2.6 View file →
@@ -1,45 +1,54 @@
1 +// This file is a part of the admin side of CookieAdmin
2 +
1 3 jQuery(document).ready(function($){
2 4
3 5 var law = '';
6 + var mediaUploader;
4 7
5 - $(".cookieadmin_showmore").on("click", function(){
6 - if($(".cookieadmin_showmore").html().includes("more")){
7 - $(".cookieadmin_preference").height("auto");
8 - $(this).html("Show less");
9 - }else{
10 - $(".cookieadmin_preference").height("");
11 - $(this).html("Show more");
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;
12 15 }
13 - });
14 -
15 - $("#cookieadmin_layout_footer").on("change", function(){
16 - $("input[name=cookieadmin_position]").prop("checked", false);
17 - $(".consent-position").slideDown();
18 - $(".cookieadmin_foter_layout").fadeIn(800);
19 - $(".cookieadmin_box_layout").hide();
20 - $(".consent-modal-layout").show();
21 - });
22 -
23 - $("#cookieadmin_layout_box").on("change", function(){
24 - $("input[name=cookieadmin_position]").prop("checked", false);
25 - $(".consent-position").slideDown();
26 - $(".cookieadmin_foter_layout").hide();
27 - $(".cookieadmin_box_layout").fadeIn(800);
28 - $(".consent-modal-layout").slideDown();
29 - });
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 + }
30 43
31 - $("#cookieadmin_layout_popup").on("change", function(){
32 - $("input[name=cookieadmin_position]").prop("checked", false);
33 - $(".consent-position").slideUp();
34 - $(".consent-modal-layout").slideUp();
35 - });
44 + $('input[name="cookieadmin_layout"]').on('change', toggle_type_options);
36 45
37 46 setTimeout( function(){
38 47 $('.updated, .error').not('.no-autohide').fadeOut('slow');
39 48 }, 5000);
40 49
41 - //==== Notice Section Preview
50 + //==== Notice Section Preview Live Change
42 51
43 52 $('#cookieadmin_notice_title_layout').on('input', function () {
44 53 const titleValue = $(this).val().trim();
45 54 $('#cookieadmin_notice_title').text(titleValue);
@@ -186,9 +195,9 @@
186 195
187 196 if(!!law.cookieadmin_position){
188 197 $("#cookieadmin_position_"+law.cookieadmin_position).prop("checked", true);
189 198 }else{
190 - $(".consent-position").hide();
199 + $(".consent-position").closest('label').hide();
191 200 }
192 201 $("#cookieadmin_modal_" + law.cookieadmin_modal).prop("checked", true);
193 202 $(".cookieadmin_cookie_modal").addClass("cookieadmin_" + law.cookieadmin_modal);
194 203
@@ -228,9 +237,16 @@
228 237
229 238 $(".cookieadmin_save_btn").text(law.cookieadmin_save_btn);
230 239 $(".cookieadmin_save_btn").css('background-color', $("#cookieadmin_save_btn_bg_color").val());
231 240 $(".cookieadmin_save_btn").css('color', $("#cookieadmin_save_btn_color").val());
232 -
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 +
233 249 //Also set layout of consents
234 250 if(!!law.cookieadmin_position){
235 251 $.each(law.cookieadmin_position.split("_"), function(i,v){
236 252 $(".cookieadmin_law_container").addClass("cookieadmin_" + v);
@@ -256,17 +272,16 @@
256 272 $(".cookieadmin_cookie_modal").css("display", "none");
257 273 }
258 274 }
259 275
260 - $("#cookieadmin_show_preview").on("click", function(){
261 - if($("#cookieadmin_layout_popup").prop("checked")){
262 - show_modal();
263 - }else{
264 - $(".cookieadmin_law_container").toggle();
265 - }
266 - });
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);
267 282
268 - $(".cookieadmin_customize_btn").on("click", function(){
283 + $('.cookieadmin_customize_btn').on('click', function(){
269 284 show_modal();
270 285 });
271 286
272 287 $(".cookieadmin_close_pref").on("click", function(){
@@ -272,9 +287,9 @@
272 287 $(".cookieadmin_close_pref").on("click", function(){
273 288 $(".cookieadmin_cookie_modal").hide();
274 289 });
275 290
276 - $("#cookieadmin_consent_type").on("change", function(){
291 + function cookieadminChangeLaw(){
277 292
278 293 var law = $("#cookieadmin_consent_type").find(":selected").attr("name");
279 294
280 295 $("#cookieadmin_consent_expiry").val(cookieadmin_policy[law].cookieadmin_days);
@@ -282,13 +297,13 @@
282 297 $("[id^=cookieadmin_layout_]").prop("checked", false);
283 298 $("#cookieadmin_layout_"+cookieadmin_policy[law].cookieadmin_layout).prop("checked", true);
284 299
285 300 if(cookieadmin_policy[law].cookieadmin_layout == "box"){
286 - $(".cookieadmin_foter_layout").hide();
287 - $(".cookieadmin_box_layout").show();
301 + $(".cookieadmin_footer_layout").closest('label').hide();
302 + $(".cookieadmin_box_layout").closest('label').show();
288 303 }else{
289 - $(".cookieadmin_foter_layout").show();
290 - $(".cookieadmin_box_layout").hide();
304 + $(".cookieadmin_footer_layout").closest('label').show();
305 + $(".cookieadmin_box_layout").closest('label').hide();
291 306 }
292 307
293 308 $("[id^=cookieadmin_position_]").prop("checked", false);
294 309 $("#cookieadmin_position_"+cookieadmin_policy[law].cookieadmin_position).prop("checked", true);
@@ -342,39 +357,51 @@
342 357 $("#cookieadmin_cookie_modal_bg_color_box").val(cookieadmin_policy[law].cookieadmin_cookie_modal_bg_color);
343 358 $("#cookieadmin_cookie_modal_bg_color").val(cookieadmin_policy[law].cookieadmin_cookie_modal_bg_color);
344 359 $("#cookieadmin_cookie_modal_border_color_box").val(cookieadmin_policy[law].cookieadmin_cookie_modal_border_color);
345 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);
346 369
347 370 law == 'cookieadmin_gdpr' ? $(".setting-prior").show() : $(".setting-prior").hide();
348 - });
371 + }
372 + $("#cookieadmin_consent_type").on("change", cookieadminChangeLaw);
349 373
350 - $("consent_page").submit(function(){
374 + function cookieadminSubmitConsent(e){
351 375 var checked = false;
352 376
353 377 if (!$("input[name=cookieadmin_position]:checked").length && !$("#cookieadmin_layout_popup").prop("checked")) {
354 - alert('Please select one of the radio buttons.');
355 - event.preventDefault(); // Prevent form submission
378 + alert('Please select a notice position.');
379 + e.preventDefault(); // Prevent form submission
356 380 }
357 - });
381 + }
382 + $("#consent_submenu").submit(cookieadminSubmitConsent);
358 383
359 - $("[id$=_preload]").on("click", function(){
360 -
361 - if(!$(".setting-prior").find("[id$=_preload]:checked").length && $(".cookieadmin-settings").find(".cookieadmin-collapsible-notice").length){
362 - $(".cookieadmin-settings").find(".cookieadmin-collapsible-notice").remove();
363 - return;
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 + }
364 395 }
365 -
366 - if(!$(".cookieadmin-settings").find(".cookieadmin-collapsible-notice").length){
367 - $(".setting-prior").after("<p class=\"cookieadmin-collapsible-notice\">Loading cookies prior to receiving user consent will make your website non-compliant with GDPR.</p>");
368 - $(".cookieadmin-collapsible-notice").show();
369 - }
370 -
371 - });
396 + }
397 + $('[name="cookieadmin_preload[]"]').on('click', cookieadminPreloadCookies);
372 398
373 - $(".cookieadmin-scan").on("click", function(){
399 + function cookieadminScanCookies(){
374 400
375 - $(this).prop("disabled", true);
376 - $('.cookieadmin-cookie-scan-result tbody').find("tr").remove();
401 + let cookieadmin_btn_val = $(this).prop('value');
402 + var this_btn = $(this);
403 + this_btn.prop("disabled", true).prop('value', 'Scanning...');
377 404
378 405 $.ajax({
379 406 url: cookieadmin_policy.admin_url,
380 407 method: "POST",
@@ -384,123 +411,73 @@
384 411 cookieadmin_security : cookieadmin_policy.cookieadmin_nonce,
385 412 },
386 413 success: function(result){
387 414
388 - $(".cookieadmin-scan").removeAttr("disabled");
389 - var row;
390 -
391 - if(!result.data){
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{
392 423 alert(result.message);
393 - return;
394 424 }
395 425
396 - $.each(result.data, function(index, res){
397 -
398 - exp = 'Session';
399 - if(!!res.expires){
400 - exp = Math.round((res.expires - Date.now())/86400);
401 - if(exp < 1 && !!res['Max-Age']){
402 - exp = res['Max-Age'];
403 - }else{
404 - exp = 'Session';
405 - }
406 - }
407 -
408 - row = '<tr>';
409 - row += '<td>' + res.cookie_name + '</td>';
410 - row += '<td>' + exp + '</td>';
411 - row += '<td>' + (!!res.path ? res.path : '/') + '</td>';
412 - row += '<td>' + (!!res.domain ? res.domain : 'Host only') + '</td>';
413 - row += '<td>' + (!!res.secure ? 'Yes' : 'No') + '</td>';
414 - row += '</tr>';
415 - $('.cookieadmin-cookie-scan-result tbody').append(row);
416 - });
417 426 },
418 427 error: function(xhr, status, error) {
419 -
420 - $(".cookieadmin-scan").removeAttr("disabled");
421 -
422 - // console.log(xhr.responseText); // Check the error message
423 - // console.log('AJAX Error:', 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);
424 434 }
425 435 });
426 -
427 - });
436 + }
437 + $(".cookieadmin-scan").on("click", cookieadminScanCookies);
428 438
429 - $(".cookieadmin-auto-categorize").on("click", function(){
439 + function cookieadminSaveCookie(){
430 440
441 + $('#cookieadmin-message').removeClass().addClass('spinner is-active').text('').css('height','auto');
431 442 $(this).prop("disabled", true);
432 - $('.cookieadmin-cookie-categorized tbody').find("tr:gt(1)").remove();
433 443
434 - $.ajax({
435 - url: cookieadmin_policy.admin_url,
436 - method: "POST",
437 - data : {
438 - action : 'cookieadmin_ajax_handler',
439 - cookieadmin_act : 'cookieadmin-auto-categorize',
440 - cookieadmin_security : cookieadmin_policy.cookieadmin_nonce,
441 - },
442 - success: function(result){
443 -
444 - if(!result.data){
445 - alert(result.message);
446 - return;
447 - }
448 -
449 - $.each(result.data, function(index, res){
450 -
451 - var row = '';
452 - exp = 'Session';
453 -
454 - if(!!res.expires){
455 - exp = Math.round((res.expires - Date.now())/86400);
456 - if(exp < 1 && !!res['Max-Age']){
457 - exp = res['Max-Age'];
458 - }else{
459 - exp = 'Session';
460 - }
461 - }
462 -
463 - row = '<tr>';
464 - row += '<td>' + res.cookie_name + '</td>';
465 - row += '<td>' + res.description + '</td>';
466 - row += '<td>' + exp + '</td>';
467 - row += '<td> <span class="dashicons dashicons-edit cookieadmin_edit_icon" id="edit_'+res.id+'"></span> <span class="dashicons dashicons-trash cookieadmin_delete_icon" id="delete_'+res.id+'"></span> </td>';
468 - row += '</tr>';
469 - categorized_cookies[res.id] = res;
470 - categorized_cookies[res.id]['expires'] = exp;
471 -
472 - if(!!res.category){
473 - type = "#" + res.category.toLowerCase() + "_tbody";
474 - $(type).find('.cookieadmin-empty-row').remove();
475 - $(type).append(row);
476 - }else{
477 - $("#unknown_tbody").find('.cookieadmin-empty-row').remove();
478 - $("#unknown_tbody").append(row);
479 - }
480 - });
481 - $(".cookieadmin-auto-categorize").removeAttr("disabled");
482 - },
483 - error: function(xhr, status, error) {
484 - // console.log(xhr.responseText); // Check the error message
485 - // console.log('AJAX Error:', status, error);
486 - }
487 - });
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();
488 448
489 - });
490 -
491 - $("#cookieadmin_dialog_save_btn").on("click", function(){
492 -
493 - $(this).prop("disabled", true);
494 -
495 449 let cookie_info = {
496 450 name: $("#cookieadmin-dialog-cookie-name").val(),
497 - id: $(this).attr("cookieadmin_cookie_id"),
451 + id: cookie_id,
498 452 description: $("#cookieadmin-dialog-cookie-desc").val(),
499 453 duration: $("#cookieadmin-dialog-cookie-duration").val(),
500 454 type: $("#cookieadmin-dialog-cookie-category").val()
501 455 };
456 +
457 + if(patterns){
458 + cookie_info.patterns = patterns;
459 + }
502 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 +
503 480 $.ajax({
504 481 url: cookieadmin_policy.admin_url,
505 482 method: "POST",
506 483 data : {
@@ -509,52 +486,43 @@
509 486 cookie_info : cookie_info,
510 487 cookieadmin_security : cookieadmin_policy.cookieadmin_nonce,
511 488 },
512 489 success: function(result){
513 - var row = '';
514 490
515 - if(!result.data){
491 + if(result.success){
492 + cookieadminAddCookieToTable(cookie_info);
493 + $('#cookieadmin-message').removeClass().addClass('cookieadmin-success-message').text(result.message);
494 + }else{
516 495 alert(result.message);
517 - return;
518 496 }
519 -
520 - row = '<tr>';
521 - row += '<td>' + cookie_info.name + '</td>';
522 - row += '<td>' + cookie_info.description + '</td>';
523 - row += '<td>' + cookie_info.duration + '</td>';
524 - 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>';
525 - row += '</tr>';
526 -
527 - tbody = "#" + cookie_info.type.toLowerCase() + "_tbody";
528 - $(tbody).find('.cookieadmin-empty-row').remove();
529 - $(tbody).append(row);
530 - $("#edit_"+cookie_info.id).parents("tr").remove();
531 -
532 - delete categorized_cookies[cookie_info.id];
533 - categorized_cookies[cookie_info.id] = {};
534 - categorized_cookies[cookie_info.id]['cookie_name'] = cookie_info.id;
535 - categorized_cookies[cookie_info.id]['description'] = cookie_info.description;
536 - categorized_cookies[cookie_info.id]['expires'] = cookie_info.duration;
537 - categorized_cookies[cookie_info.id]['category'] = cookie_info.type;
538 -
539 - $(".cookieadmin_dialog_save_btn").removeAttr("disabled");
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);
540 502 }
541 503 });
542 504 $(this).prop("disabled", false);
543 - });
505 + }
506 + $("#cookieadmin_dialog_save_btn").on("click", cookieadminSaveCookie);
544 507
545 -
546 508 $("input[type=color]").on("input", function(){
547 509 elemt = $(this).attr("id").replace("_box", "");
548 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 + }
549 516 });
550 517
551 518
552 - $(document).on("click", ".cookieadmin_delete_icon", function(){
519 + function cookieadminDeleteCookie(){
553 520
554 521 if(confirm("Are you sure you want to delete ?")){
555 522
556 523 cookie_raw_id = $(this).attr("id").replace("delete_", "");
524 + var row = $(this).parents("tr")
557 525
558 526 $.ajax({
559 527 url: cookieadmin_policy.admin_url,
560 528 method: "POST",
@@ -559,29 +527,31 @@
559 527 url: cookieadmin_policy.admin_url,
560 528 method: "POST",
561 529 data : {
562 530 action : 'cookieadmin_ajax_handler',
563 - cookieadmin_act : 'cookieadmin-edit-cookie',
531 + cookieadmin_act : 'cookieadmin-delete-cookie',
564 532 cookie_raw_id : cookie_raw_id,
565 533 cookieadmin_security : cookieadmin_policy.cookieadmin_nonce,
566 534 },
567 535 success: function(result){
568 -
569 - if(!result.data){
536 + if (result.success) {
537 + row.remove();
538 + delete categorized_cookies[cookie_raw_id];
539 + }else{
570 540 alert(result.message);
571 - return;
572 541 }
573 -
574 - delete categorized_cookies[cookie_raw_id];
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);
575 547 }
576 548 });
577 -
578 - $(this).parents("tr").remove();
579 549 }
580 - });
550 + }
551 + $('.cookieadmin-metabox-holder').on("click", ".cookieadmin_delete_icon", cookieadminDeleteCookie);
581 552
582 -
583 - $(document).on("click", ".cookieadmin_edit_icon, .cookieadmin_dialog_modal_close_btn", function(){
553 + function cookieadminOpenCookieDialog(){
584 554
585 555 const modal = document.getElementById('edit-cookie-modal');
586 556
587 557 if(modal.classList.contains("active")){
@@ -587,25 +557,44 @@
587 557 if(modal.classList.contains("active")){
588 558 modal.classList.remove('active');
589 559 }else{
590 560 modal.classList.add('active');
591 - var cookie_id = $(this).attr("id").replace("edit_", "");
592 561
593 - $("#cookieadmin_dialog_save_btn").attr("cookieadmin_cookie_id", cookie_id);
594 - $("#cookieadmin-dialog-cookie-name").val(categorized_cookies[cookie_id]['cookie_name']);
595 - $("#cookieadmin-dialog-cookie-desc").val(categorized_cookies[cookie_id]['description']);
596 - $("#cookieadmin-dialog-cookie-duration").val(categorized_cookies[cookie_id]['expires']);
597 - if(!!categorized_cookies[cookie_id]['category']){
598 - $("#cookieadmin-dialog-cookie-category").val(categorized_cookies[cookie_id]['category']);
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('');
599 566 }else{
600 - $("#cookieadmin-dialog-cookie-category").val("unknown");
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 + }
601 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 + });
602 590 }
603 - });
591 + }
592 + $(document).on("click", ".cookieadmin_edit_icon, .cookieadmin_dialog_modal_close_btn, .cookieadmin-add-cookie", cookieadminOpenCookieDialog);
604 593
605 594
606 - $(document).on('click', '.cookieadmin-cookie-categorized tbody > tr:first-child', function() {
607 - var $tbody = jQuery(this).closest('tbody');
595 + function cookieadminExpandCollapseCookiesList() {
596 + var $tbody = $(this).closest('tbody');
608 597 var $rows = $tbody.find('tr:not(:first-child)');
609 598
610 599 if ($rows.is(':visible')) {
611 600 $rows.slideUp();
@@ -613,8 +602,169 @@
613 602 } else {
614 603 $rows.slideDown();
615 604 $tbody.removeClass('collapsed');
616 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 + }
617 642 });
618 643
644 + // Tooltip
645 + let cookieadminToolTip;
619 646
620 -});
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 +}