File: D:/HostingSpaces/SBogers27/dndin.nl/resources/assets/js/site/cookieHandler.js
/* ==========================================================================
Cookie handler
- Primary usage for toggling the cookie message and/or switch
========================================================================== */
const CookieHandler = {
cookieMessage : null,
cookieSwitch : null,
cookieFadeOutAnimationDuration : 400,
acceptTracking : false,
// Initialize cookie handler
init : function()
{
// Bind cookie message without tracking to Handler
CookieHandler.cookieMessage = document.getElementById('cookie-message');
// If isset init the functions for cookie message without tracking
if(isset(CookieHandler.cookieMessage)){
CookieHandler.initCookieMessageWithoutTracking();
}
else{
// Else try to connect cookie message with tracking to Handler
CookieHandler.cookieMessage = document.getElementById('cookie-message-overlay');
// If isset init the functions for cookie message with tracking
if(isset(CookieHandler.cookieMessage)){
CookieHandler.initCookieMessageWithTracking();
}
}
// If either type of cookie has been found check if settings are defined
if(isset(CookieHandler.cookieMessage)){
CookieHandler.checkForCookieSettings();
}
// Bind cookie switch to Handler
CookieHandler.cookieSwitch = document.getElementById('cookie-switch');
// If isset init the functions for cookie switch
if(isset(CookieHandler.cookieSwitch)){
CookieHandler.initCookieSwitch();
}
},
// Init the cookie message actions without tracking
initCookieMessageWithoutTracking: function(){
const closeButton = CookieHandler.cookieMessage.querySelector('.close-button');
if(isset(closeButton)){
closeButton.addEventListener('click', CookieHandler.closeCookieMessage);
}
},
// Init the cookie message actions with tracking
initCookieMessageWithTracking: function(){
// Open the cookie settings event
const openCookieSettingsButton = CookieHandler.cookieMessage.querySelector('.open-menu');
if(isset(openCookieSettingsButton)){
openCookieSettingsButton.addEventListener('click', CookieHandler.openCookieSettings);
}
// Toggle of the tracking input
const toggleTrackingInputWrapper = CookieHandler.cookieMessage.querySelector('#cookie-settings-menu #trackingCookie');
if(isset(toggleTrackingInputWrapper)){
const toggleTrackingInput = toggleTrackingInputWrapper.querySelector('input');
toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);
if(toggleTrackingInput.checked === true) {
CookieHandler.acceptTracking = true
}
}
// Accept / Save cookies button event
const acceptButton = CookieHandler.cookieMessage.querySelector('.accept-cookie-button');
if(isset(acceptButton)){
acceptButton.addEventListener('click', CookieHandler.setCookieSettings);
}
},
// Init the cookie switch actions
initCookieSwitch: function(){
// Toggle of the tracking input
const toggleTrackingInputWrapper = CookieHandler.cookieSwitch.querySelector('#trackingCookie');
if(isset(toggleTrackingInputWrapper)){
const toggleTrackingInput = toggleTrackingInputWrapper.querySelector('input');
toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);
// Force the state of the cookie switch input because the pop-up is forced on checked
// while the switch checks by php if the cookie really exist or not
if(toggleTrackingInput.checked === true) {
CookieHandler.acceptTracking = true;
}
else{
CookieHandler.acceptTracking = false;
}
}
// Save cookies button event
const saveButton = CookieHandler.cookieSwitch.querySelector('#save-cookie-settings');
if(isset(saveButton)){
saveButton.addEventListener('click', function(){
CookieHandler.cookieFadeOutAnimationDuration = 0; // On the switch click we want no delay :)
CookieHandler.setCookieSettings();
});
}
},
checkForCookieSettings: function(){
if (Cookie.get('cookieMessage')) {
CookieHandler.cookieMessage.classList.add('accepted');
}
else {
CookieHandler.cookieMessage.classList.remove('accepted');
}
},
closeCookieMessage: function (){
Cookie.set('cookieMessage', true, 90);
CookieHandler.cookieMessage.classList.add('transition-out');
},
openCookieSettings: function (){
CookieHandler.cookieMessage.querySelector('#cookie-settings-menu').classList.add('edit');
CookieHandler.cookieMessage.querySelector('#message-description').classList.add('hide');
},
toggleTrackingSetting: function(){
if(CookieHandler.acceptTracking){
CookieHandler.acceptTracking = false;
}
else{
CookieHandler.acceptTracking = true;
}
},
setCookieSettings: function () {
// Set tracking cookie or delete it if isset according to the desired settings
if(CookieHandler.acceptTracking){
Cookie.set('trackingCookieAccepted', 'true', 90);
}
else{
if(Cookie.get('trackingCookieAccepted')){
Cookie.erase('trackingCookieAccepted');
}
}
CookieHandler.closeCookieMessage();
// Reload after animation to automatically trigger the tracking after accepting it
setTimeout(function(){
location.reload()
}, CookieHandler.cookieFadeOutAnimationDuration);
},
};
CookieHandler.init();