diff --git a/modules/cookies_ga/cookies_ga.libraries.yml b/modules/cookies_ga/cookies_ga.libraries.yml index f47a02c..9d6427a 100644 --- a/modules/cookies_ga/cookies_ga.libraries.yml +++ b/modules/cookies_ga/cookies_ga.libraries.yml @@ -2,3 +2,6 @@ analytics: version: VERSION js: js/cookies_ga.js: {} + dependencies: + - core/drupal + - core/drupalSettings diff --git a/modules/cookies_ga/js/cookies_ga.js b/modules/cookies_ga/js/cookies_ga.js index 242974e..b6c8bcb 100644 --- a/modules/cookies_ga/js/cookies_ga.js +++ b/modules/cookies_ga/js/cookies_ga.js @@ -2,7 +2,7 @@ * @file * Defines Javascript behaviors for the cookies module. */ -(function (Drupal) { +(function (Drupal, drupalSettings) { 'use strict'; /** @@ -35,6 +35,20 @@ } }, + consentDenied: function () { + let account = drupalSettings.google_analytics.account; + let identifier = account.replace("G-", ""); + let cookiesNames = [ + '_ga', + '_gid', + '_ga_' + identifier, + ]; + for (let inc in cookiesNames) { + let cname = cookiesNames[inc]; + document.cookie = cname + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain='+location.host; + } + }, + attach: function (context) { var self = this; document.addEventListener('cookiesjsrUserConsent', function (event) { @@ -42,7 +56,10 @@ if (typeof service.analytics !== 'undefined' && service.analytics) { self.consentGiven(context); } + else { + self.consentDenied(context); + } }); } }; -})(Drupal); +})(Drupal, drupalSettings); diff --git a/modules/cookies_gtag/js/cookies_gtag.js b/modules/cookies_gtag/js/cookies_gtag.js index 1ca5630..0899063 100644 --- a/modules/cookies_gtag/js/cookies_gtag.js +++ b/modules/cookies_gtag/js/cookies_gtag.js @@ -35,6 +35,31 @@ } }, + consentDenied: function () { + let cookiesNames = [ + '_ga', + '_gid', + ]; + let cookies = this.getCookies(); + for (let k in cookies) { + let cookie = cookies[k].trim(); + if (cookie.startsWith('_ga_')) { + let cookieName = cookie.split("="); + cookiesNames.push(cookieName[0]); + } + } + for (let inc in cookiesNames) { + let cname = cookiesNames[inc]; + document.cookie = cname + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain='+location.host; + } + }, + + getCookies: function () { + let cookie = document.cookie; + let cookies = cookie.split(";"); + return cookies; + }, + attach: function (context) { var self = this; document.addEventListener('cookiesjsrUserConsent', function (event) { @@ -42,6 +67,9 @@ if (typeof service.gtag !== 'undefined' && service.gtag) { self.consentGiven(context); } + else { + self.consentDenied(context); + } }); } };