Fix bug where dismissible banners didn't

You can now click the button on a dismissible site-wide banner,
and it actually dismisses.
pull/51831/head
Tim Bannister 2025-08-07 21:29:49 +01:00
parent 913cad9905
commit 748d700e2f
No known key found for this signature in database
GPG Key ID: 9BF3452DD26C1742
1 changed files with 38 additions and 30 deletions

View File

@ -1,29 +1,36 @@
$(document).ready(function() {
function setCookie(name, value, days) {
let expires = "";
let date = new Date(); // Create a new Date object
let dateToSecond = 24 * 60 * 60 * 1000;
if (days) {
date.setTime(date.getTime() + days * dateToSecond); // Modify the existing Date object
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function getCookie(name) {
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? "true" : undefined;
}
/* Check the presence of a cookie */
let announcement = document.querySelector("#announcement");
$(document).ready(function() {
function setCookie(name, value, days) {
let expires = "";
let date = new Date(); // Create a new Date object
let dateToSecond = 24 * 60 * 60 * 1000;
if (days) {
date.setTime(date.getTime() + days * dateToSecond); // Modify the existing Date object
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function getCookie(name) {
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? "true" : undefined;
}
function getTokenName() {
let announcement_name_rewritten = announcement.getAttribute('data-announcement-name').replace(/\s/g, '_');
let token = 'announcement_ack_'+announcement_name_rewritten; // Generate the unique token for this announcement
return token;
}
/* Check the presence of a cookie */
let announcement = document.querySelector("#announcement");
if (announcement) {
let token = `announcement_ack_${announcement.getAttribute('data-announcement-name').replace(/\s/g, '_')}`; // Generate the unique token for announcement
let acknowledged = getCookie(token);
let announcement_name_rewritten = announcement.getAttribute('data-announcement-name').replace(/\s/g, '_');
let tokenName = getTokenName();
let acknowledged = getCookie(tokenName);
if (acknowledged === "true") {
announcement.remove(); // Remove the announcement if the cookie is set
}
@ -31,15 +38,16 @@ $(document).ready(function() {
announcement.classList.add('display-announcement') // Display the announcement if the cookie is not set
}
}
/* Driver code to set the cookie */
let button = document.querySelector('#banner-dismiss');
/* Driver code to set the cookie */
let button = document.querySelector('#banner-dismiss');
if (button) {
let tokenName = getTokenName();
button.removeAttribute('style');
button.addEventListener('click', function() {
setCookie(token, "true",
setCookie(tokenName, "true",
button.getAttribute('data-ttl')); // Set a cookie with time to live parameter
announcement.remove();
});
}
});
});