diff --git a/plonetheme/pcfweb/static/js/cookie_usage_consent.js b/plonetheme/pcfweb/static/js/cookie_usage_consent.js new file mode 100644 index 0000000..d8f5d59 --- /dev/null +++ b/plonetheme/pcfweb/static/js/cookie_usage_consent.js @@ -0,0 +1,81 @@ +var hostname = document.location.hostname.split('.'); +var domain; +var path = ";path=/"; +if (hostname.length > 2) { + domain = '.' + hostname.slice(1, hostname.length).join('.'); +} else { + domain = '.' + document.location.hostname; +} +domain = ";domain=" + domain; + + +function get_cookie(cookie_name) { + if (document.cookie.length > 0) { + start = document.cookie.indexOf(cookie_name + "="); + if (start < 0) return null; + end = document.cookie.indexOf(";", start); + if (end == -1) { end = document.cookie.length; } + return unescape(document.cookie.substring(start, end)); + } + return null; +} + +function has_consent() { + return navigator.doNotTrack != '1' && get_cookie('hasConsent') == 'hasConsent=true'; +} + +function purge_cookie(cookie_name) { + var expiration = "Thu, 01-Jan-1970 00:00:01 GMT"; + document.cookie = cookie_name + "=" + path + ";expires=" + expiration; +} + +function purge_ga_cookies() { + var names = ["__utma","__utmb","__utmc","__utmz", "__utmt", "_ga", "_gat"] + for (var i = 0; i < names.length; i++) { + purge_cookie(names[i]); + } +} + +function get_expiration() { + var date = new Date(); + date.setMonth(date.getMonth() + 1); + var expires = ";expires="+date.toGMTString(); + return expires; +} + +function close_banner() { + var div = document.getElementById('consent_banner'); + div.style.display = 'none'; +} + +function ga_refuse() { + document.cookie = 'hasConsent=false'+ get_expiration() + path + domain; + var banner = document.getElementById('consent_banner'); + banner.innerHTML='Vous vous êtes opposé au dépôt de cookies de mesures \ +d\'audience dans votre navigateur.'; + window.setTimeout(function() { banner.style.display = 'none'; return true; }, 5000); + purge_ga_cookies(); +} + +function consent_banner() { + var body = document.getElementsByTagName('body')[0]; + var banner = document.createElement('div'); + var content = ''; + content += 'En poursuivant votre navigation sur ce site, vous acceptez l\'utilisation de cookies à des fins de mesure d\'audience.'; + content += '
Accepter le suivi / M\'opposer au suivi
'; + banner.setAttribute('id', 'consent_banner'); + banner.innerHTML = content; + body.insertBefore(banner, body.firstChild); + /* no action is accepting */ + document.cookie = 'hasConsent=true'+ get_expiration() + path + domain; +} + +if (navigator.doNotTrack != '1') { + var consent_cookie = get_cookie('hasConsent'); + + if (!consent_cookie) { + window.onload = consent_banner; + } else { + if (!has_consent()) {purge_ga_cookies();} + } +}