fix cookies bug

This commit is contained in:
Sebastien Hattry 2021-12-01 14:50:01 +01:00
parent df28b6a8ae
commit d0413cdadf
2 changed files with 394 additions and 296 deletions

View file

@ -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();
}
}]);

View file

@ -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();
}
}