diff --git a/eu_cookie_compliance.libraries.yml b/eu_cookie_compliance.libraries.yml index 57c9f85..001ddf5 100644 --- a/eu_cookie_compliance.libraries.yml +++ b/eu_cookie_compliance.libraries.yml @@ -1,7 +1,7 @@ eu_cookie_compliance: version: VERSION js: - js/eu_cookie_compliance.js: { attributes: { defer: true } } + js/eu_cookie_compliance.js: { attributes: { defer: true, minified: true } } dependencies: - core/jquery - core/drupal diff --git a/js/eu_cookie_compliance.js b/js/eu_cookie_compliance.js index 3f99389..219a21f 100644 --- a/js/eu_cookie_compliance.js +++ b/js/eu_cookie_compliance.js @@ -1,1594 +1,138 @@ -/** - * @file - * eu_cookie_compliance.js - * - * Defines the behavior of the eu cookie compliance banner. - * - * Statuses: - * null: not yet agreed (or withdrawn), show popup - * 0: Disagreed - * 1: Agreed, show thank you banner - * 2: Agreed - */ +!function($,a,b,v){"use strict";var u,w=void 0===b.eu_cookie_compliance.cookie_value_disagreed||""===b.eu_cookie_compliance.cookie_value_disagreed?"0":b.eu_cookie_compliance.cookie_value_disagreed,x=void +0===b.eu_cookie_compliance.cookie_value_agreed_show_thank_you||""===b.eu_cookie_compliance.cookie_value_agreed_show_thank_you?"1":b.eu_cookie_compliance.cookie_value_agreed_show_thank_you,y=void +0===b.eu_cookie_compliance.cookie_value_agreed||""===b.eu_cookie_compliance.cookie_value_agreed?"2":b.eu_cookie_compliance.cookie_value_agreed;a.behaviors.euCookieCompliancePopup={attach:function(d){if(void +0!==b.eu_cookie_compliance){if(void +0!==$("body").once)$(b.eu_cookie_compliance.containing_element).once("eu-cookie-compliance").each(function(d){if(l=c.getCurrentStatus(),z=c.getAcceptedCategories(),b.eu_cookie_compliance.popup_eu_only_js){if(a.eu_cookie_compliance.showBanner()){var +e=b.path.baseUrl+b.path.pathPrefix+"eu-cookie-compliance-check",f={};$.getJSON(e,f,function(d){if(d.in_eu)a.eu_cookie_compliance.execute();else +if(a.eu_cookie_compliance.setStatus(y),b.eu_cookie_compliance.geoip_match=!1,A||"function"!=typeof euCookieComplianceLoadScripts||euCookieComplianceLoadScripts(),"categories"===b.eu_cookie_compliance.method){var +c=b.eu_cookie_compliance.cookie_categories;a.eu_cookie_compliance.setAcceptedCategories(c),a.eu_cookie_compliance.loadCategoryScripts(c)}})}}else +b.eu_cookie_compliance.hide_the_banner||a.eu_cookie_compliance.execute();$(d).addClass("eu-cookie-compliance-status-"+a.eu_cookie_compliance.getCurrentStatus())});else{let +e=once("eu-cookie-compliance",b.eu_cookie_compliance.containing_element,d);e.forEach(function(d){if(l=c.getCurrentStatus(),z=c.getAcceptedCategories(),b.eu_cookie_compliance.popup_eu_only_js){if(a.eu_cookie_compliance.showBanner()){var +e=b.path.baseUrl+b.path.pathPrefix+"eu-cookie-compliance-check",f={};$.getJSON(e,f,function(d){if(d.in_eu)a.eu_cookie_compliance.execute();else +if(a.eu_cookie_compliance.setStatus(y),b.eu_cookie_compliance.geoip_match=!1,"categories"===b.eu_cookie_compliance.method){var +c=b.eu_cookie_compliance.cookie_categories;a.eu_cookie_compliance.setAcceptedCategories(c),a.eu_cookie_compliance.loadCategoryScripts(c)}})}}else +b.eu_cookie_compliance.hide_the_banner||a.eu_cookie_compliance.execute();$(d).addClass("eu-cookie-compliance-status-"+a.eu_cookie_compliance.getCurrentStatus())})}}}},a.eu_cookie_compliance=a.eu_cookie_compliance||function(){(a.eu_cookie_compliance.queue=a.eu_cookie_compliance.queue||[]).push(arguments)},a.eu_cookie_compliance.a=+new +Date;var +c=a.eu_cookie_compliance,z=[],l=null;c.updateSelectedCategories=function(a){z=a},c.updateCurrentStatus=function(a){l=a},a.eu_cookie_compliance.execute=function(){try{if(!b.eu_cookie_compliance.popup_enabled||!a.eu_cookie_compliance.cookiesEnabled()||!b.eu_cookie_compliance.modules_allow_popup||(l=a.eu_cookie_compliance.getCurrentStatus(),void +0===a.eu_cookie_compliance.getVersion()&&a.eu_cookie_compliance.setVersion("unknown"),!0===b.eu_cookie_compliance.popup_eu_only&& !0!==b.eu_cookie_compliance.geoip_match))return;var +c=a.eu_cookie_compliance.getVersion()!==b.eu_cookie_compliance.cookie_policy_version,e=void +0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed":b.eu_cookie_compliance.cookie_name,d=!b.eu_cookie_compliance.open_by_default||null!==l&&!c||"null"===v.get(e)&&b.eu_cookie_compliance.settings_tab_enabled;l===w&&b.eu_cookie_compliance.settings_tab_enabled&&("opt_in"===b.eu_cookie_compliance.method||"categories"===b.eu_cookie_compliance.method)?(a.eu_cookie_compliance.createPopup(b.eu_cookie_compliance.popup_html_info,null!==l),$(".eu-cookie-withdraw-tab").click(a.eu_cookie_compliance.toggleWithdrawBanner),a.eu_cookie_compliance.attachAgreeEvents()):l===w&&"default"===b.eu_cookie_compliance.method||null===l||l!==w&&b.eu_cookie_compliance.withdraw_enabled&&b.eu_cookie_compliance.withdraw_button_on_info_popup||l!==w&&c?(b.eu_cookie_compliance.withdraw_enabled||!b.eu_cookie_compliance.disagree_do_not_show_popup||null===l)&&(window.matchMedia("(max-width: +"+b.eu_cookie_compliance.mobile_breakpoint+"px)").matches&&b.eu_cookie_compliance.use_mobile_message?a.eu_cookie_compliance.createPopup(b.eu_cookie_compliance.mobile_popup_html_info,d):a.eu_cookie_compliance.createPopup(b.eu_cookie_compliance.popup_html_info,d),a.eu_cookie_compliance.initPopup(),a.eu_cookie_compliance.resizeListener()):l===x&&b.eu_cookie_compliance.popup_agreed_enabled?(a.eu_cookie_compliance.createPopup(b.eu_cookie_compliance.popup_html_agreed),a.eu_cookie_compliance.attachHideEvents()):l===y&&b.eu_cookie_compliance.withdraw_enabled&&(b.eu_cookie_compliance.withdraw_button_on_info_popup||(a.eu_cookie_compliance.createWithdrawBanner(b.eu_cookie_compliance.withdraw_markup),a.eu_cookie_compliance.initPopup(),a.eu_cookie_compliance.resizeListener()))}catch(f){}},a.eu_cookie_compliance.initPopup=function(){a.eu_cookie_compliance.attachAgreeEvents(),"categories"===b.eu_cookie_compliance.method&&(a.eu_cookie_compliance.setPreferenceCheckboxes(z),a.eu_cookie_compliance.attachSavePreferencesEvents()),b.eu_cookie_compliance.withdraw_enabled&&(a.eu_cookie_compliance.attachWithdrawEvents(),(l===x||l===y)&&$(".eu-cookie-withdraw-button").removeClass("visually-hidden"))},a.eu_cookie_compliance.positionTab=function(){if(b.eu_cookie_compliance.popup_position){let +a=$(".eu-cookie-withdraw-tab").outerHeight();$("#sliding-popup").length&&(a+=$("#sliding-popup").outerHeight()),$(".eu-cookie-withdraw-wrapper").length?$(".eu-cookie-withdraw-tab").css("margin-top","0"):$(".eu-cookie-withdraw-tab").css("margin-top",a+"px")}},a.eu_cookie_compliance.createWithdrawBanner=function(f){var +c=$("
").html(f),e=$(".eu-cookie-withdraw-banner",c);c.attr({id:"sliding-popup",role:"alertdialog","aria-describedby":"popup-text"}),c.addClass("eu-cookie-withdraw-wrapper"),c.trigger("eu_cookie_compliance_popup_close"),b.eu_cookie_compliance.popup_use_bare_css||b.eu_cookie_compliance.popup_use_olivero_css||e.height(b.eu_cookie_compliance.popup_height).width(b.eu_cookie_compliance.popup_width),c.hide();var +d=0;b.eu_cookie_compliance.popup_position?(c.prependTo(b.eu_cookie_compliance.containing_element),d=parseInt(c.outerHeight()),c.show().addClass("sliding-popup-top").addClass("clearfix").css({top:a.eu_cookie_compliance.getBannerTopHiddenPosition(d)}),setTimeout((function(){var +d=c.outerHeight();c.animate({top:a.eu_cookie_compliance.getBannerTopHiddenPosition(d)},b.eu_cookie_compliance.popup_delay,null),b.eu_cookie_compliance.fixed_top_position||$("body").animate({"margin-top":-d+"px"})}).bind(c),0)):(b.eu_cookie_compliance.better_support_for_screen_readers?c.prependTo(b.eu_cookie_compliance.containing_element):c.appendTo(b.eu_cookie_compliance.containing_element),d=c.outerHeight(),c.show().addClass("sliding-popup-bottom").css({bottom:-1*d}),setTimeout((function(){var +a=c.outerHeight();c.animate({bottom:-1*a},b.eu_cookie_compliance.popup_delay,null)}).bind(c),0)),$("body").removeClass("eu-cookie-compliance-popup-open"),e.attr("aria-hidden",!0).find("a, button, +input").attr("tabindex",-1)},a.eu_cookie_compliance.getBannerTopPosition=function(c){let a;return +b.eu_cookie_compliance.fixed_top_position?(a=0,$(".toolbar-tray-horizontal.is-active").length&&(a+=parseInt($(".toolbar-tray-horizontal.is-active").css("height"))),$(".toolbar-bar").length&&!$("#gin-toolbar-bar").length&&(a+=parseInt($(".toolbar-bar").css("height"))),a+"px"):0},a.eu_cookie_compliance.getBannerTopHiddenPosition=function(c){let +a=0;return +b.eu_cookie_compliance.fixed_top_position?a=-c:($(".toolbar-tray-horizontal.is-active").length&&(a=-parseInt($(".toolbar-tray-horizontal.is-active").css("height"))),$(".toolbar-bar").length&&!$("#gin-toolbar-bar").length&&(a-=parseInt($(".toolbar-bar").css("height")))),a+"px"},a.eu_cookie_compliance.getBannerBottomHiddenPosition=function(){return-$("#sliding-popup").outerHeight()+"px"},a.eu_cookie_compliance.toggleWithdrawBanner=function(){var +c=$("#sliding-popup"),d=parseInt(c.outerHeight()),e=c.find(".eu-cookie-compliance-banner, .eu-cookie-withdraw-banner").is(":visible");if(e){let +f=parseInt(c.css("top")),g=parseInt($(b.eu_cookie_compliance.containing_element).css("padding-top")),h=parseInt($(b.eu_cookie_compliance.containing_element).css("margin-top"));e=b.eu_cookie_compliance.popup_position?b.eu_cookie_compliance.fixed_top_position?f!== +-d:f!== +-(g+h+d):0===parseInt(c.css("bottom"))}b.eu_cookie_compliance.popup_position?e?(b.eu_cookie_compliance.fixed_top_position||$("body").animate({"margin-top":-d+"px"},b.eu_cookie_compliance.popup_delay),c.animate({top:a.eu_cookie_compliance.getBannerTopHiddenPosition(d)},b.eu_cookie_compliance.popup_delay).trigger("eu_cookie_compliance_popup_close")):(b.eu_cookie_compliance.fixed_top_position||$("body").animate({"margin-top":"0px"},b.eu_cookie_compliance.popup_delay),c.find(".eu-cookie-compliance-banner").show(),c.animate({top:a.eu_cookie_compliance.getBannerTopPosition(d)},b.eu_cookie_compliance.popup_delay).trigger("eu_cookie_compliance_popup_open")):e?c.animate({bottom:-1*d},b.eu_cookie_compliance.popup_delay).trigger("eu_cookie_compliance_popup_close"):(c.find(".eu-cookie-compliance-banner").show(),c.animate({bottom:0},b.eu_cookie_compliance.popup_delay).trigger("eu_cookie_compliance_popup_open")),e?($("body").removeClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!0).find("a, button, input").attr("tabindex",-1)):($("body").addClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!1).find("a, button, input").attr("tabindex",0))},a.eu_cookie_compliance.resizeListener=function(){var d=$("#sliding-popup"),c=function(a,b){var c;return function(){var +b=function(){clearTimeout(c),a()};clearTimeout(c),c=setTimeout(b,50)}}(function(){var +c=d.outerHeight();b.eu_cookie_compliance.popup_position?(0>parseFloat(d.css("top"))&&($("body").hasClass("eu-cookie-compliance-popup-open")?(b.eu_cookie_compliance.fixed_top_position||$("body").css({"margin-top":"0px"}),d.css("top",a.eu_cookie_compliance.getBannerTopPosition(c))):(b.eu_cookie_compliance.fixed_top_position||$("body").css({"margin-top":-c+"px"}),d.css("top",a.eu_cookie_compliance.getBannerTopHiddenPosition(c)))),a.eu_cookie_compliance.positionTab()):0!==parseFloat(d.css("bottom"))&&d.css("bottom",-1*c),a.eu_cookie_compliance.positionTab()},50);setTimeout(function(){c()}),window.addEventListener("resize",c)},a.eu_cookie_compliance.createPopup=function(f,e){var +c=$("
").html(f);c.attr({id:"sliding-popup",role:"alertdialog","aria-describedby":"popup-text"}),b.eu_cookie_compliance.popup_use_bare_css||b.eu_cookie_compliance.popup_use_olivero_css||c.height(b.eu_cookie_compliance.popup_height).width(b.eu_cookie_compliance.popup_width),c.hide();var +d=0;b.eu_cookie_compliance.popup_position?(c.prependTo(b.eu_cookie_compliance.containing_element),d=c.outerHeight(),c.addClass("sliding-popup-top +clearfix").css({top:a.eu_cookie_compliance.getBannerTopHiddenPosition(d)}),!0!==e?(c.show(),c.animate({top:a.eu_cookie_compliance.getBannerTopPosition(d)},b.eu_cookie_compliance.popup_delay,null,function(){c.trigger("eu_cookie_compliance_popup_open"),a.eu_cookie_compliance.positionTab()})):(b.eu_cookie_compliance.fixed_top_position||$("body").css({"margin-top":-d+"px"}),setTimeout(function(){c.show(),a.eu_cookie_compliance.positionTab()},0))):(b.eu_cookie_compliance.better_support_for_screen_readers?c.prependTo(b.eu_cookie_compliance.containing_element):c.appendTo(b.eu_cookie_compliance.containing_element),d=c.outerHeight(),c.show().addClass("sliding-popup-bottom").css({bottom:-1*d}),!0!==e&&c.animate({bottom:0},b.eu_cookie_compliance.popup_delay,null,function(){c.trigger("eu_cookie_compliance_popup_open")})),!0!==e?($("body").addClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!1).find("a, button, input").attr("tabindex",0)):($("body").removeClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!0).find("a, button, input").attr("tabindex",-1))},a.eu_cookie_compliance.attachAgreeEvents=function(){var +c=b.eu_cookie_compliance.popup_clicking_confirmation,d=b.eu_cookie_compliance.popup_scrolling_confirmation;if("categories"===b.eu_cookie_compliance.method&&b.eu_cookie_compliance.enable_save_preferences_button?$(".agree-button").click(a.eu_cookie_compliance.acceptAllAction):$(".agree-button").click(a.eu_cookie_compliance.acceptAction),$(".decline-button").click(a.eu_cookie_compliance.declineAction),$(".eu-cookie-compliance-close-button").click(a.eu_cookie_compliance.closeAction),$(".eu-cookie-compliance-reject-button").click(a.eu_cookie_compliance.rejectAllAction),c&&$("a, +input[type=submit], button[type=submit]").not(".popup-content *").bind("click.euCookieCompliance",a.eu_cookie_compliance.acceptAction),d){var +f=!1,e=function(){f?(a.eu_cookie_compliance.acceptAction(),$(window).off("scroll",e)):f=!0};$(window).bind("scroll",e)}$(".find-more-button").not(".find-more-button-processed").addClass("find-more-button-processed").click(a.eu_cookie_compliance.moreInfoAction)},a.eu_cookie_compliance.closeAction=function(){switch(b.eu_cookie_compliance.close_button_action){case"close_banner":a.eu_cookie_compliance.toggleWithdrawBanner();break;case"save_preferences":a.eu_cookie_compliance.savePreferencesAction();break;case"reject_all_cookies":a.eu_cookie_compliance.rejectAllAction();break;case"accept_all_cookies":a.eu_cookie_compliance.acceptAllAction()}},a.eu_cookie_compliance.attachSavePreferencesEvents=function(){$(".eu-cookie-compliance-save-preferences-button").click(a.eu_cookie_compliance.savePreferencesAction)},a.eu_cookie_compliance.attachHideEvents=function(){var +c=b.eu_cookie_compliance.popup_hide_agreed,d=b.eu_cookie_compliance.popup_clicking_confirmation;$(".hide-popup-button").click(function(){a.eu_cookie_compliance.changeStatus(y)}),d&&$("a, input[type=submit], +button[type=submit]").unbind("click.euCookieCompliance"),c&&$("a, input[type=submit], +button[type=submit]").bind("click.euCookieComplianceHideAgreed",function(){a.eu_cookie_compliance.changeStatus(y)}),$(".find-more-button").not(".find-more-button-processed").addClass("find-more-button-processed").click(a.eu_cookie_compliance.moreInfoAction)},a.eu_cookie_compliance.attachWithdrawEvents=function(){$(".eu-cookie-withdraw-button").click(a.eu_cookie_compliance.withdrawAction),$(".eu-cookie-withdraw-tab").click(a.eu_cookie_compliance.toggleWithdrawBanner)},a.eu_cookie_compliance.acceptAction=function(){var +e=b.eu_cookie_compliance.popup_agreed_enabled,c=x;if(e||(a.eu_cookie_compliance.setStatus(x),c=y),A||"function"!=typeof euCookieComplianceLoadScripts||euCookieComplianceLoadScripts(),void +0!==u&&clearInterval(u),"categories"===b.eu_cookie_compliance.method){var d=$("#eu-cookie-compliance-categories input:checkbox:checked").map(function(){return +$(this).val()}).get();a.eu_cookie_compliance.setAcceptedCategories(d),a.eu_cookie_compliance.loadCategoryScripts(d),d.length||(c=w)}a.eu_cookie_compliance.changeStatus(c),b.eu_cookie_compliance.withdraw_enabled&&b.eu_cookie_compliance.withdraw_button_on_info_popup&&(a.eu_cookie_compliance.attachWithdrawEvents(),(l===x||l===y)&&$(".eu-cookie-withdraw-button").removeClass("visually-hidden"))},a.eu_cookie_compliance.acceptAllAction=function(){var +c=b.eu_cookie_compliance.cookie_categories;a.eu_cookie_compliance.setPreferenceCheckboxes(c),a.eu_cookie_compliance.acceptAction()},a.eu_cookie_compliance.rejectAllAction=function(){a.eu_cookie_compliance.setPreferenceCheckboxes([]),a.eu_cookie_compliance.acceptAction()},a.eu_cookie_compliance.savePreferencesAction=function(){var +c=$("#eu-cookie-compliance-categories input:checkbox:checked").map(function(){return +$(this).val()}).get(),e=b.eu_cookie_compliance.popup_agreed_enabled,d=x;e||(a.eu_cookie_compliance.setStatus(x),d=y),a.eu_cookie_compliance.setAcceptedCategories(c),a.eu_cookie_compliance.loadCategoryScripts(c),c.length||(d=w),a.eu_cookie_compliance.changeStatus(d)},a.eu_cookie_compliance.loadCategoryScripts=function(a){for(var +b in a)!0!==B[a[b]]&&"function"==typeof +euCookieComplianceLoadScripts&&(euCookieComplianceLoadScripts(a[b]),B[a[b]]=!0)},a.eu_cookie_compliance.declineAction=function(){parseInt(b.eu_cookie_compliance.set_cookie_session_zero_on_disagree)&&(b.eu_cookie_compliance.cookie_session=1),a.eu_cookie_compliance.setStatus(w);var +c=$("#sliding-popup");if(c.hasClass("sliding-popup-top")){let +d=c.outerHeight();b.eu_cookie_compliance.fixed_top_position||$("body").animate({"margin-top":-d+"px"},b.eu_cookie_compliance.popup_delay),b.eu_cookie_compliance.settings_tab_enabled?(c.animate({top:a.eu_cookie_compliance.getBannerTopHiddenPosition(d)},b.eu_cookie_compliance.popup_delay,null).trigger("eu_cookie_compliance_popup_close"),$(".eu-cookie-withdraw-tab").click(a.eu_cookie_compliance.toggleWithdrawBanner)):c.animate({top:a.eu_cookie_compliance.getBannerTopHiddenPosition(d)},b.eu_cookie_compliance.popup_delay,null,function(){c.hide()}).trigger("eu_cookie_compliance_popup_close")}else +b.eu_cookie_compliance.settings_tab_enabled?(c.animate({bottom:-1*c.outerHeight()},b.eu_cookie_compliance.popup_delay,null).trigger("eu_cookie_compliance_popup_close"),$(".eu-cookie-withdraw-tab").click(a.eu_cookie_compliance.toggleWithdrawBanner)):c.animate({bottom:-1*c.outerHeight()},b.eu_cookie_compliance.popup_delay,null,function(){c.hide()}).trigger("eu_cookie_compliance_popup_close");$("body").removeClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!0).find("a, button, +input").attr("tabindex",-1)},a.eu_cookie_compliance.withdrawAction=function(){parseInt(b.eu_cookie_compliance.set_cookie_session_zero_on_disagree)&&(b.eu_cookie_compliance.cookie_session=1),a.eu_cookie_compliance.setStatus(null),a.eu_cookie_compliance.setAcceptedCategories([]),location.reload()},a.eu_cookie_compliance.moreInfoAction=function(){b.eu_cookie_compliance.disagree_do_not_show_popup?(a.eu_cookie_compliance.setStatus(w),b.eu_cookie_compliance.withdraw_enabled&&b.eu_cookie_compliance.withdraw_button_on_info_popup?$("#sliding-popup +.eu-cookie-compliance-banner").trigger("eu_cookie_compliance_popup_close").hide():$("#sliding-popup").trigger("eu_cookie_compliance_popup_close").remove(),$("body").removeClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!0).find("a, button, +input").attr("tabindex",-1)):b.eu_cookie_compliance.popup_link_new_window?window.open(b.eu_cookie_compliance.popup_link):window.location.href=b.eu_cookie_compliance.popup_link},a.eu_cookie_compliance.getCookieStatus=function(){var +c=void 0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed":b.eu_cookie_compliance.cookie_name,a=v.get(c);return(void +0===a||"null"===a)&&(a=null),a},a.eu_cookie_compliance.getCurrentStatus=function(){var b=new D;c.handleEvent("preStatusLoad",b),l=a.eu_cookie_compliance.getCookieStatus();var d=new E;return +c.handleEvent("postStatusLoad",d),l},a.eu_cookie_compliance.setPreferenceCheckboxes=function(b){for(var d +in(b.length&&null!==a.eu_cookie_compliance.getCookieStatus()||a.eu_cookie_compliance.getCookieStatus()===w)&&$("#eu-cookie-compliance-categories input:checkbox").removeAttr("checked"),b){var +c=document.getElementById("cookie-category-"+b[d]);null!==c&&(c.checked=!0)}},a.eu_cookie_compliance.getAcceptedCategories=function(){var e=new H;c.handleEvent("prePreferencesLoad",e);var f=void +0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed-categories":b.eu_cookie_compliance.cookie_name+"-categories",a=v.get(f);for(var g in +null!=a?(-1!==a.indexOf("%")&&(a=decodeURI(a).replaceAll(/%2C/g,",")),z=JSON.parse(a)):z=[],b.eu_cookie_compliance.cookie_categories_details){var +d=b.eu_cookie_compliance.cookie_categories_details[g];"required"===d.checkbox_default_state&& -1===$.inArray(d.id,z)&&z.push(d.id)}var h=new I;return +c.handleEvent("postPreferencesLoad",h),z},a.eu_cookie_compliance.changeStatus=function(f){var d,j=b.eu_cookie_compliance.reload_page,k=l;if(l!==parseInt(f)){if(b.eu_cookie_compliance.popup_position){let +g=$("#sliding-popup").outerHeight();b.eu_cookie_compliance.fixed_top_position||$("body").animate({"margin-top":-g+"px"},b.eu_cookie_compliance.popup_delay),$(".sliding-popup-top").animate({top:a.eu_cookie_compliance.getBannerTopHiddenPosition(g)},b.eu_cookie_compliance.popup_delay,function(){f!==x||null!==k||j?k===x&&(b.eu_cookie_compliance.withdraw_enabled&&b.eu_cookie_compliance.withdraw_button_on_info_popup?($("#sliding-popup").hide(),window.matchMedia("(max-width: +"+b.eu_cookie_compliance.mobile_breakpoint+"px)").matches&&b.eu_cookie_compliance.use_mobile_message?$(".sliding-popup-top").not(".eu-cookie-withdraw-wrapper").html(b.eu_cookie_compliance.mobile_popup_html_info):$(".sliding-popup-top").not(".eu-cookie-withdraw-wrapper").html(b.eu_cookie_compliance.popup_html_info),g=$("#sliding-popup").outerHeight(),b.eu_cookie_compliance.fixed_top_position||$("body").animate({"margin-top":-g+"px"},b.eu_cookie_compliance.popup_delay),$(".sliding-popup-top").css("top",a.eu_cookie_compliance.getBannerTopHiddenPosition(g)),$(".sliding-popup-top").not(".eu-cookie-withdraw-wrapper").trigger("eu_cookie_compliance_popup_close"),a.eu_cookie_compliance.initPopup(),a.eu_cookie_compliance.resizeListener(),$("#sliding-popup").show()):($(".sliding-popup-top").not(".eu-cookie-withdraw-wrapper").trigger("eu_cookie_compliance_popup_close").remove(),$("body").css({"margin-top":"0px"})),$("body").removeClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!0).find("a, button, +input").attr("tabindex",-1)):(b.eu_cookie_compliance.fixed_top_position||$("body").animate({"margin-top":"0px"},b.eu_cookie_compliance.popup_delay),$(".sliding-popup-top").not(".eu-cookie-withdraw-wrapper").html(b.eu_cookie_compliance.popup_html_agreed).animate({top:a.eu_cookie_compliance.getBannerTopPosition(g)},b.eu_cookie_compliance.popup_delay),a.eu_cookie_compliance.attachHideEvents()),b.eu_cookie_compliance.withdraw_enabled&&!b.eu_cookie_compliance.withdraw_button_on_info_popup&&a.eu_cookie_compliance.showWithdrawBanner(f)})}else +$(".sliding-popup-bottom").animate({bottom:-1*$("#sliding-popup").outerHeight()},b.eu_cookie_compliance.popup_delay,function(){f!==x||null!==k||j?k===x&&($("#sliding-popup").css("display","none"),b.eu_cookie_compliance.withdraw_enabled&&b.eu_cookie_compliance.withdraw_button_on_info_popup?(window.matchMedia("(max-width: +"+b.eu_cookie_compliance.mobile_breakpoint+"px)").matches&&b.eu_cookie_compliance.use_mobile_message?$(".sliding-popup-bottom").not(".eu-cookie-withdraw-wrapper").html(b.eu_cookie_compliance.mobile_popup_html_info):$(".sliding-popup-bottom").not(".eu-cookie-withdraw-wrapper").html(b.eu_cookie_compliance.popup_html_info),$(".sliding-popup-bottom").css("bottom",a.eu_cookie_compliance.getBannerBottomHiddenPosition()),$(".sliding-popup-bottom").not(".eu-cookie-withdraw-wrapper").trigger("eu_cookie_compliance_popup_close"),a.eu_cookie_compliance.initPopup(),a.eu_cookie_compliance.resizeListener(),$("#sliding-popup").css("display","block")):$(".sliding-popup-bottom").not(".eu-cookie-withdraw-wrapper").trigger("eu_cookie_compliance_popup_close").remove(),$("body").removeClass("eu-cookie-compliance-popup-open"),$(".eu-cookie-compliance-banner, +.eu-cookie-withdraw-banner").attr("aria-hidden",!0).find("a, button, +input").attr("tabindex",-1)):($(".sliding-popup-bottom").not(".eu-cookie-withdraw-wrapper").html(b.eu_cookie_compliance.popup_html_agreed).animate({bottom:0},b.eu_cookie_compliance.popup_delay),a.eu_cookie_compliance.attachHideEvents()),b.eu_cookie_compliance.withdraw_enabled&&!b.eu_cookie_compliance.withdraw_button_on_info_popup&&a.eu_cookie_compliance.showWithdrawBanner(f)});if(b.eu_cookie_compliance.reload_page){if(0!==(d=b.eu_cookie_compliance.reload_routes_list).length){for(var +h=b.path.currentPath,c=!1,e=0;!c&&e1){var +i=e.length-1;e.lastIndexOf("/")===i&&(e=e.substring(0,i))}if(parseInt(b.eu_cookie_compliance.cookie_session))v.set(h,d,{path:e,domain:g,sameSite:"strict"});else{var +m=parseInt(b.eu_cookie_compliance.cookie_lifetime);f.setDate(f.getDate()+m),v.set(h,d,{expires:f,path:e,domain:g,sameSite:"strict"})}var +j="eu-cookie-compliance-status-"+l;if($("."+j).removeClass(j).addClass("eu-cookie-compliance-status-"+d),l=d,$(document).trigger("eu_cookie_compliance.changeStatus",[d]),a.eu_cookie_compliance.setVersion(),b.eu_cookie_compliance.store_consent&&(d===x&&b.eu_cookie_compliance.popup_agreed_enabled||d===y&&!b.eu_cookie_compliance.popup_agreed_enabled)){var +n=b.path.baseUrl+b.path.pathPrefix+"eu-cookie-compliance/store_consent/banner";$.post(n,{},function(a){})}var o=new +G;c.handleEvent("postStatusSave",o),d===w&&"opt_out"===b.eu_cookie_compliance.method&&(u=setInterval(a.eu_cookie_compliance.BlockCookies,5e3))},a.eu_cookie_compliance.setAcceptedCategories=function(d){var j=new +J;c.handleEvent("prePreferencesSave",j);var e=new Date,f=b.eu_cookie_compliance.domain?b.eu_cookie_compliance.domain:"",a=b.eu_cookie_compliance.domain_all_sites?"/":b.path.baseUrl,g=void +0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed-categories":b.eu_cookie_compliance.cookie_name+"-categories";if(a.length>1){var +h=a.length-1;a.lastIndexOf("/")===h&&(a=a.substring(0,h))}var i=JSON.stringify(d);if(parseInt(b.eu_cookie_compliance.cookie_session))v.set(g,i,{path:a,domain:f,sameSite:"strict"});else{var +k=parseInt(b.eu_cookie_compliance.cookie_lifetime);e.setDate(e.getDate()+k),v.set(g,i,{expires:e,path:a,domain:f,sameSite:"strict"})}z=d,$(document).trigger("eu_cookie_compliance.changePreferences",[d]);var l=new +K;c.handleEvent("postPreferencesSave",l)},a.eu_cookie_compliance.hasAgreed=function(d){var c=l===x||l===y;return void +0!==d&&c&&"categories"===b.eu_cookie_compliance.method&&(c=a.eu_cookie_compliance.hasAgreedWithCategory(d)),c},a.eu_cookie_compliance.hasAgreedWithCategory=function(a){return +-1!==$.inArray(a,z)},a.eu_cookie_compliance.showBanner=function(){var a=!1;return +l===w&&"default"===b.eu_cookie_compliance.method||null===l?b.eu_cookie_compliance.disagree_do_not_show_popup&&null!==l||(a=!0):l===x&&b.eu_cookie_compliance.popup_agreed_enabled?a=!0:l===y&&b.eu_cookie_compliance.withdraw_enabled&&(a=!0),a},a.eu_cookie_compliance.cookiesEnabled=function(){var +a=navigator.cookieEnabled;return void +0!==navigator.cookieEnabled||a||(v.set("testcookie","testcookie",{expires:100,sameSite:"strict"}),a=-1!==v.get("testcookie").indexOf("testcookie")),a},a.eu_cookie_compliance.cookieMatches=function(b,a){if(b===a)return!0;if(0>a.indexOf("*"))return!1;try{return +new RegExp("^"+a.replace(/\./g,"\\.").replace(/\*/g,".+")+"$","g").test(b)}catch(c){return!1}},a.eu_cookie_compliance.isAllowed=function(e){if(0===e.indexOf("SESS")||0===e.indexOf("SSESS"))return!0;var +c=b.eu_cookie_compliance.allowed_cookies.split(/\r\n|\n|\r/g);for(var d in c.push(void 0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed":b.eu_cookie_compliance.cookie_name),c.push(void +0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed-categories":b.eu_cookie_compliance.cookie_name+"-categories"),c.push(void +0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed-version":b.eu_cookie_compliance.cookie_name+"-version"),c)if("string"==typeof +c[d]){if(a.eu_cookie_compliance.cookieMatches(e,c[d]))return!0;if("categories"===b.eu_cookie_compliance.method){var f=c[d].indexOf(":");if(-1!==f){var +g=c[d].substr(0,f),h=c[d].substr(f+1);if(a.eu_cookie_compliance.cookieMatches(e,h)&&a.eu_cookie_compliance.hasAgreedWithCategory(g))return!0}}}return!1},a.eu_cookie_compliance.getVersion=function(){if(!a.eu_cookie_compliance.hasAgreed())return!1;var +c=void 0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed-version":b.eu_cookie_compliance.cookie_name+"-version";return +v.get(c)},a.eu_cookie_compliance.setVersion=function(e){if(!a.eu_cookie_compliance.hasAgreed())return!1;var d=new +Date,f=b.eu_cookie_compliance.domain?b.eu_cookie_compliance.domain:"",c=b.eu_cookie_compliance.domain_all_sites?"/":b.path.baseUrl,g=void +0===b.eu_cookie_compliance.cookie_name||""===b.eu_cookie_compliance.cookie_name?"cookie-agreed-version":b.eu_cookie_compliance.cookie_name+"-version";if(c.length>1){var h=c.length-1;c.lastIndexOf("/")===h&&(c=c.substring(0,h))}var +i=void 0!==e?e:b.eu_cookie_compliance.cookie_policy_version;if(parseInt(b.eu_cookie_compliance.cookie_session))v.set(g,i,{path:c,domain:f,sameSite:"strict"});else{var +j=parseInt(b.eu_cookie_compliance.cookie_lifetime);d.setDate(d.getDate()+j),v.set(g,i,{expires:d,path:c,domain:f,sameSite:"strict"})}};var A=!1,B={};$(function(){void +0!==b.eu_cookie_compliance&&(a.eu_cookie_compliance.hasAgreed()||null===l&&"opt_in"!==b.eu_cookie_compliance.method&&"categories"!==b.eu_cookie_compliance.method)&&("function"==typeof +euCookieComplianceLoadScripts&&euCookieComplianceLoadScripts(),A=!0,"categories"===b.eu_cookie_compliance.method&&a.eu_cookie_compliance.loadCategoryScripts(z))}),a.eu_cookie_compliance.BlockCookies=function(){var +f=a.eu_cookie_compliance.getCookieStatus();if((f===x||f===y)&&"categories"!==b.eu_cookie_compliance.method&& void 0!==u){clearInterval(u);return}var h=v.get();for(var c in h){var +d=window.location.hostname,e=!1,g=0;if(!a.eu_cookie_compliance.isAllowed(c)){for(;!e&&""!==d;)v.remove(c,{domain:"."+d,path:"/"}),(e=!v.get(c))||(v.remove(c,{domain:d,path:"/"}),e=!v.get(c)),d=-1===(g=d.indexOf("."))?"":d.substring(g+1);e||(document.cookie=c+"=; +expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;")}}},void +0===b.eu_cookie_compliance||!b.eu_cookie_compliance.automatic_cookies_removal||("opt_in"!==b.eu_cookie_compliance.method||null!==l&&a.eu_cookie_compliance.hasAgreed())&&("opt_out"!==b.eu_cookie_compliance.method||a.eu_cookie_compliance.hasAgreed()||null===l)&&"categories"!==b.eu_cookie_compliance.method||(u=setInterval(a.eu_cookie_compliance.BlockCookies,5e3));var +m,d,C=function(g){var c=[];if(void 0!==a.eu_cookie_compliance&& void 0!==a.eu_cookie_compliance.queue&&a.eu_cookie_compliance.queue.length){for(var +b=0;b').html(html); - var $banner = $('.eu-cookie-withdraw-banner', $html); - $html.attr({ - 'id': 'sliding-popup', - 'role': 'alertdialog', - 'aria-describedby': 'popup-text', - }); - $html.addClass('eu-cookie-withdraw-wrapper'); - - $html.trigger('eu_cookie_compliance_popup_close'); - - if (!drupalSettings.eu_cookie_compliance.popup_use_bare_css && !drupalSettings.eu_cookie_compliance.popup_use_olivero_css) { - $banner.height(drupalSettings.eu_cookie_compliance.popup_height) - .width(drupalSettings.eu_cookie_compliance.popup_width); - } - $html.hide(); - var height = 0; - if (drupalSettings.eu_cookie_compliance.popup_position) { - $html.prependTo(drupalSettings.eu_cookie_compliance.containing_element); - height = parseInt($html.outerHeight()); - - $html.show() - .addClass('sliding-popup-top') - .addClass('clearfix') - .css({ top: Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height)}); - // For some reason, the tab outerHeight is -10 if we don't use a timeout - // function to reveal the tab. - setTimeout(function () { - var height = $html.outerHeight(); - - $html.animate({ top: Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height) }, drupalSettings.eu_cookie_compliance.popup_delay, null); - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').animate({ 'margin-top': -height + 'px' }); - } - }.bind($html), 0); - } - else { - if (drupalSettings.eu_cookie_compliance.better_support_for_screen_readers) { - $html.prependTo(drupalSettings.eu_cookie_compliance.containing_element); - } - else { - $html.appendTo(drupalSettings.eu_cookie_compliance.containing_element); - } - height = $html.outerHeight(); - $html.show() - .addClass('sliding-popup-bottom') - .css({ bottom: -1 * height }); - // For some reason, the tab outerHeight is -10 if we don't use a timeout - // function to reveal the tab. - setTimeout(function () { - var height = $html.outerHeight(); - - $html.animate({ bottom: -1 * (height) }, drupalSettings.eu_cookie_compliance.popup_delay, null); - }.bind($html), 0); - } - $('body').removeClass('eu-cookie-compliance-popup-open'); - $banner - .attr('aria-hidden', true) - .find('a, button, input') - .attr('tabindex', -1); - }; - - Drupal.eu_cookie_compliance.getBannerTopPosition = function (height) { - let bannerTopPosition; - if (drupalSettings.eu_cookie_compliance.fixed_top_position) { - bannerTopPosition = 0; - } - else { - return 0; - } - - if ($('.toolbar-tray-horizontal.is-active').length) { - bannerTopPosition += parseInt($('.toolbar-tray-horizontal.is-active').css('height')); - } - - if ($('.toolbar-bar').length && !$('#gin-toolbar-bar').length) { - bannerTopPosition += parseInt($('.toolbar-bar').css('height')); - } - - return bannerTopPosition + 'px'; - } - - Drupal.eu_cookie_compliance.getBannerTopHiddenPosition = function (height) { - let bannerTopPosition = 0; - if (drupalSettings.eu_cookie_compliance.fixed_top_position) { - bannerTopPosition = -height; - } - else { - if ($('.toolbar-tray-horizontal.is-active').length) { - bannerTopPosition = -parseInt($('.toolbar-tray-horizontal.is-active').css('height')); - } - - if ($('.toolbar-bar').length && !$('#gin-toolbar-bar').length) { - bannerTopPosition -= parseInt($('.toolbar-bar').css('height')); - } - } - - return bannerTopPosition + 'px'; - } - - Drupal.eu_cookie_compliance.getBannerBottomHiddenPosition = function () { - return -($('#sliding-popup').outerHeight()) + 'px'; - } - - Drupal.eu_cookie_compliance.toggleWithdrawBanner = function () { - var $wrapper = $('#sliding-popup'); - var height = parseInt($wrapper.outerHeight()); - var bannerIsShowing = ($wrapper.find('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner').is(':visible')); - if (bannerIsShowing) { - let bannerTop = parseInt($wrapper.css('top')); - let containerPadding = parseInt($(drupalSettings.eu_cookie_compliance.containing_element).css('padding-top')); - let containerMargin = parseInt($(drupalSettings.eu_cookie_compliance.containing_element).css('margin-top')); - - if (drupalSettings.eu_cookie_compliance.popup_position) { - if (drupalSettings.eu_cookie_compliance.fixed_top_position) { - bannerIsShowing = !(bannerTop === -height); - } - else { - bannerIsShowing = !(bannerTop === -(containerPadding + containerMargin + height)); - } - } - else { - bannerIsShowing = (parseInt($wrapper.css('bottom')) === 0); - } - } - if (drupalSettings.eu_cookie_compliance.popup_position) { - if (bannerIsShowing) { - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').animate({ 'margin-top': -height + 'px' }, drupalSettings.eu_cookie_compliance.popup_delay); - } - $wrapper.animate({ top: Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height) }, drupalSettings.eu_cookie_compliance.popup_delay).trigger('eu_cookie_compliance_popup_close'); - } - else { - // If "Do not show cookie policy when the user clicks the Cookie policy button." is - // selected, the inner banner may be hidden. - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').animate({ 'margin-top': '0px' }, drupalSettings.eu_cookie_compliance.popup_delay); - } - $wrapper.find('.eu-cookie-compliance-banner').show(); - $wrapper.animate({ top: Drupal.eu_cookie_compliance.getBannerTopPosition(height) }, drupalSettings.eu_cookie_compliance.popup_delay).trigger('eu_cookie_compliance_popup_open'); - } - } - else { - if (bannerIsShowing) { - $wrapper.animate({ 'bottom': -1 * (height) }, drupalSettings.eu_cookie_compliance.popup_delay).trigger('eu_cookie_compliance_popup_close'); - } - else { - // If "Do not show cookie policy when the user clicks the Cookie policy button." is - // selected, the inner banner may be hidden. - $wrapper.find('.eu-cookie-compliance-banner').show(); - $wrapper.animate({ 'bottom': 0 }, drupalSettings.eu_cookie_compliance.popup_delay).trigger('eu_cookie_compliance_popup_open'); - } - } - if (bannerIsShowing) { - $('body').removeClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', true) - .find('a, button, input') - .attr('tabindex', -1); - } - else { - $('body').addClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', false) - .find('a, button, input') - .attr('tabindex', 0); - } - }; - - Drupal.eu_cookie_compliance.resizeListener = function () { - var $wrapper = $('#sliding-popup'); - - var debounce = function (func, wait) { - var timeout; - - return function executedFunction() { - var later = function () { - clearTimeout(timeout); - func(); - }; - - clearTimeout(timeout); - timeout = setTimeout(later, wait); - }; - }; - - var checkIfPopupIsClosed = debounce(function () { - var wrapperHeight = $wrapper.outerHeight(); - if (drupalSettings.eu_cookie_compliance.popup_position) { - var wrapperTopProperty = parseFloat($wrapper.css('top')); - if (wrapperTopProperty < 0) { - if ($('body').hasClass('eu-cookie-compliance-popup-open')) { - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').css({ 'margin-top': '0px' }); - } - $wrapper.css('top', Drupal.eu_cookie_compliance.getBannerTopPosition(wrapperHeight)); - } - else { - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').css({ 'margin-top': -wrapperHeight + 'px' }); - } - $wrapper.css('top', Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(wrapperHeight)); - } - } - Drupal.eu_cookie_compliance.positionTab(); - } - else { - var wrapperBottomProperty = parseFloat($wrapper.css('bottom')); - if (wrapperBottomProperty !== 0) { - $wrapper.css('bottom', wrapperHeight * -1); - } - } - Drupal.eu_cookie_compliance.positionTab(); - }, 50); - - setTimeout(function () { - checkIfPopupIsClosed(); - }); - - window.addEventListener('resize', checkIfPopupIsClosed); - }; - - Drupal.eu_cookie_compliance.createPopup = function (html, closed) { - // This fixes a problem with jQuery 1.9. - var popup = $('
').html(html); - popup.attr({ - 'id': 'sliding-popup', - 'role': 'alertdialog', - 'aria-describedby': 'popup-text', - }); - if (!drupalSettings.eu_cookie_compliance.popup_use_bare_css && !drupalSettings.eu_cookie_compliance.popup_use_olivero_css) { - popup.height(drupalSettings.eu_cookie_compliance.popup_height) - .width(drupalSettings.eu_cookie_compliance.popup_width); - } - - popup.hide(); - var height = 0; - if (drupalSettings.eu_cookie_compliance.popup_position) { - popup.prependTo(drupalSettings.eu_cookie_compliance.containing_element); - height = popup.outerHeight(); - popup.addClass('sliding-popup-top clearfix') - .css({ top: Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height) }); - - if (closed !== true) { - popup.show(); - popup.animate({top: Drupal.eu_cookie_compliance.getBannerTopPosition(height)}, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { - popup.trigger('eu_cookie_compliance_popup_open'); - Drupal.eu_cookie_compliance.positionTab(); - }); - } - else { - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').css({ 'margin-top': -height + 'px' }); - } - setTimeout(function () { - popup.show(); - Drupal.eu_cookie_compliance.positionTab(); - }, 0); - } - } - else { - if (drupalSettings.eu_cookie_compliance.better_support_for_screen_readers) { - popup.prependTo(drupalSettings.eu_cookie_compliance.containing_element); - } - else { - popup.appendTo(drupalSettings.eu_cookie_compliance.containing_element); - } - - height = popup.outerHeight(); - popup.show() - .addClass('sliding-popup-bottom') - .css({bottom: -1 * height}); - - if (closed !== true) { - popup.animate({bottom: 0}, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { - popup.trigger('eu_cookie_compliance_popup_open'); - }); - } - } - if (closed !== true) { - $('body').addClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', false) - .find('a, button, input') - .attr('tabindex', 0); - } - else { - $('body').removeClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', true) - .find('a, button, input') - .attr('tabindex', -1); - } - }; - - Drupal.eu_cookie_compliance.attachAgreeEvents = function () { - var clickingConfirms = drupalSettings.eu_cookie_compliance.popup_clicking_confirmation; - var scrollConfirms = drupalSettings.eu_cookie_compliance.popup_scrolling_confirmation; - - if (drupalSettings.eu_cookie_compliance.method === 'categories' && drupalSettings.eu_cookie_compliance.enable_save_preferences_button) { - // The agree button becomes an agree to all categories button when the 'save preferences' button is present. - $('.agree-button').click(Drupal.eu_cookie_compliance.acceptAllAction); - } - else { - $('.agree-button').click(Drupal.eu_cookie_compliance.acceptAction); - } - $('.decline-button').click(Drupal.eu_cookie_compliance.declineAction); - $('.eu-cookie-compliance-close-button').click(Drupal.eu_cookie_compliance.closeAction); - $('.eu-cookie-compliance-reject-button').click(Drupal.eu_cookie_compliance.rejectAllAction); - - if (clickingConfirms) { - $('a, input[type=submit], button[type=submit]').not('.popup-content *').bind('click.euCookieCompliance', Drupal.eu_cookie_compliance.acceptAction); - } - - if (scrollConfirms) { - var alreadyScrolled = false; - var scrollHandler = function () { - if (alreadyScrolled) { - Drupal.eu_cookie_compliance.acceptAction(); - $(window).off('scroll', scrollHandler); - } - else { - alreadyScrolled = true; - } - }; - - $(window).bind('scroll', scrollHandler); - } - - $('.find-more-button').not('.find-more-button-processed').addClass('find-more-button-processed').click(Drupal.eu_cookie_compliance.moreInfoAction); - }; - - Drupal.eu_cookie_compliance.closeAction = function () { - switch (drupalSettings.eu_cookie_compliance.close_button_action) { - case 'close_banner': - Drupal.eu_cookie_compliance.toggleWithdrawBanner(); - break; - - case 'save_preferences': - Drupal.eu_cookie_compliance.savePreferencesAction(); - break; - - case 'reject_all_cookies': - Drupal.eu_cookie_compliance.rejectAllAction(); - break; - - case 'accept_all_cookies': - Drupal.eu_cookie_compliance.acceptAllAction(); - break; - } - }; - - Drupal.eu_cookie_compliance.attachSavePreferencesEvents = function () { - $('.eu-cookie-compliance-save-preferences-button').click(Drupal.eu_cookie_compliance.savePreferencesAction); - }; - - Drupal.eu_cookie_compliance.attachHideEvents = function () { - var popupHideAgreed = drupalSettings.eu_cookie_compliance.popup_hide_agreed; - var clickingConfirms = drupalSettings.eu_cookie_compliance.popup_clicking_confirmation; - $('.hide-popup-button').click(function () { - Drupal.eu_cookie_compliance.changeStatus(cookieValueAgreed); - } - ); - if (clickingConfirms) { - $('a, input[type=submit], button[type=submit]').unbind('click.euCookieCompliance'); - } - - if (popupHideAgreed) { - $('a, input[type=submit], button[type=submit]').bind('click.euCookieComplianceHideAgreed', function () { - Drupal.eu_cookie_compliance.changeStatus(cookieValueAgreed); - }); - } - - $('.find-more-button').not('.find-more-button-processed').addClass('find-more-button-processed').click(Drupal.eu_cookie_compliance.moreInfoAction); - }; - - Drupal.eu_cookie_compliance.attachWithdrawEvents = function () { - $('.eu-cookie-withdraw-button').click(Drupal.eu_cookie_compliance.withdrawAction); - $('.eu-cookie-withdraw-tab').click(Drupal.eu_cookie_compliance.toggleWithdrawBanner); - }; - - Drupal.eu_cookie_compliance.acceptAction = function () { - var agreedEnabled = drupalSettings.eu_cookie_compliance.popup_agreed_enabled; - var nextStatus = cookieValueAgreedShowThankYou; - if (!agreedEnabled) { - Drupal.eu_cookie_compliance.setStatus(cookieValueAgreedShowThankYou); - nextStatus = cookieValueAgreed; - } - - if (!euCookieComplianceHasLoadedScripts && typeof euCookieComplianceLoadScripts === "function") { - euCookieComplianceLoadScripts(); - } - - if (typeof euCookieComplianceBlockCookies !== 'undefined') { - clearInterval(euCookieComplianceBlockCookies); - } - - if (drupalSettings.eu_cookie_compliance.method === 'categories') { - // Select Checked categories. - var categories = $("#eu-cookie-compliance-categories input:checkbox:checked").map(function () { - return $(this).val(); - }).get(); - Drupal.eu_cookie_compliance.setAcceptedCategories(categories); - // Load scripts for all categories. If no categories selected, none - // will be loaded. - Drupal.eu_cookie_compliance.loadCategoryScripts(categories); - if (!categories.length) { - // No categories selected is the same as declining all cookies. - nextStatus = cookieValueDisagreed; - } - } - - Drupal.eu_cookie_compliance.changeStatus(nextStatus); - - if (drupalSettings.eu_cookie_compliance.withdraw_enabled && drupalSettings.eu_cookie_compliance.withdraw_button_on_info_popup) { - Drupal.eu_cookie_compliance.attachWithdrawEvents(); - if (_euccCurrentStatus === cookieValueAgreedShowThankYou || _euccCurrentStatus === cookieValueAgreed) { - $('.eu-cookie-withdraw-button').removeClass('visually-hidden'); - } - } - }; - - Drupal.eu_cookie_compliance.acceptAllAction = function () { - var allCategories = drupalSettings.eu_cookie_compliance.cookie_categories; - Drupal.eu_cookie_compliance.setPreferenceCheckboxes(allCategories); - Drupal.eu_cookie_compliance.acceptAction(); - } - - Drupal.eu_cookie_compliance.rejectAllAction = function () { - Drupal.eu_cookie_compliance.setPreferenceCheckboxes([]); - Drupal.eu_cookie_compliance.acceptAction(); - } - - Drupal.eu_cookie_compliance.savePreferencesAction = function () { - var categories = $("#eu-cookie-compliance-categories input:checkbox:checked").map(function () { - return $(this).val(); - }).get(); - var agreedEnabled = drupalSettings.eu_cookie_compliance.popup_agreed_enabled; - var nextStatus = cookieValueAgreedShowThankYou; - if (!agreedEnabled) { - Drupal.eu_cookie_compliance.setStatus(cookieValueAgreedShowThankYou); - nextStatus = cookieValueAgreed; - } - - Drupal.eu_cookie_compliance.setAcceptedCategories(categories); - // Load scripts for all categories. If no categories selected, none - // will be loaded. - Drupal.eu_cookie_compliance.loadCategoryScripts(categories); - if (!categories.length) { - // No categories selected is the same as declining all cookies. - nextStatus = cookieValueDisagreed; - } - - Drupal.eu_cookie_compliance.changeStatus(nextStatus); - }; - - Drupal.eu_cookie_compliance.loadCategoryScripts = function (categories) { - for (var cat in categories) { - if (euCookieComplianceHasLoadedScriptsForCategory[categories[cat]] !== true && typeof euCookieComplianceLoadScripts === "function") { - euCookieComplianceLoadScripts(categories[cat]); - euCookieComplianceHasLoadedScriptsForCategory[categories[cat]] = true; - } - } - } - - Drupal.eu_cookie_compliance.declineAction = function () { - var set_cookie_session_zero_on_disagree = parseInt(drupalSettings.eu_cookie_compliance.set_cookie_session_zero_on_disagree); - if (set_cookie_session_zero_on_disagree) { - drupalSettings.eu_cookie_compliance.cookie_session = 1; - } - Drupal.eu_cookie_compliance.setStatus(cookieValueDisagreed); - var popup = $('#sliding-popup'); - if (popup.hasClass('sliding-popup-top')) { - let height = popup.outerHeight(); - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').animate({ 'margin-top': -height + 'px' }, drupalSettings.eu_cookie_compliance.popup_delay); - } - if (drupalSettings.eu_cookie_compliance.settings_tab_enabled) { - popup.animate({top: Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height)}, drupalSettings.eu_cookie_compliance.popup_delay, null).trigger('eu_cookie_compliance_popup_close'); - $('.eu-cookie-withdraw-tab').click(Drupal.eu_cookie_compliance.toggleWithdrawBanner); - } - else { - popup.animate({top: Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height)}, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { - popup.hide(); - }).trigger('eu_cookie_compliance_popup_close'); - } - } - else { - if (drupalSettings.eu_cookie_compliance.settings_tab_enabled) { - popup.animate({ bottom: popup.outerHeight() * -1 }, drupalSettings.eu_cookie_compliance.popup_delay, null).trigger('eu_cookie_compliance_popup_close'); - $('.eu-cookie-withdraw-tab').click(Drupal.eu_cookie_compliance.toggleWithdrawBanner); - } - else { - popup.animate({ bottom: popup.outerHeight() * -1 }, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { - popup.hide(); - }).trigger('eu_cookie_compliance_popup_close'); - } - } - $('body').removeClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', true) - .find('a, button, input') - .attr('tabindex', -1); - }; - - Drupal.eu_cookie_compliance.withdrawAction = function () { - var set_cookie_session_zero_on_disagree = parseInt(drupalSettings.eu_cookie_compliance.set_cookie_session_zero_on_disagree); - if (set_cookie_session_zero_on_disagree) { - drupalSettings.eu_cookie_compliance.cookie_session = 1; - } - Drupal.eu_cookie_compliance.setStatus(null); - Drupal.eu_cookie_compliance.setAcceptedCategories([]); - location.reload(); - }; - - Drupal.eu_cookie_compliance.moreInfoAction = function () { - if (drupalSettings.eu_cookie_compliance.disagree_do_not_show_popup) { - Drupal.eu_cookie_compliance.setStatus(cookieValueDisagreed); - if (drupalSettings.eu_cookie_compliance.withdraw_enabled && drupalSettings.eu_cookie_compliance.withdraw_button_on_info_popup) { - $('#sliding-popup .eu-cookie-compliance-banner').trigger('eu_cookie_compliance_popup_close').hide(); - } - else { - $('#sliding-popup').trigger('eu_cookie_compliance_popup_close').remove(); - } - $('body').removeClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', true) - .find('a, button, input') - .attr('tabindex', -1); - } - else { - if (drupalSettings.eu_cookie_compliance.popup_link_new_window) { - window.open(drupalSettings.eu_cookie_compliance.popup_link); - } - else { - window.location.href = drupalSettings.eu_cookie_compliance.popup_link; - } - } - }; - - Drupal.eu_cookie_compliance.getCookieStatus = function () { - var cookieName = (typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed' : drupalSettings.eu_cookie_compliance.cookie_name; - var currentStatus = cookies.get(cookieName); - if (typeof currentStatus === 'undefined' || currentStatus === 'null') { - currentStatus = null; - } - return currentStatus; - } - - Drupal.eu_cookie_compliance.getCurrentStatus = function () { - // Make a new observer & fire it to allow other scripts to hook in. - var preStatusLoadObject = new PreStatusLoad(); - self.handleEvent('preStatusLoad', preStatusLoadObject); - - _euccCurrentStatus = Drupal.eu_cookie_compliance.getCookieStatus(); - - // Make a new observer & fire it to allow other scripts to hook in. - var postStatusLoadObject = new PostStatusLoad(); - self.handleEvent('postStatusLoad', postStatusLoadObject); - - return _euccCurrentStatus; - }; - - Drupal.eu_cookie_compliance.setPreferenceCheckboxes = function (categories) { - if ((categories.length && Drupal.eu_cookie_compliance.getCookieStatus() !== null) || Drupal.eu_cookie_compliance.getCookieStatus() === cookieValueDisagreed) { - // Unset all categories to prevent a problem where the checkboxes with a - // default state set would always show up as checked. - $("#eu-cookie-compliance-categories input:checkbox").removeAttr("checked"); - } - // Check the appropriate checkboxes. - for (var i in categories) { - var categoryElement = document.getElementById('cookie-category-' + categories[i]); - if (categoryElement !== null) { - categoryElement.checked = true; - } - } - } - - Drupal.eu_cookie_compliance.getAcceptedCategories = function () { - // Make a new observer & fire it to allow other scripts to hook in. - var prePreferencesLoadObject = new PrePreferencesLoad(); - self.handleEvent('prePreferencesLoad', prePreferencesLoadObject); - - var cookieName = (typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed-categories' : drupalSettings.eu_cookie_compliance.cookie_name + '-categories'; - var storedCategories = cookies.get(cookieName); - - if (storedCategories !== null && typeof storedCategories !== 'undefined') { - // JS cookie introduced unescaped cookie values. - if (storedCategories.indexOf('%') !== -1) { - storedCategories = decodeURI(storedCategories).replaceAll(/%2C/g, ','); - } - _euccSelectedCategories = JSON.parse(storedCategories); - } - else { - _euccSelectedCategories = []; - } - - // Merge in required categories if not already present. Mimics old - // logic where "fix first category" changed logic in - // .hasAgreedWithCategory and this function. - for (var _categoryName in drupalSettings.eu_cookie_compliance.cookie_categories_details) { - var _category = drupalSettings.eu_cookie_compliance.cookie_categories_details[_categoryName]; - if (_category.checkbox_default_state === 'required' && $.inArray(_category.id, _euccSelectedCategories) === -1) { - _euccSelectedCategories.push(_category.id); - } - } - - // Make a new observer & fire it to allow other scripts to hook in. - var postPreferencesLoadObject = new PostPreferencesLoad(); - self.handleEvent('postPreferencesLoad', postPreferencesLoadObject); - - return _euccSelectedCategories; - }; - - Drupal.eu_cookie_compliance.changeStatus = function (value) { - var reloadPage = drupalSettings.eu_cookie_compliance.reload_page; - var previousState = _euccCurrentStatus; - if (_euccCurrentStatus === parseInt(value)) { - return; - } - - if (drupalSettings.eu_cookie_compliance.popup_position) { - let height = $('#sliding-popup').outerHeight(); - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').animate({ 'margin-top': -height + 'px' }, drupalSettings.eu_cookie_compliance.popup_delay); - } - $('.sliding-popup-top').animate({ top: Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height) }, drupalSettings.eu_cookie_compliance.popup_delay, function () { - if (value === cookieValueAgreedShowThankYou && previousState === null && !reloadPage) { - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').animate({ 'margin-top': '0px' }, drupalSettings.eu_cookie_compliance.popup_delay); - } - $('.sliding-popup-top').not('.eu-cookie-withdraw-wrapper').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({ top: Drupal.eu_cookie_compliance.getBannerTopPosition(height) }, drupalSettings.eu_cookie_compliance.popup_delay); - Drupal.eu_cookie_compliance.attachHideEvents(); - } - else if (previousState === cookieValueAgreedShowThankYou) { - if (drupalSettings.eu_cookie_compliance.withdraw_enabled && drupalSettings.eu_cookie_compliance.withdraw_button_on_info_popup) { - $('#sliding-popup').hide(); - // Restore popup content. - if (window.matchMedia('(max-width: ' + drupalSettings.eu_cookie_compliance.mobile_breakpoint + 'px)').matches && drupalSettings.eu_cookie_compliance.use_mobile_message) { - $('.sliding-popup-top').not('.eu-cookie-withdraw-wrapper').html(drupalSettings.eu_cookie_compliance.mobile_popup_html_info); - } - else { - $('.sliding-popup-top').not('.eu-cookie-withdraw-wrapper').html(drupalSettings.eu_cookie_compliance.popup_html_info); - } - height = $('#sliding-popup').outerHeight(); - if (!drupalSettings.eu_cookie_compliance.fixed_top_position) { - $('body').animate({ 'margin-top': -height + 'px' }, drupalSettings.eu_cookie_compliance.popup_delay); - } - $('.sliding-popup-top').css('top', Drupal.eu_cookie_compliance.getBannerTopHiddenPosition(height)); - $('.sliding-popup-top').not('.eu-cookie-withdraw-wrapper').trigger('eu_cookie_compliance_popup_close'); - Drupal.eu_cookie_compliance.initPopup(); - Drupal.eu_cookie_compliance.resizeListener(); - $('#sliding-popup').show(); - } - else { - $('.sliding-popup-top').not('.eu-cookie-withdraw-wrapper').trigger('eu_cookie_compliance_popup_close').remove(); - $('body').css({ 'margin-top': '0px' }); - } - $('body').removeClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', true) - .find('a, button, input') - .attr('tabindex', -1); - } - if (drupalSettings.eu_cookie_compliance.withdraw_enabled && !drupalSettings.eu_cookie_compliance.withdraw_button_on_info_popup) { - Drupal.eu_cookie_compliance.showWithdrawBanner(value); - } - }); - } - else { - $('.sliding-popup-bottom').animate({ bottom: $('#sliding-popup').outerHeight() * -1 }, drupalSettings.eu_cookie_compliance.popup_delay, function () { - if (value === cookieValueAgreedShowThankYou && previousState === null && !reloadPage) { - $('.sliding-popup-bottom').not('.eu-cookie-withdraw-wrapper').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({ bottom: 0 }, drupalSettings.eu_cookie_compliance.popup_delay); - Drupal.eu_cookie_compliance.attachHideEvents(); - } - else if (previousState === cookieValueAgreedShowThankYou) { - $('#sliding-popup').css('display', 'none'); - if (drupalSettings.eu_cookie_compliance.withdraw_enabled && drupalSettings.eu_cookie_compliance.withdraw_button_on_info_popup) { - // Restore popup content. - if (window.matchMedia('(max-width: ' + drupalSettings.eu_cookie_compliance.mobile_breakpoint + 'px)').matches && drupalSettings.eu_cookie_compliance.use_mobile_message) { - $('.sliding-popup-bottom').not('.eu-cookie-withdraw-wrapper').html(drupalSettings.eu_cookie_compliance.mobile_popup_html_info); - } - else { - $('.sliding-popup-bottom').not('.eu-cookie-withdraw-wrapper').html(drupalSettings.eu_cookie_compliance.popup_html_info); - } - $('.sliding-popup-bottom').css('bottom', Drupal.eu_cookie_compliance.getBannerBottomHiddenPosition()); - $('.sliding-popup-bottom').not('.eu-cookie-withdraw-wrapper').trigger('eu_cookie_compliance_popup_close'); - Drupal.eu_cookie_compliance.initPopup(); - Drupal.eu_cookie_compliance.resizeListener(); - $('#sliding-popup').css('display', 'block'); - } - else { - $('.sliding-popup-bottom').not('.eu-cookie-withdraw-wrapper').trigger('eu_cookie_compliance_popup_close').remove(); - } - $('body').removeClass('eu-cookie-compliance-popup-open'); - $('.eu-cookie-compliance-banner, .eu-cookie-withdraw-banner') - .attr('aria-hidden', true) - .find('a, button, input') - .attr('tabindex', -1); - } - if (drupalSettings.eu_cookie_compliance.withdraw_enabled && !drupalSettings.eu_cookie_compliance.withdraw_button_on_info_popup) { - Drupal.eu_cookie_compliance.showWithdrawBanner(value); - } - }); - } - - if (drupalSettings.eu_cookie_compliance.reload_page) { - var reloadRoutesList; - // Checks if there's any route on the settings. - if ((reloadRoutesList = drupalSettings.eu_cookie_compliance.reload_routes_list).length !== 0) { - var currentPath = drupalSettings.path.currentPath; - var match = false; - - // If there are routes specified on the settings, it checks if any of - // it matches with the current path. - for (var n = 0; !match && n < reloadRoutesList.length; n++) { - var regExp = new RegExp(reloadRoutesList[n], "g"); - match = currentPath.match(regExp) !== null; - } - - /* - * It will reload the page whether if the current path matches with one of the specified routes and the - * reload_options setting is set to "Include", which indicates that all matches should reload; OR if - * there's no match and the reload_options settings is set to "Exclude", which indicates that if the - * current path doesn't match with one of the specified routes, it should be reloaded. - */ - if ((match && !drupalSettings.eu_cookie_compliance.reload_options) || (!match && drupalSettings.eu_cookie_compliance.reload_options)) { - location.reload(); - } - } - // If no routes specified, then the page will be always reloaded. - else { - location.reload(); - } - } - - Drupal.eu_cookie_compliance.setStatus(value); - }; - - Drupal.eu_cookie_compliance.showWithdrawBanner = function (value) { - if (value === cookieValueAgreed && drupalSettings.eu_cookie_compliance.withdraw_enabled) { - if (!drupalSettings.eu_cookie_compliance.withdraw_button_on_info_popup) { - Drupal.eu_cookie_compliance.createWithdrawBanner(drupalSettings.eu_cookie_compliance.withdraw_markup); - Drupal.eu_cookie_compliance.resizeListener(); - } - Drupal.eu_cookie_compliance.attachWithdrawEvents(); - if (drupalSettings.eu_cookie_compliance.popup_position) { - Drupal.eu_cookie_compliance.positionTab(); - } - } - }; - - Drupal.eu_cookie_compliance.setStatus = function (status) { - // Make a new observer & fire it to allow other scripts to hook in. - var preStatusSaveObject = new PreStatusSave(); - self.handleEvent('preStatusSave', preStatusSaveObject); - - var date = new Date(); - var domain = drupalSettings.eu_cookie_compliance.domain ? drupalSettings.eu_cookie_compliance.domain : ''; - var path = drupalSettings.eu_cookie_compliance.domain_all_sites ? '/' : drupalSettings.path.baseUrl; - var cookieName = (typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed' : drupalSettings.eu_cookie_compliance.cookie_name; - if (path.length > 1) { - var pathEnd = path.length - 1; - if (path.lastIndexOf('/') === pathEnd) { - path = path.substring(0, pathEnd); - } - } - - var cookie_session = parseInt(drupalSettings.eu_cookie_compliance.cookie_session); - if (cookie_session) { - cookies.set(cookieName, status, { path: path, domain: domain, sameSite: 'strict' }); - } - else { - var lifetime = parseInt(drupalSettings.eu_cookie_compliance.cookie_lifetime); - date.setDate(date.getDate() + lifetime); - cookies.set(cookieName, status, { expires: date, path: path, domain: domain, sameSite: 'strict' }); - } - - var currentStatusClass = 'eu-cookie-compliance-status-' + _euccCurrentStatus; - var nextStatusClass = 'eu-cookie-compliance-status-' + status; - $('.' + currentStatusClass).removeClass(currentStatusClass).addClass(nextStatusClass) - - _euccCurrentStatus = status; - $(document).trigger('eu_cookie_compliance.changeStatus', [status]); - // Status set means something happened, update the version. - Drupal.eu_cookie_compliance.setVersion(); - - // Store consent if applicable. - if (drupalSettings.eu_cookie_compliance.store_consent && ((status === cookieValueAgreedShowThankYou && drupalSettings.eu_cookie_compliance.popup_agreed_enabled) || (status === cookieValueAgreed && !drupalSettings.eu_cookie_compliance.popup_agreed_enabled))) { - var url = drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + 'eu-cookie-compliance/store_consent/banner'; - $.post(url, {}, function (data) { }); - } - - // Make a new observer & fire it to allow other scripts to hook in. - var postStatusSaveObject = new PostStatusSave(); - self.handleEvent('postStatusSave', postStatusSaveObject); - - if (status === cookieValueDisagreed && drupalSettings.eu_cookie_compliance.method === 'opt_out') { - euCookieComplianceBlockCookies = setInterval(Drupal.eu_cookie_compliance.BlockCookies, 5000); - } - }; - - Drupal.eu_cookie_compliance.setAcceptedCategories = function (categories) { - // Make a new observer & fire it to allow other scripts to hook in. - var prePreferencesSaveObject = new PrePreferencesSave(); - self.handleEvent('prePreferencesSave', prePreferencesSaveObject); - - var date = new Date(); - var domain = drupalSettings.eu_cookie_compliance.domain ? drupalSettings.eu_cookie_compliance.domain : ''; - var path = drupalSettings.eu_cookie_compliance.domain_all_sites ? '/' : drupalSettings.path.baseUrl; - var cookieName = (typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed-categories' : drupalSettings.eu_cookie_compliance.cookie_name + '-categories'; - if (path.length > 1) { - var pathEnd = path.length - 1; - if (path.lastIndexOf('/') === pathEnd) { - path = path.substring(0, pathEnd); - } - } - var categoriesString = JSON.stringify(categories); - var cookie_session = parseInt(drupalSettings.eu_cookie_compliance.cookie_session); - if (cookie_session) { - cookies.set(cookieName, categoriesString, { path: path, domain: domain, sameSite: 'strict' }); - } - else { - var lifetime = parseInt(drupalSettings.eu_cookie_compliance.cookie_lifetime); - date.setDate(date.getDate() + lifetime); - cookies.set(cookieName, categoriesString, { expires: date, path: path, domain: domain, sameSite: 'strict' }); - } - _euccSelectedCategories = categories; - $(document).trigger('eu_cookie_compliance.changePreferences', [categories]); - - // TODO: Store categories with consent if applicable? - // Make a new observer & fire it to allow other scripts to hook in. - var postPreferencesSaveObject = new PostPreferencesSave(); - self.handleEvent('postPreferencesSave', postPreferencesSaveObject); - }; - - Drupal.eu_cookie_compliance.hasAgreed = function (category) { - var agreed = (_euccCurrentStatus === cookieValueAgreedShowThankYou || _euccCurrentStatus === cookieValueAgreed); - - if (category !== undefined && agreed && drupalSettings.eu_cookie_compliance.method === 'categories') { - agreed = Drupal.eu_cookie_compliance.hasAgreedWithCategory(category); - } - - return agreed; - }; - - Drupal.eu_cookie_compliance.hasAgreedWithCategory = function (category) { - return $.inArray(category, _euccSelectedCategories) !== -1; - }; - - Drupal.eu_cookie_compliance.showBanner = function () { - var showBanner = false; - if ((_euccCurrentStatus === cookieValueDisagreed && drupalSettings.eu_cookie_compliance.method === 'default') || _euccCurrentStatus === null) { - if (!drupalSettings.eu_cookie_compliance.disagree_do_not_show_popup || _euccCurrentStatus === null) { - showBanner = true; - } - } - else if (_euccCurrentStatus === cookieValueAgreedShowThankYou && drupalSettings.eu_cookie_compliance.popup_agreed_enabled) { - showBanner = true; - } - else if (_euccCurrentStatus === cookieValueAgreed && drupalSettings.eu_cookie_compliance.withdraw_enabled) { - showBanner = true; - } - - return showBanner; - }; - - Drupal.eu_cookie_compliance.cookiesEnabled = function () { - var cookieEnabled = (navigator.cookieEnabled); - if (typeof navigator.cookieEnabled === 'undefined' && !cookieEnabled) { - cookies.set('testcookie', 'testcookie', { expires: 100, sameSite: 'strict' }); - cookieEnabled = (cookies.get('testcookie').indexOf('testcookie') !== -1); - } - - return (cookieEnabled); - }; - - Drupal.eu_cookie_compliance.cookieMatches = function (cookieName, pattern) { - if (cookieName === pattern) { - return true; - } - if (pattern.indexOf('*') < 0) { - return false; - } - try { - var regexp = new RegExp('^' + pattern.replace(/\./g, '\\.').replace(/\*/g, '.+') + '$', 'g'); - return regexp.test(cookieName); - } - catch (err) { - return false; - } - }; - - Drupal.eu_cookie_compliance.isAllowed = function (cookieName) { - // Skip the PHP session cookie. - if (cookieName.indexOf('SESS') === 0 || cookieName.indexOf('SSESS') === 0) { - return true; - } - // Split the allowed cookies. - var euCookieComplianceAllowlist = drupalSettings.eu_cookie_compliance.allowed_cookies.split(/\r\n|\n|\r/g); - - // Add the EU Cookie Compliance cookie. - euCookieComplianceAllowlist.push((typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed' : drupalSettings.eu_cookie_compliance.cookie_name); - euCookieComplianceAllowlist.push((typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed-categories' : drupalSettings.eu_cookie_compliance.cookie_name + '-categories'); - euCookieComplianceAllowlist.push((typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed-version' : drupalSettings.eu_cookie_compliance.cookie_name + '-version'); - // Check if the cookie is allowed. - for (var item in euCookieComplianceAllowlist) { - // Defensively check types for comparison. - if (typeof euCookieComplianceAllowlist[item] === "string") { - if (Drupal.eu_cookie_compliance.cookieMatches(cookieName, euCookieComplianceAllowlist[item])) { - return true; - } - // Handle cookie names that are prefixed with a category. - if (drupalSettings.eu_cookie_compliance.method === 'categories') { - var separatorPos = euCookieComplianceAllowlist[item].indexOf(":"); - if (separatorPos !== -1) { - var category = euCookieComplianceAllowlist[item].substr(0, separatorPos); - var wlCookieName = euCookieComplianceAllowlist[item].substr(separatorPos + 1); - - if (Drupal.eu_cookie_compliance.cookieMatches(cookieName, wlCookieName) && Drupal.eu_cookie_compliance.hasAgreedWithCategory(category)) { - return true; - } - } - } - } - } - - return false; - } - - Drupal.eu_cookie_compliance.getVersion = function () { - // Only get cookie-agreed-version version cookie, if user agreed. - if (!Drupal.eu_cookie_compliance.hasAgreed()) { - return false; - } - - var cookieName = (typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed-version' : drupalSettings.eu_cookie_compliance.cookie_name + '-version'; - return cookies.get(cookieName); - }; - - Drupal.eu_cookie_compliance.setVersion = function (force_this_version) { - // Only set cookie-agreed-version version cookie, if user agreed. - if (!Drupal.eu_cookie_compliance.hasAgreed()) { - return false; - } - - var date = new Date(); - var domain = drupalSettings.eu_cookie_compliance.domain ? drupalSettings.eu_cookie_compliance.domain : ''; - var path = drupalSettings.eu_cookie_compliance.domain_all_sites ? '/' : drupalSettings.path.baseUrl; - var cookieName = (typeof drupalSettings.eu_cookie_compliance.cookie_name === 'undefined' || drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed-version' : drupalSettings.eu_cookie_compliance.cookie_name + '-version'; - if (path.length > 1) { - var pathEnd = path.length - 1; - if (path.lastIndexOf('/') === pathEnd) { - path = path.substring(0, pathEnd); - } - } - - var eucc_version = (force_this_version !== undefined) ? force_this_version : drupalSettings.eu_cookie_compliance.cookie_policy_version; - var cookie_session = parseInt(drupalSettings.eu_cookie_compliance.cookie_session); - if (cookie_session) { - cookies.set(cookieName, eucc_version, { path: path, domain: domain, sameSite: 'strict' }); - } - else { - var lifetime = parseInt(drupalSettings.eu_cookie_compliance.cookie_lifetime); - date.setDate(date.getDate() + lifetime); - cookies.set(cookieName, eucc_version, { expires: date, path: path, domain: domain, sameSite: 'strict' }); - } - }; - - // Load blocked scripts if the user has agreed to being tracked. - var euCookieComplianceHasLoadedScripts = false; - var euCookieComplianceHasLoadedScriptsForCategory = {}; - $(function () { - if (typeof drupalSettings.eu_cookie_compliance !== 'undefined') { - if (Drupal.eu_cookie_compliance.hasAgreed() - || (_euccCurrentStatus === null && drupalSettings.eu_cookie_compliance.method !== 'opt_in' && drupalSettings.eu_cookie_compliance.method !== 'categories') - ) { - if (typeof euCookieComplianceLoadScripts === "function") { - euCookieComplianceLoadScripts(); - } - euCookieComplianceHasLoadedScripts = true; - - if (drupalSettings.eu_cookie_compliance.method === 'categories') { - Drupal.eu_cookie_compliance.loadCategoryScripts(_euccSelectedCategories); - } - } - } - }); - - Drupal.eu_cookie_compliance.BlockCookies = function () { - var cookieStatus = Drupal.eu_cookie_compliance.getCookieStatus(); - if ((cookieStatus === cookieValueAgreedShowThankYou || cookieStatus === cookieValueAgreed) - && drupalSettings.eu_cookie_compliance.method !== 'categories') { - // Stop blocking the cookies if it's already been agreed to (e.g. in a different tab). - if (typeof euCookieComplianceBlockCookies !== 'undefined') { - clearInterval(euCookieComplianceBlockCookies); - return; - } - } - // Load all cookies from jQuery. - var allCookies = cookies.get(); - - // Check each cookie and try to remove it if it's not allowed. - for (var i in allCookies) { - var remove = true; - var hostname = window.location.hostname; - var cookieRemoved = false; - var index = 0; - - remove = !Drupal.eu_cookie_compliance.isAllowed(i); - - // Remove the cookie if it's not allowed. - if (remove) { - while (!cookieRemoved && hostname !== '') { - // Attempt to remove. - cookies.remove(i, { domain: '.' + hostname, path: '/' }); - cookieRemoved = !cookies.get(i); - if (!cookieRemoved) { - cookies.remove(i, { domain: hostname, path: '/' }); - cookieRemoved = !cookies.get(i); - } - - index = hostname.indexOf('.'); - - // We can be on a sub-domain, so keep checking the main domain as well. - hostname = (index === -1) ? '' : hostname.substring(index + 1); - } - - // Some jQuery Cookie versions don't remove cookies well. Try again - // using plain js. - if (!cookieRemoved) { - document.cookie = i + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;'; - } - } - } - } - - // Block cookies when the user hasn't agreed. - if ((typeof drupalSettings.eu_cookie_compliance !== 'undefined') && - drupalSettings.eu_cookie_compliance.automatic_cookies_removal && - ( - (drupalSettings.eu_cookie_compliance.method === 'opt_in' && (_euccCurrentStatus === null || !Drupal.eu_cookie_compliance.hasAgreed())) - || (drupalSettings.eu_cookie_compliance.method === 'opt_out' && !Drupal.eu_cookie_compliance.hasAgreed() && _euccCurrentStatus !== null) - || (drupalSettings.eu_cookie_compliance.method === 'categories') - )) { - euCookieComplianceBlockCookies = setInterval(Drupal.eu_cookie_compliance.BlockCookies, 5000); - } - - /** - * Filter the event listeners by event name and return the list of handlers. - * - * @param forEventName - * - * @returns {[]} - */ - var filterQueue = function (forEventName) { - var handlers = []; - if (typeof Drupal.eu_cookie_compliance !== 'undefined' && - typeof Drupal.eu_cookie_compliance.queue !== 'undefined' && - Drupal.eu_cookie_compliance.queue.length) { - // Loop over the list of arguments (objects) pushed into the queue. - for (var i = 0; i < Drupal.eu_cookie_compliance.queue.length; i++) { - if (Drupal.eu_cookie_compliance.queue[i].length) { - var queueItem = Drupal.eu_cookie_compliance.queue[i]; - var eventName = queueItem[0]; - var eventHandler = queueItem[1]; - // If the first element is a string and the second is a function. - if (typeof eventName === 'string' && typeof eventHandler === 'function') { - // And the string matches the event name. - if (eventName === forEventName) { - // Return the functions so they can be executed. - handlers.push(eventHandler); - } - } - } - } - } - return handlers; - } - - /** - * Handle event by finding and executing handlers pushed to the queue. - */ - self.handleEvent = function (eventName, observer) { - var handlers = filterQueue(eventName); - for (var i = 0; i < handlers.length; i++) { - if (typeof handlers[i] !== 'undefined') { - observer.subscribe(handlers[i]); - observer.fire({ - currentStatus: _euccCurrentStatus, - currentCategories: _euccSelectedCategories - }); - observer.unsubscribe(handlers[i]); - } - } - }; - - /** - * Observer: triggered before status gets read from cookie. - */ - var PreStatusLoad = (function () { - // Constructor. - var PreStatusLoad = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = PreStatusLoad.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return PreStatusLoad; - })(); - - /** - * Observer: when status was read from cookie and stored in private variable. - */ - var PostStatusLoad = (function () { - // Constructor. - var PostStatusLoad = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = PostStatusLoad.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return PostStatusLoad; - })(); - - /** - * Observer: triggered before status gets saved into cookie. - */ - var PreStatusSave = (function () { - // Constructor. - var PreStatusSave = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = PreStatusSave.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return PreStatusSave; - })(); - - /** - * Observer: triggered after status was saved into cookie. - */ - var PostStatusSave = (function () { - // Constructor. - var PostStatusSave = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = PostStatusSave.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return PostStatusSave; - })(); - - /** - * Observer: triggered before categories are read from cookie. - */ - var PrePreferencesLoad = (function () { - // Constructor. - var prePreferencesLoad = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = prePreferencesLoad.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return prePreferencesLoad; - })(); - - /** - * Observer: triggered after categories were read from cookie. - */ - var PostPreferencesLoad = (function () { - // Constructor. - var postPreferencesLoad = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = postPreferencesLoad.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return postPreferencesLoad; - })(); - - /** - * Observer: triggered before categories are being saved to cookie. - */ - var PrePreferencesSave = (function () { - // Constructor. - var prePreferencesSave = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = prePreferencesSave.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return prePreferencesSave; - })(); - - /** - * Observer: triggered after categories were saved to cookie. - */ - var PostPreferencesSave = (function () { - // Constructor. - var postPreferencesSave = function () { - // Observers. - this.handlers = []; - }; - // Convenience var for the prototype. - var prototype = postPreferencesSave.prototype; - prototype.subscribe = function (fn) { - this.handlers.push(fn); - }; - prototype.unsubscribe = function (fn) { - this.handlers = this.handlers.filter( - function (item) { - if (item !== fn) { - return item; - } - } - ); - }; - prototype.fire = function (o, thisObj) { - var scope = thisObj || window; - this.handlers.forEach(function (item) { - item.call(scope, o); - }); - }; - return postPreferencesSave; - })(); - -})(jQuery, Drupal, drupalSettings, window.Cookies);