Newer
Older
// Injects the Data Protection notice onto sites
// For guidance on using: https://www.ebi.ac.uk/style-lab/websites/patterns/banner-data-protection.html
function ebiFrameworkCreateDataProtectionBanner() {
var banner = document.createElement('div');
var wrapper = document.createElement('div');
var inner = document.createElement('div');
// don't accidently create two banners
if (document.getElementById("data-protection-banner") != null) {
document.getElementById("data-protection-banner").remove();
}
banner.id = "data-protection-banner";
banner.className = "data-protection-banner";
banner.style = "position: fixed; background-color: #111; width: 100%; padding: .75rem; left: 0; bottom: 0; color: #eee;"
wrapper.className = "row";
wrapper.innerHTML = "" +
"<div class='columns medium-8 large-9'>" +
dataProtectionSettings.message +
"<div class='columns medium-4 large-3 text-right white-color'><a id='data-protection-agree' class=''>I agree, dismiss this banner</a></div>" +
"";
document.body.appendChild(banner);
banner.appendChild(wrapper);
openDataProtectionBanner();
}
function openDataProtectionBanner() {
var height = document.getElementById('data-protection-banner').offsetHeight || 0;
document.getElementById('data-protection-banner').style.display = 'block';
document.body.style.paddingBottom = height+'px';
document.getElementById('data-protection-agree').onclick = function() {
closeDataProtectionBanner();
return false;
};
}
function closeDataProtectionBanner() {
var height = document.getElementById('data-protection-banner').offsetHeight;
document.getElementById('data-protection-banner').style.display = 'none';
document.body.style.paddingBottom = '0';
ebiFrameworkSetCookie(dataProtectionSettings.cookieName, 'true', 90);
function ebiFrameworkSetCookie(c_name, value, exdays) {
var exdate = new Date();
var c_value;
exdate.setDate(exdate.getDate() + exdays);
// c_value = escape(value) + ((exdays===null) ? "" : ";expires=" + exdate.toUTCString()) + ";domain=.ebi.ac.uk;path=/";
// document.cookie = c_name + "=" + c_value;
c_value = escape(value) + ((exdays===null) ? "" : ";expires=" + exdate.toUTCString()) + ";domain=" + document.domain + ";path=/";
document.cookie = c_name + "=" + c_value;
}
var i, x, y, ARRcookies=document.cookie.split(";");
for (i=0; i<ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x = x.replace(/^\s+|\s+$/g,"");
if (x===c_name) {
return unescape(y);
}
}
}
var dataProtectionSettings = new Object();
/**
* The main 'brain' of the EBI Data Protection banner.
* Further documentation at https://www.ebi.ac.uk/style-lab/websites/patterns/banner-data-protection.html
* @param {string} [targetedFrameworkVersion=generic] targeted Framework version; options: 1.1, 1.2, 1.3, compliance
*/
function ebiFrameworkRunDataProtectionBanner(targetedFrameworkVersion) {
targetedFrameworkVersion = targetedFrameworkVersion || newDataProtectionNotificationBanner.src.split('legacyRequest=')[1] || 'generic';
// remove any old style cookie banner
switch (targetedFrameworkVersion) {
case '1.1':
case '1.2':
if (document.getElementById("cookie-banner") != null) {
document.getElementById("cookie-banner").remove();
}
document.body.style.paddingBottom = 0;
break;
case 'compliance':
if (document.getElementById("cookie-banner") != null) {
document.getElementById("cookie-banner").remove();
}
document.body.style.paddingTop = 0;
break;
default:
console.warn('You should specify the targetedFrameworkVersion');
}
dataProtectionSettings.message = 'This website requires cookies, and the limited processing of your personal data in order to function. By using the site you are agreeing to this as outlined in our <a target="_blank" href="https://www.ebi.ac.uk/data-protection/privacy-notice/embl-ebi-public-website" class="white-color">Privacy Notice</a> and <a target="_blank" href="https://www.ebi.ac.uk/about/terms-of-use" class="white-color">Terms of Use</a>.';
dataProtectionSettings.serviceId = 'ebi';
dataProtectionSettings.dataProtectionVersion = '1.0';
// If there's a div#data-protection-message-configuration, override defaults
var divDataProtectionBanner = document.getElementById('data-protection-message-configuration');
if (divDataProtectionBanner !== null) {
if (typeof divDataProtectionBanner.dataset.message !== "undefined") {
dataProtectionSettings.message = divDataProtectionBanner.dataset.message;
}
if (typeof divDataProtectionBanner.dataset.serviceId !== "undefined") {
dataProtectionSettings.serviceId = divDataProtectionBanner.dataset.serviceId;
}
if (typeof divDataProtectionBanner.dataset.dataProtectionVersion !== "undefined") {
dataProtectionSettings.dataProtectionVersion = divDataProtectionBanner.dataset.dataProtectionVersion;
}
}
dataProtectionSettings.cookieName = dataProtectionSettings.serviceId + "-v" + dataProtectionSettings.dataProtectionVersion + "-data-protection-accepted";
// If this version of banner not accpeted, show it:
if (ebiFrameworkGetCookie(dataProtectionSettings.cookieName) != "true") {
} catch(err) { setTimeout(ebiFrameworkRunDataProtectionBanner, 100); }
}
function resetDataProtectionBanner() {
document.cookie = dataProtectionSettings.cookieName + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT;domain=" + document.domain + ";path=/";
ebiFrameworkRunDataProtectionBanner('1.3');
// Fallback for any code that was directly calling the old cookie banner:
// https://github.com/ebiwd/EBI-Framework/blob/6707eff40e15036f735637413deed0dcb7392818/js/ebi-global-includes/script/5_ebiFrameworkCookieBanner.js
function ebiFrameworkCookieBanner() {
console.warn('You are calling an old function name, update it to ebiFrameworkRunDataProtectionBanner();')
ebiFrameworkRunDataProtectionBanner('1.3');
ebiFrameworkRunDataProtectionBanner('1.3');