From d0413cdadf754a2844db8bfc1940bd3dca901fa1 Mon Sep 17 00:00:00 2001 From: Sebastien Hattry Date: Wed, 1 Dec 2021 14:50:01 +0100 Subject: [PATCH] fix cookies bug --- public/js/preload-front.js | 338 ++++++++++++++------------- resources/js/frontend/ldcweb-cn.js | 352 +++++++++++++++++------------ 2 files changed, 394 insertions(+), 296 deletions(-) diff --git a/public/js/preload-front.js b/public/js/preload-front.js index e81c227..2fb4cb5 100644 --- a/public/js/preload-front.js +++ b/public/js/preload-front.js @@ -597,7 +597,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * LDC Service Web - * Version 1.0 + * Version 1.3 */ var LdcwebCn = /*#__PURE__*/function () { function LdcwebCn(config) { @@ -606,21 +606,21 @@ var LdcwebCn = /*#__PURE__*/function () { _classCallCheck(this, LdcwebCn); this.config = config; - this.cookieContainer = document.getElementById('ldcweb-cn'); - this.bannerContainer = document.getElementById('ldcweb-banner'); - this.modalContainer = document.getElementById('ldcweb-cn-modal'); - this.modalCloseBtn = document.getElementById('close-link'); - this.acceptAllBtnBanner = document.getElementById('ldcweb-cn-accept-banner'); - this.acceptAllBtn = document.getElementById('ldcweb-cn-accept'); - this.denyAllBtnBanner = document.getElementById('ldcweb-cn-deny-banner'); - this.denyAllBtn = document.getElementById('ldcweb-cn-deny'); - this.personalizeBtn = document.getElementsByClassName('ldcweb-cn-personalize'); - this.changeBtn = document.getElementsByClassName('ldcweb-cn-change'); - this.cookiesList = document.getElementById('ldcweb-cn-list'); - this.cookieLink = document.querySelector('.footer-content a[href="#cookie"]'); - this.template = document.getElementById('template').cloneNode(true); - document.getElementById('template').remove(); - var cookies = this.getLDCWebCookie('ldcwebcn-init'); + this.cookieContainer = document.getElementById("ldcweb-cn"); + this.bannerContainer = document.getElementById("ldcweb-banner"); + this.modalContainer = document.getElementById("ldcweb-cn-modal"); + this.modalCloseBtn = document.getElementById("close-link"); + this.acceptAllBtnBanner = document.getElementById("ldcweb-cn-accept-banner"); + this.denyAllBtnBanner = document.getElementById("ldcweb-cn-deny-banner"); + this.acceptAllBtn = document.getElementById("ldcweb-cn-accept"); + this.denyAllBtn = document.getElementById("ldcweb-cn-deny"); + this.personalizeBtn = document.getElementsByClassName("ldcweb-cn-personalize"); + this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); + this.cookiesList = document.getElementById("ldcweb-cn-list"); + this.cookieLink = document.getElementsByClassName("ldcweb-cn-cookie-link"); + this.template = document.getElementById("template").cloneNode(true); + document.getElementById("template").remove(); + var cookies = this.getLDCWebCookie("ldcwebcn-init"); if (cookies === undefined) { var newCookie = []; @@ -634,23 +634,23 @@ var LdcwebCn = /*#__PURE__*/function () { } this.saveLDCWebCookie(newCookie); - this.cookieContainer.classList.add('open-banner'); + this.cookieContainer.classList.add("open-banner"); } else { - var _test = cookies.split(','); + var _test = cookies.split(","); _test.forEach(function (elm) { - var test = elm.split('='); + var test = elm.split("="); - if (test[1] === 'wait') { - _this.cookieContainer.classList.add('open-banner'); + if (test[1] === "wait") { + _this.cookieContainer.classList.add("open-banner"); } }); } - this.modalCloseBtn.addEventListener('click', function (e) { + this.modalCloseBtn.addEventListener("click", function (e) { e.preventDefault(); - var cookies = this.getLDCWebCookie('ldcwebcn-init'); - var test = cookies.split(','); + var cookies = this.getLDCWebCookie("ldcwebcn-init"); + var test = cookies.split(","); var bIsCompleted = true; var _iterator = _createForOfIteratorHelper(test), @@ -660,7 +660,7 @@ var LdcwebCn = /*#__PURE__*/function () { for (_iterator.s(); !(_step = _iterator.n()).done;) { var item = _step.value; - if (item.indexOf('=wait') !== -1) { + if (item.indexOf("=wait") !== -1) { bIsCompleted = false; break; } @@ -672,8 +672,8 @@ var LdcwebCn = /*#__PURE__*/function () { } if (bIsCompleted) { - this.cookieContainer.classList.remove('open-modal'); - this.cookieContainer.classList.remove('open-banner'); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); } else { alert("Vous devez renseigner votre choix pour tous les cookies, svp."); } @@ -690,13 +690,13 @@ var LdcwebCn = /*#__PURE__*/function () { this.addCookie(_key, _value); } - var _iterator2 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll('.accept > label')), + var _iterator2 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll(".accept > label")), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var acceptLabel = _step2.value; - acceptLabel.classList.add('active'); + acceptLabel.classList.add("active"); } } catch (err) { _iterator2.e(err); @@ -704,13 +704,13 @@ var LdcwebCn = /*#__PURE__*/function () { _iterator2.f(); } - var _iterator3 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll('.deny > label')), + var _iterator3 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll(".deny > label")), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var denyLabel = _step3.value; - denyLabel.classList.remove('active'); + denyLabel.classList.remove("active"); } } catch (err) { _iterator3.e(err); @@ -719,12 +719,12 @@ var LdcwebCn = /*#__PURE__*/function () { } this.updateAllCookiesButtonsActiveStatus(); - this.cookieContainer.classList.remove('open-modal'); - this.cookieContainer.classList.remove('open-banner'); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); }.bind(this); - this.acceptAllBtnBanner.addEventListener('click', accept); - this.acceptAllBtn.addEventListener('click', accept); + this.acceptAllBtnBanner.addEventListener("click", accept); + this.acceptAllBtn.addEventListener("click", accept); var deny = function (e) { e.preventDefault(); @@ -737,13 +737,13 @@ var LdcwebCn = /*#__PURE__*/function () { this.removeCookie(_key2, _value2); } - var _iterator4 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll('.accept > label')), + var _iterator4 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll(".accept > label")), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var acceptLabel = _step4.value; - acceptLabel.classList.remove('active'); + acceptLabel.classList.remove("active"); } } catch (err) { _iterator4.e(err); @@ -751,13 +751,13 @@ var LdcwebCn = /*#__PURE__*/function () { _iterator4.f(); } - var _iterator5 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll('.deny > label')), + var _iterator5 = _createForOfIteratorHelper(this.cookieContainer.querySelectorAll(".deny > label")), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var denyLabel = _step5.value; - denyLabel.classList.add('active'); + denyLabel.classList.add("active"); } } catch (err) { _iterator5.e(err); @@ -766,26 +766,22 @@ var LdcwebCn = /*#__PURE__*/function () { } this.updateAllCookiesButtonsActiveStatus(); - this.cookieContainer.classList.remove('open-modal'); - this.cookieContainer.classList.remove('open-banner'); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); }.bind(this); - this.denyAllBtnBanner.addEventListener('click', deny); - this.denyAllBtn.addEventListener('click', deny); - this.cookieLink.addEventListener('click', function (e) { - e.preventDefault(); - this.setCookieList(); - this.updateAllCookiesButtonsActiveStatus(); - }.bind(this)); + this.denyAllBtnBanner.addEventListener("click", deny); + this.denyAllBtn.addEventListener("click", deny); - var _iterator6 = _createForOfIteratorHelper(this.personalizeBtn), + var _iterator6 = _createForOfIteratorHelper(this.cookieLink), _step6; try { for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { var item = _step6.value; - this.addEvent(item, 'click', function () { - this.setCookieList(); + this.addEvent(item, "click", function (e) { + e.preventDefault(); + this.openModal(); }.bind(this)); } } catch (err) { @@ -794,14 +790,35 @@ var LdcwebCn = /*#__PURE__*/function () { _iterator6.f(); } - this.setListenerOnChange(); - var cookie = this.getLDCWebCookie('ldcwebcn-init'); - var test = cookie.split(','); - test.forEach(function (elm) { - var test = elm.split('='); + var _iterator7 = _createForOfIteratorHelper(this.personalizeBtn), + _step7; - if (test[1] === 'true') { + try { + for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { + var _item = _step7.value; + this.addEvent(_item, "click", function (e) { + e.preventDefault(); + this.setCookieList(); + }.bind(this)); + } + } catch (err) { + _iterator7.e(err); + } finally { + _iterator7.f(); + } + + this.setListenerOnChange(); + var cookie = this.getLDCWebCookie("ldcwebcn-init"); + var test = cookie.split(","); + test.forEach(function (elm) { + var test = elm.split("="); + + if (test[1] === "true") { _this.config[test[0]].script(); + } else { + if (_this.config[test[0]].fallback !== undefined) { + _this.config[test[0]].fallback(); + } } }); this.updateAllCookiesButtonsActiveStatus(); @@ -810,101 +827,114 @@ var LdcwebCn = /*#__PURE__*/function () { _createClass(LdcwebCn, [{ key: "setCookieList", value: function setCookieList() { - var _this2 = this; - this.cookiesList.innerHTML = ""; - var cookiesSite = this.getLDCWebCookie('ldcwebcn-init'); + var cookiesSite = this.getLDCWebCookie("ldcwebcn-init"); - var _loop = function _loop() { + var acceptInputEvent = function acceptInputEvent(acceptLabel, denyLabel, key, value) { + return function (e) { + acceptLabel.classList.add("active"); + denyLabel.classList.remove("active"); + this.updateAllCookiesButtonsActiveStatus(); + this.addCookie(key, value); + }.bind(this, [acceptLabel, denyLabel, key, value]); + }; + + var denyInputEvent = function denyInputEvent(acceptLabel, denyLabel, key, value) { + return function (e) { + acceptLabel.classList.remove("active"); + denyLabel.classList.add("active"); + this.updateAllCookiesButtonsActiveStatus(); + this.removeCookie(key, value); + }.bind(this, [acceptLabel, denyLabel, key, value]); + }; + + for (var _i4 = 0, _Object$entries4 = Object.entries(this.config); _i4 < _Object$entries4.length; _i4++) { var _Object$entries4$_i = _slicedToArray(_Object$entries4[_i4], 2), key = _Object$entries4$_i[0], value = _Object$entries4$_i[1]; - var cookie = document.createElement('li'); - cookie.append(_this2.template.children.item(0).cloneNode(true)); - var name = cookie.querySelector('span.ldcweb-cn-name'); - var description = cookie.querySelector('span.ldcweb-cn-description'); - var link = cookie.querySelector('a.ldcweb-cn-link'); - var acceptInput = cookie.querySelector('.accept > input'); - var denyInput = cookie.querySelector('.deny > input'); - var acceptLabel = cookie.querySelector('.accept > label'); - var denyLabel = cookie.querySelector('.deny > label'); + var cookie = document.createElement("li"); + cookie.append(this.template.children.item(0).cloneNode(true)); + var name = cookie.querySelector("span.ldcweb-cn-name"); + var description = cookie.querySelector("span.ldcweb-cn-description"); + var link = cookie.querySelector("a.ldcweb-cn-link"); + var acceptInput = cookie.querySelector(".accept > input"); + var denyInput = cookie.querySelector(".deny > input"); + var acceptLabel = cookie.querySelector(".accept > label"); + var denyLabel = cookie.querySelector(".deny > label"); name.textContent = value.name; description.textContent = value.description; - link.textContent = "Politique de confidentialité"; + link.textContent = value.labelLink; link.setAttribute("href", value.link); - acceptInput.id = key + '1'; + acceptInput.id = key + "1"; acceptInput.name = key; acceptInput.dataset.name = key; - acceptLabel.htmlFor = key + '1'; - denyInput.id = key + '2'; + acceptLabel.htmlFor = key + "1"; + denyInput.id = key + "2"; denyInput.name = key; denyInput.dataset.name = key; - denyLabel.htmlFor = key + '2'; - acceptInput.addEventListener('click', function (e) { - acceptLabel.classList.add('active'); - denyLabel.classList.remove('active'); - this.updateAllCookiesButtonsActiveStatus(); - this.addCookie(key, value); - }.bind(_this2)); - denyInput.addEventListener('click', function (e) { - acceptLabel.classList.remove('active'); - denyLabel.classList.add('active'); - this.updateAllCookiesButtonsActiveStatus(); - this.removeCookie(key, value); - }.bind(_this2)); + denyLabel.htmlFor = key + "2"; + acceptInput.addEventListener("click", acceptInputEvent.apply(this, [acceptLabel, denyLabel, key, value])); + denyInput.addEventListener("click", denyInputEvent.apply(this, [acceptLabel, denyLabel, key, value])); + this.cookiesList.append(cookie); + var cookiesArray = cookiesSite.split(","); - _this2.cookiesList.append(cookie); + var _iterator8 = _createForOfIteratorHelper(cookiesArray), + _step8; - var cookiesArray = cookiesSite.split(','); - cookiesArray.forEach(function (elm) { - var name = elm.slice(0, elm.indexOf('=')); - var status = elm.slice(elm.indexOf('=') + 1); + try { + for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { + var cookieEl = _step8.value; - if (name === key) { - acceptLabel.classList.remove('active'); - denyLabel.classList.remove('active'); + var _name = cookieEl.slice(0, cookieEl.indexOf("=")); - switch (status) { - case 'true': - acceptLabel.classList.add('active'); - break; + var status = cookieEl.slice(cookieEl.indexOf("=") + 1); - case 'false': - denyLabel.classList.add('active'); - break; + if (_name === key) { + acceptLabel.classList.remove("active"); + denyLabel.classList.remove("active"); + + switch (status) { + case "true": + acceptLabel.classList.add("active"); + break; + + case "false": + denyLabel.classList.add("active"); + break; + } + } + + if (status === "wait") { + this.cookieContainer.classList.add("open-banner"); } } - - if (status === 'wait') { - _this2.cookieContainer.classList.add('open-banner'); - } - }); - }; - - for (var _i4 = 0, _Object$entries4 = Object.entries(this.config); _i4 < _Object$entries4.length; _i4++) { - _loop(); + } catch (err) { + _iterator8.e(err); + } finally { + _iterator8.f(); + } } - this.cookieContainer.classList.add('open-modal'); + this.cookieContainer.classList.add("open-modal"); this.setListenerOnChange(); } }, { key: "updateAllCookiesButtonsActiveStatus", value: function updateAllCookiesButtonsActiveStatus() { - var acceptsButtons = this.cookieContainer.querySelectorAll('div.accept > label'); - var deniesButtons = this.cookieContainer.querySelectorAll('div.deny > label'); - var activeAcceptsButtons = this.cookieContainer.querySelectorAll('div.accept > label.active'); - var activeDeniesButtons = this.cookieContainer.querySelectorAll('div.deny > label.active'); - this.acceptAllBtn.classList.remove('active'); - this.denyAllBtn.classList.remove('active'); + var acceptsButtons = this.cookieContainer.querySelectorAll("div.accept > label"); + var deniesButtons = this.cookieContainer.querySelectorAll("div.deny > label"); + var activeAcceptsButtons = this.cookieContainer.querySelectorAll("div.accept > label.active"); + var activeDeniesButtons = this.cookieContainer.querySelectorAll("div.deny > label.active"); + this.acceptAllBtn.classList.remove("active"); + this.denyAllBtn.classList.remove("active"); if (acceptsButtons.length && acceptsButtons.length === activeAcceptsButtons.length) { - this.acceptAllBtn.classList.add('active'); + this.acceptAllBtn.classList.add("active"); } if (deniesButtons.length && deniesButtons.length === activeDeniesButtons.length) { - this.denyAllBtn.classList.add('active'); + this.denyAllBtn.classList.add("active"); } } }, { @@ -919,18 +949,18 @@ var LdcwebCn = /*#__PURE__*/function () { }, { key: "removeCookie", value: function removeCookie(key, value) { - var _iterator7 = _createForOfIteratorHelper(value.cookies), - _step7; + var _iterator9 = _createForOfIteratorHelper(value.cookies), + _step9; try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var cookieName = _step7.value; + for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { + var cookieName = _step9.value; this.deleteBrowserCookie(cookieName, "/", "." + location.host); } } catch (err) { - _iterator7.e(err); + _iterator9.e(err); } finally { - _iterator7.f(); + _iterator9.f(); } if (document.getElementById(key)) { @@ -942,48 +972,45 @@ var LdcwebCn = /*#__PURE__*/function () { }, { key: "setListenerOnChange", value: function setListenerOnChange() { - var _this3 = this; + this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); - this.changeBtn = document.getElementsByClassName('ldcweb-cn-change'); + var itemClick = function itemClick(item) { + return function () { + this.changeStatus(item.getAttribute("data-name"), item.getAttribute("data-status")); + }.bind(this); + }; - var _iterator8 = _createForOfIteratorHelper(this.changeBtn), - _step8; + var _iterator10 = _createForOfIteratorHelper(this.changeBtn), + _step10; try { - var _loop2 = function _loop2() { - var item = _step8.value; - - _this3.addEvent(item, 'click', function () { - this.changeStatus(item.getAttribute('data-name'), item.getAttribute('data-status')); - }.bind(_this3)); - }; - - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - _loop2(); + for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { + var item = _step10.value; + this.addEvent(item, "click", itemClick.bind(this, [item])); } } catch (err) { - _iterator8.e(err); + _iterator10.e(err); } finally { - _iterator8.f(); + _iterator10.f(); } } }, { key: "changeStatus", value: function changeStatus(name, status) { - var _this4 = this; + var _this2 = this; var newCookie = []; - var cookie = this.getLDCWebCookie('ldcwebcn-init'); - var test = cookie.split(','); + var cookie = this.getLDCWebCookie("ldcwebcn-init"); + var test = cookie.split(","); test.forEach(function (elm) { - var test = elm.split('='); + var test = elm.split("="); if (test[0] === name) { newCookie.push(name + "=" + status); - if (status === 'false') { - _this4.config[test[0]].cookies.forEach(function (elm) { - var cookies = _this4.getLDCWebCookie(elm); + if (status === "false") { + _this2.config[test[0]].cookies.forEach(function (elm) { + var cookies = _this2.getLDCWebCookie(elm); if (cookies !== undefined) { document.cookie = elm + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=" + document.domain + "; path=/"; @@ -1007,21 +1034,26 @@ var LdcwebCn = /*#__PURE__*/function () { }, { key: "getLDCWebCookie", value: function getLDCWebCookie(name) { - var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")); + var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") + "=([^;]*)")); return matches ? decodeURIComponent(matches[1]) : undefined; } }, { key: "addEvent", value: function addEvent(element, evnt, funct) { - if (element.attachEvent) return element.attachEvent('on' + evnt, funct);else return element.addEventListener(evnt, funct, false); + if (element.attachEvent) return element.attachEvent("on" + evnt, funct);else return element.addEventListener(evnt, funct, false); } }, { key: "saveLDCWebCookie", value: function saveLDCWebCookie(content) { - // document.cookie = "ldcwebcn-init=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; var date = new Date(); var newDate = new Date(date.setMonth(date.getMonth() + 13)); - document.cookie = "ldcwebcn-init=" + content + "; expires=" + newDate.toUTCString() + ";"; + document.cookie = "ldcwebcn-init=" + content + "; expires=" + newDate.toUTCString() + "; path=/;"; + } + }, { + key: "openModal", + value: function openModal() { + this.setCookieList(); + this.updateAllCookiesButtonsActiveStatus(); } }]); diff --git a/resources/js/frontend/ldcweb-cn.js b/resources/js/frontend/ldcweb-cn.js index 7638ede..155fc84 100644 --- a/resources/js/frontend/ldcweb-cn.js +++ b/resources/js/frontend/ldcweb-cn.js @@ -1,28 +1,31 @@ /** * LDC Service Web - * Version 1.0 + * Version 1.3 */ export class LdcwebCn { - constructor(config) { this.config = config; - this.cookieContainer = document.getElementById('ldcweb-cn'); - this.bannerContainer = document.getElementById('ldcweb-banner'); - this.modalContainer = document.getElementById('ldcweb-cn-modal'); - this.modalCloseBtn = document.getElementById('close-link'); - this.acceptAllBtnBanner = document.getElementById('ldcweb-cn-accept-banner'); - this.acceptAllBtn = document.getElementById('ldcweb-cn-accept'); - this.denyAllBtnBanner = document.getElementById('ldcweb-cn-deny-banner'); - this.denyAllBtn = document.getElementById('ldcweb-cn-deny'); - this.personalizeBtn = document.getElementsByClassName('ldcweb-cn-personalize'); - this.changeBtn = document.getElementsByClassName('ldcweb-cn-change'); - this.cookiesList = document.getElementById('ldcweb-cn-list'); - this.cookieLink = document.querySelector('.footer-content a[href="#cookie"]') - this.template = document.getElementById('template').cloneNode(true); - document.getElementById('template').remove(); + this.cookieContainer = document.getElementById("ldcweb-cn"); + this.bannerContainer = document.getElementById("ldcweb-banner"); + this.modalContainer = document.getElementById("ldcweb-cn-modal"); + this.modalCloseBtn = document.getElementById("close-link"); + this.acceptAllBtnBanner = document.getElementById( + "ldcweb-cn-accept-banner" + ); + this.denyAllBtnBanner = document.getElementById("ldcweb-cn-deny-banner"); + this.acceptAllBtn = document.getElementById("ldcweb-cn-accept"); + this.denyAllBtn = document.getElementById("ldcweb-cn-deny"); + this.personalizeBtn = document.getElementsByClassName( + "ldcweb-cn-personalize" + ); + this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); + this.cookiesList = document.getElementById("ldcweb-cn-list"); + this.cookieLink = document.getElementsByClassName("ldcweb-cn-cookie-link"); + this.template = document.getElementById("template").cloneNode(true); + document.getElementById("template").remove(); - let cookies = this.getLDCWebCookie('ldcwebcn-init'); + let cookies = this.getLDCWebCookie("ldcwebcn-init"); if (cookies === undefined) { let newCookie = []; @@ -31,34 +34,36 @@ export class LdcwebCn { } this.saveLDCWebCookie(newCookie); - this.cookieContainer.classList.add('open-banner'); + this.cookieContainer.classList.add("open-banner"); } else { - let test = cookies.split(','); - test.forEach(elm => { - let test = elm.split('='); - if (test[1] === 'wait') { - this.cookieContainer.classList.add('open-banner'); + let test = cookies.split(","); + test.forEach((elm) => { + let test = elm.split("="); + if (test[1] === "wait") { + this.cookieContainer.classList.add("open-banner"); } }); } this.modalCloseBtn.addEventListener( - 'click', + "click", function (e) { e.preventDefault(); - let cookies = this.getLDCWebCookie('ldcwebcn-init'); - let test = cookies.split(','); + let cookies = this.getLDCWebCookie("ldcwebcn-init"); + let test = cookies.split(","); let bIsCompleted = true; for (let item of test) { - if (item.indexOf('=wait') !== -1) { + if (item.indexOf("=wait") !== -1) { bIsCompleted = false; break; } } if (bIsCompleted) { - this.cookieContainer.classList.remove('open-modal'); - this.cookieContainer.classList.remove('open-banner'); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); } else { - alert("Vous devez renseigner votre choix pour tous les cookies, svp."); + alert( + "Vous devez renseigner votre choix pour tous les cookies, svp." + ); } }.bind(this) ); @@ -67,51 +72,62 @@ export class LdcwebCn { for (const [key, value] of Object.entries(this.config)) { this.addCookie(key, value); } - for (let acceptLabel of this.cookieContainer.querySelectorAll('.accept > label')) { - acceptLabel.classList.add('active'); + for (let acceptLabel of this.cookieContainer.querySelectorAll( + ".accept > label" + )) { + acceptLabel.classList.add("active"); } - for (let denyLabel of this.cookieContainer.querySelectorAll('.deny > label')) { - denyLabel.classList.remove('active'); + for (let denyLabel of this.cookieContainer.querySelectorAll( + ".deny > label" + )) { + denyLabel.classList.remove("active"); } - this.updateAllCookiesButtonsActiveStatus() - this.cookieContainer.classList.remove('open-modal'); - this.cookieContainer.classList.remove('open-banner'); + this.updateAllCookiesButtonsActiveStatus(); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); }.bind(this); - this.acceptAllBtnBanner.addEventListener('click', accept); - this.acceptAllBtn.addEventListener('click', accept); + this.acceptAllBtnBanner.addEventListener("click", accept); + this.acceptAllBtn.addEventListener("click", accept); let deny = function (e) { e.preventDefault(); for (const [key, value] of Object.entries(this.config)) { this.removeCookie(key, value); } - for (let acceptLabel of this.cookieContainer.querySelectorAll('.accept > label')) { - acceptLabel.classList.remove('active'); + for (let acceptLabel of this.cookieContainer.querySelectorAll( + ".accept > label" + )) { + acceptLabel.classList.remove("active"); } - for (let denyLabel of this.cookieContainer.querySelectorAll('.deny > label')) { - denyLabel.classList.add('active'); + for (let denyLabel of this.cookieContainer.querySelectorAll( + ".deny > label" + )) { + denyLabel.classList.add("active"); } - this.updateAllCookiesButtonsActiveStatus() - this.cookieContainer.classList.remove('open-modal'); - this.cookieContainer.classList.remove('open-banner'); + this.updateAllCookiesButtonsActiveStatus(); + this.cookieContainer.classList.remove("open-modal"); + this.cookieContainer.classList.remove("open-banner"); }.bind(this); - this.denyAllBtnBanner.addEventListener('click', deny); - this.denyAllBtn.addEventListener('click', deny); + this.denyAllBtnBanner.addEventListener("click", deny); + this.denyAllBtn.addEventListener("click", deny); - this.cookieLink.addEventListener( - 'click', - function (e) { - e.preventDefault(); - this.setCookieList(); - this.updateAllCookiesButtonsActiveStatus() - }.bind(this) - ); + for (let item of this.cookieLink) { + this.addEvent( + item, + "click", + function (e) { + e.preventDefault(); + this.openModal(); + }.bind(this) + ); + } for (let item of this.personalizeBtn) { this.addEvent( item, - 'click', - function () { + "click", + function (e) { + e.preventDefault(); this.setCookieList(); }.bind(this) ); @@ -119,100 +135,128 @@ export class LdcwebCn { this.setListenerOnChange(); - let cookie = this.getLDCWebCookie('ldcwebcn-init'); - let test = cookie.split(','); - test.forEach(elm => { - let test = elm.split('='); - if (test[1] === 'true') { + let cookie = this.getLDCWebCookie("ldcwebcn-init"); + let test = cookie.split(","); + test.forEach((elm) => { + let test = elm.split("="); + if (test[1] === "true") { this.config[test[0]].script(); + } else { + if (this.config[test[0]].fallback !== undefined) { + this.config[test[0]].fallback(); + } } }); - this.updateAllCookiesButtonsActiveStatus() + this.updateAllCookiesButtonsActiveStatus(); } setCookieList() { this.cookiesList.innerHTML = ""; - let cookiesSite = this.getLDCWebCookie('ldcwebcn-init'); + let cookiesSite = this.getLDCWebCookie("ldcwebcn-init"); + let acceptInputEvent = function (acceptLabel, denyLabel, key, value) { + return function (e) { + acceptLabel.classList.add("active"); + denyLabel.classList.remove("active"); + this.updateAllCookiesButtonsActiveStatus(); + this.addCookie(key, value); + }.bind(this, [acceptLabel, denyLabel, key, value]); + }; + let denyInputEvent = function (acceptLabel, denyLabel, key, value) { + return function (e) { + acceptLabel.classList.remove("active"); + denyLabel.classList.add("active"); + this.updateAllCookiesButtonsActiveStatus(); + this.removeCookie(key, value); + }.bind(this, [acceptLabel, denyLabel, key, value]); + }; for (const [key, value] of Object.entries(this.config)) { - let cookie = document.createElement('li'); + let cookie = document.createElement("li"); cookie.append(this.template.children.item(0).cloneNode(true)); - let name = cookie.querySelector('span.ldcweb-cn-name'); - let description = cookie.querySelector('span.ldcweb-cn-description'); - let link = cookie.querySelector('a.ldcweb-cn-link'); - let acceptInput = cookie.querySelector('.accept > input'); - let denyInput = cookie.querySelector('.deny > input'); - let acceptLabel = cookie.querySelector('.accept > label'); - let denyLabel = cookie.querySelector('.deny > label'); + let name = cookie.querySelector("span.ldcweb-cn-name"); + let description = cookie.querySelector("span.ldcweb-cn-description"); + let link = cookie.querySelector("a.ldcweb-cn-link"); + let acceptInput = cookie.querySelector(".accept > input"); + let denyInput = cookie.querySelector(".deny > input"); + let acceptLabel = cookie.querySelector(".accept > label"); + let denyLabel = cookie.querySelector(".deny > label"); name.textContent = value.name; description.textContent = value.description; - link.textContent = "Politique de confidentialité"; + link.textContent = value.labelLink; link.setAttribute("href", value.link); - acceptInput.id = key + '1'; + acceptInput.id = key + "1"; acceptInput.name = key; acceptInput.dataset.name = key; - acceptLabel.htmlFor = key + '1'; - denyInput.id = key + '2'; + acceptLabel.htmlFor = key + "1"; + denyInput.id = key + "2"; denyInput.name = key; denyInput.dataset.name = key; - denyLabel.htmlFor = key + '2'; + denyLabel.htmlFor = key + "2"; - acceptInput.addEventListener('click', function (e) { - acceptLabel.classList.add('active'); - denyLabel.classList.remove('active'); - this.updateAllCookiesButtonsActiveStatus(); - this.addCookie(key, value) - }.bind(this)); - denyInput.addEventListener('click', function (e) { - acceptLabel.classList.remove('active'); - denyLabel.classList.add('active'); - this.updateAllCookiesButtonsActiveStatus(); - this.removeCookie(key, value) - }.bind(this)); + acceptInput.addEventListener( + "click", + acceptInputEvent.apply(this, [acceptLabel, denyLabel, key, value]) + ); + denyInput.addEventListener( + "click", + denyInputEvent.apply(this, [acceptLabel, denyLabel, key, value]) + ); this.cookiesList.append(cookie); - let cookiesArray = cookiesSite.split(','); - cookiesArray.forEach(elm => { - let name = elm.slice(0, elm.indexOf('=')); - let status = elm.slice(elm.indexOf('=') + 1); + let cookiesArray = cookiesSite.split(","); + for (const cookieEl of cookiesArray) { + let name = cookieEl.slice(0, cookieEl.indexOf("=")); + let status = cookieEl.slice(cookieEl.indexOf("=") + 1); if (name === key) { - acceptLabel.classList.remove('active'); - denyLabel.classList.remove('active'); + acceptLabel.classList.remove("active"); + denyLabel.classList.remove("active"); switch (status) { - case 'true': - acceptLabel.classList.add('active'); + case "true": + acceptLabel.classList.add("active"); break; - case 'false': - denyLabel.classList.add('active'); + case "false": + denyLabel.classList.add("active"); break; } } - if (status === 'wait') { - this.cookieContainer.classList.add('open-banner'); + if (status === "wait") { + this.cookieContainer.classList.add("open-banner"); } - }); + } } - this.cookieContainer.classList.add('open-modal'); + this.cookieContainer.classList.add("open-modal"); this.setListenerOnChange(); } updateAllCookiesButtonsActiveStatus() { - let acceptsButtons = this.cookieContainer.querySelectorAll('div.accept > label'); - let deniesButtons = this.cookieContainer.querySelectorAll('div.deny > label'); - let activeAcceptsButtons = this.cookieContainer.querySelectorAll('div.accept > label.active'); - let activeDeniesButtons = this.cookieContainer.querySelectorAll('div.deny > label.active'); + let acceptsButtons = + this.cookieContainer.querySelectorAll("div.accept > label"); + let deniesButtons = + this.cookieContainer.querySelectorAll("div.deny > label"); + let activeAcceptsButtons = this.cookieContainer.querySelectorAll( + "div.accept > label.active" + ); + let activeDeniesButtons = this.cookieContainer.querySelectorAll( + "div.deny > label.active" + ); - this.acceptAllBtn.classList.remove('active'); - this.denyAllBtn.classList.remove('active'); - if (acceptsButtons.length && acceptsButtons.length === activeAcceptsButtons.length) { - this.acceptAllBtn.classList.add('active'); + this.acceptAllBtn.classList.remove("active"); + this.denyAllBtn.classList.remove("active"); + if ( + acceptsButtons.length && + acceptsButtons.length === activeAcceptsButtons.length + ) { + this.acceptAllBtn.classList.add("active"); } - if (deniesButtons.length && deniesButtons.length === activeDeniesButtons.length) { - this.denyAllBtn.classList.add('active'); + if ( + deniesButtons.length && + deniesButtons.length === activeDeniesButtons.length + ) { + this.denyAllBtn.classList.add("active"); } } @@ -225,7 +269,7 @@ export class LdcwebCn { removeCookie(key, value) { for (let cookieName of value.cookies) { - this.deleteBrowserCookie(cookieName, "/", "." + location.host) + this.deleteBrowserCookie(cookieName, "/", "." + location.host); } if (document.getElementById(key)) { document.getElementById(key).remove(); @@ -233,33 +277,43 @@ export class LdcwebCn { this.changeStatus(key, "false"); } setListenerOnChange() { - this.changeBtn = document.getElementsByClassName('ldcweb-cn-change'); + this.changeBtn = document.getElementsByClassName("ldcweb-cn-change"); + let itemClick = function (item) { + return function () { + this.changeStatus( + item.getAttribute("data-name"), + item.getAttribute("data-status") + ); + }.bind(this); + }; for (let item of this.changeBtn) { - this.addEvent( - item, - 'click', - function () { - this.changeStatus(item.getAttribute('data-name'), item.getAttribute('data-status')); - }.bind(this) - ); + this.addEvent(item, "click", itemClick.bind(this, [item])); } } changeStatus(name, status) { let newCookie = []; - let cookie = this.getLDCWebCookie('ldcwebcn-init'); - let test = cookie.split(','); - test.forEach(elm => { - let test = elm.split('='); + let cookie = this.getLDCWebCookie("ldcwebcn-init"); + let test = cookie.split(","); + test.forEach((elm) => { + let test = elm.split("="); if (test[0] === name) { newCookie.push(name + "=" + status); - if (status === 'false') { - this.config[test[0]].cookies.forEach(elm => { + if (status === "false") { + this.config[test[0]].cookies.forEach((elm) => { let cookies = this.getLDCWebCookie(elm); if (cookies !== undefined) { - document.cookie = elm + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=" + document.domain + "; path=/"; - document.cookie = elm + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=." + document.domain + "; path=/"; + document.cookie = + elm + + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=" + + document.domain + + "; path=/"; + document.cookie = + elm + + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=." + + document.domain + + "; path=/"; } }); } @@ -273,32 +327,44 @@ export class LdcwebCn { deleteBrowserCookie(name, path, domain) { if (this.getLDCWebCookie(name)) { - document.cookie = name + "=" + - ((path) ? ";path=" + path : "") + - ((domain) ? ";domain=" + domain : "") + + document.cookie = + name + + "=" + + (path ? ";path=" + path : "") + + (domain ? ";domain=" + domain : "") + ";expires=Thu, 01 Jan 1970 00:00:01 GMT"; } } getLDCWebCookie(name) { - let matches = document.cookie.match(new RegExp( - "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" - )); + let matches = document.cookie.match( + new RegExp( + "(?:^|; )" + + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") + + "=([^;]*)" + ) + ); return matches ? decodeURIComponent(matches[1]) : undefined; } addEvent(element, evnt, funct) { - if (element.attachEvent) - return element.attachEvent('on' + evnt, funct); - else - return element.addEventListener(evnt, funct, false); + if (element.attachEvent) return element.attachEvent("on" + evnt, funct); + else return element.addEventListener(evnt, funct, false); } saveLDCWebCookie(content) { - // document.cookie = "ldcwebcn-init=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; let date = new Date(); let newDate = new Date(date.setMonth(date.getMonth() + 13)); - document.cookie = "ldcwebcn-init=" + content + "; expires=" + newDate.toUTCString() + ";"; + document.cookie = + "ldcwebcn-init=" + + content + + "; expires=" + + newDate.toUTCString() + + "; path=/;"; } + openModal() { + this.setCookieList(); + this.updateAllCookiesButtonsActiveStatus(); + } }