From caf3d955c99b50f2b30c381489d73503379bbad3 Mon Sep 17 00:00:00 2001 From: Nicolas Guilloux Date: Wed, 4 Aug 2021 14:47:00 +0200 Subject: [PATCH 1/2] Add hotjar and googleAnalytics, fix date in decision callback --- CHANGELOG.md | 8 +++++ js/cookies-regulation-services.js | 55 +++++++++++++++++++++++++++---- js/cookies-regulation.js | 2 +- package.json | 2 +- 4 files changed, 58 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11c4609..d33607e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.1.4 + +New features: +* Add hotjar and googleAnalytics to the provided services + +Bug fixes: +* Fix the date given in the decision callback + ## 0.1.2 New features: diff --git a/js/cookies-regulation-services.js b/js/cookies-regulation-services.js index cdefd24..6756729 100644 --- a/js/cookies-regulation-services.js +++ b/js/cookies-regulation-services.js @@ -1,6 +1,15 @@ window.cookiesRegulationServices = {}; -// Google Tag Manager +function insertScript(url) { + const script = document.createElement('script'); + script.async = true; + script.src = url; + + const head = document.getElementsByTagName('head')[0]; + head.appendChild(script); +} + +// Google Tag Manager window.cookiesRegulationServices.googleTagManager = { requiredOptions: ['id'], cookiesIdentifiers: ['^ga.*$', '^_ga.*$', '^_gc.*$', '^_gi.*$', '^_hj.*$', '^__utma.*$', '^__utmb.*$', '^__utmc.*$', '^__utmt.*$', '^__utmz.*$', '^__gads.*$'], @@ -8,15 +17,47 @@ window.cookiesRegulationServices.googleTagManager = { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'gtm.start': new Date().getTime(), - event: 'gtm.js' + 'event': 'gtm.js' + }); + + insertScript('https://www.googletagmanager.com/gtm.js?id=' + options.id); + } +}; + +// Google Analytics +window.cookiesRegulationServices.googleAnalytics = { + requiredOptions: ['id'], + cookiesIdentifiers: ['^ga.*$', '^_ga.*$', '^_gc.*$', '^_gi.*$', '^_hj.*$', '^__utma.*$', '^__utmb.*$', '^__utmc.*$', '^__utmt.*$', '^__utmz.*$', '^__gads.*$'], + callback: function (options) { + window.dataLayer = window.dataLayer || []; + window.dataLayer.push({ + js: new Date(), + config: options.id, }); - var scripts = document.getElementsByTagName('script')[0]; + insertScript('https://www.googletagmanager.com/gtag/js?id=' + options.id); + } +}; + +// Hotjar +window.cookiesRegulationServices.hotjar = { + requiredOptions: ['id'], + cookiesIdentifiers: ['hjClosedSurveyInvites', '^_hj[a-zA-Z0-9]*$'], + callback: function (options) { + window._hjSettings = { + hjid: options.id, + hjsv: 6, + }; + + window.hj = window.hj || function() { + (window.hj.q = window.hj.q || []).push(arguments) + }; - var googleTagManagerScript = document.createElement('script'); - googleTagManagerScript.async = true; - googleTagManagerScript.src ='https://www.googletagmanager.com/gtm.js?id=' + options.id; + const url = 'https://static.hotjar.com/c/hotjar-' + + window._hjSettings.hjid + + '.js?sv=' + + window._hjSettings.hjsv; - scripts.parentNode.insertBefore(googleTagManagerScript, scripts); + insertScript(url); } }; diff --git a/js/cookies-regulation.js b/js/cookies-regulation.js index 93fb366..f1c264f 100644 --- a/js/cookies-regulation.js +++ b/js/cookies-regulation.js @@ -73,7 +73,7 @@ class CookiesRegulation { let preferences = data[0]; let reloadPage = data[1]; - let metadata = { uuid: uuidv4(), date: new Date().toLocaleString() }; + let metadata = { uuid: uuidv4(), date: new Date().toISOString() }; let decision = { preferences: preferences, metadata: metadata }; this.decisionStorage.write(decision); diff --git a/package.json b/package.json index 4401f3d..7f2040e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rich-id/cookies-regulation", - "version": "0.1.3", + "version": "0.1.4", "scripts": { "build": "parcel build js/cookies-regulation.js", "build-release": "parcel build --no-source-maps js/cookies-regulation.js", From f02f50346e6dabf8180de6d71e6c7b1da6524d78 Mon Sep 17 00:00:00 2001 From: Nicolas Guilloux Date: Thu, 5 Aug 2021 10:44:21 +0200 Subject: [PATCH 2/2] Add anonymize_ip for GoogleAnalytics --- CHANGELOG.md | 5 +++++ js/cookies-regulation-services.js | 15 +++++++++++---- package.json | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d33607e..4199701 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.1.5 + +New feature: +* Add support for `anonymize_ip` option for Google Analytics + ## 0.1.4 New features: diff --git a/js/cookies-regulation-services.js b/js/cookies-regulation-services.js index 6756729..3301edb 100644 --- a/js/cookies-regulation-services.js +++ b/js/cookies-regulation-services.js @@ -30,12 +30,19 @@ window.cookiesRegulationServices.googleAnalytics = { cookiesIdentifiers: ['^ga.*$', '^_ga.*$', '^_gc.*$', '^_gi.*$', '^_hj.*$', '^__utma.*$', '^__utmb.*$', '^__utmc.*$', '^__utmt.*$', '^__utmz.*$', '^__gads.*$'], callback: function (options) { window.dataLayer = window.dataLayer || []; - window.dataLayer.push({ - js: new Date(), - config: options.id, - }); + window.gtag = function gtag() { + window.dataLayer.push(arguments); + }; + + const additionalData = {anonymize_ip: false}; + + if (options.anonymize_ip === true) { + additionalData.anonymize_ip = true; + } insertScript('https://www.googletagmanager.com/gtag/js?id=' + options.id); + gtag('js', new Date()); + gtag('config', options.id, additionalData); } }; diff --git a/package.json b/package.json index 7f2040e..575b79d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rich-id/cookies-regulation", - "version": "0.1.4", + "version": "0.1.5", "scripts": { "build": "parcel build js/cookies-regulation.js", "build-release": "parcel build --no-source-maps js/cookies-regulation.js",