diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-05-21 10:18:36 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-05-21 13:16:43 +0200 |
commit | 710142016b140538bfc11e48bb32d26fa685b2ad (patch) | |
tree | 602d8c376a1eba51327becaa17b67d390d9be7ba /tpl/tplimpl | |
parent | f45b522ebffafc61a3cb9b694bc3542747c73e07 (diff) |
Add RespectDoNotTrack to GDPR privacy policy for Google Analytics
See #4616
Diffstat (limited to 'tpl/tplimpl')
-rw-r--r-- | tpl/tplimpl/embedded/templates.autogen.go | 34 | ||||
-rwxr-xr-x | tpl/tplimpl/embedded/templates/google_analytics.html | 25 | ||||
-rwxr-xr-x | tpl/tplimpl/embedded/templates/google_analytics_async.html | 9 |
3 files changed, 48 insertions, 20 deletions
diff --git a/tpl/tplimpl/embedded/templates.autogen.go b/tpl/tplimpl/embedded/templates.autogen.go index 8556c32c7..71a1fd14f 100644 --- a/tpl/tplimpl/embedded/templates.autogen.go +++ b/tpl/tplimpl/embedded/templates.autogen.go @@ -103,23 +103,37 @@ var EmbeddedTemplates = [][2]string{ {{- if not $pc.Disable -}} {{ with .Site.GoogleAnalytics }} <script> -(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ -(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), -m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) -})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); - -ga('create', '{{ . }}', 'auto'); -ga('send', 'pageview'); +{{ template "__ga_js_set_doNotTrack" $ }} +if (!doNotTrack) { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create', '{{ . }}', 'auto'); + ga('send', 'pageview'); +} </script> {{ end }} +{{- end -}} +{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}} +{{- $pc := .Site.PrivacyConfig.GoogleAnalytics -}} +{{- if not $pc.RespectDoNotTrack -}} +var doNotTrack = false; +{{- else -}} +var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack); +var doNotTrack = (dnt == "1" || dnt == "yes"); +{{- end -}} {{- end -}}`}, {`google_analytics_async.html`, `{{- $pc := .Site.PrivacyConfig.GoogleAnalytics -}} {{- if not $pc.Disable -}} {{ with .Site.GoogleAnalytics }} <script> -window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; -ga('create', '{{ . }}', 'auto'); -ga('send', 'pageview'); +{{ template "__ga_js_set_doNotTrack" $ }} +if (!doNotTrack) { + window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; + ga('create', '{{ . }}', 'auto'); + ga('send', 'pageview'); +} </script> <script async src='//www.google-analytics.com/analytics.js'></script> {{ end }} diff --git a/tpl/tplimpl/embedded/templates/google_analytics.html b/tpl/tplimpl/embedded/templates/google_analytics.html index 89c193240..8c7951b58 100755 --- a/tpl/tplimpl/embedded/templates/google_analytics.html +++ b/tpl/tplimpl/embedded/templates/google_analytics.html @@ -2,13 +2,24 @@ {{- if not $pc.Disable -}} {{ with .Site.GoogleAnalytics }} <script> -(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ -(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), -m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) -})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); - -ga('create', '{{ . }}', 'auto'); -ga('send', 'pageview'); +{{ template "__ga_js_set_doNotTrack" $ }} +if (!doNotTrack) { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create', '{{ . }}', 'auto'); + ga('send', 'pageview'); +} </script> {{ end }} +{{- end -}} +{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}} +{{- $pc := .Site.PrivacyConfig.GoogleAnalytics -}} +{{- if not $pc.RespectDoNotTrack -}} +var doNotTrack = false; +{{- else -}} +var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack); +var doNotTrack = (dnt == "1" || dnt == "yes"); +{{- end -}} {{- end -}}
\ No newline at end of file diff --git a/tpl/tplimpl/embedded/templates/google_analytics_async.html b/tpl/tplimpl/embedded/templates/google_analytics_async.html index eb4fe9b88..48a24c1c0 100755 --- a/tpl/tplimpl/embedded/templates/google_analytics_async.html +++ b/tpl/tplimpl/embedded/templates/google_analytics_async.html @@ -2,9 +2,12 @@ {{- if not $pc.Disable -}} {{ with .Site.GoogleAnalytics }} <script> -window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; -ga('create', '{{ . }}', 'auto'); -ga('send', 'pageview'); +{{ template "__ga_js_set_doNotTrack" $ }} +if (!doNotTrack) { + window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; + ga('create', '{{ . }}', 'auto'); + ga('send', 'pageview'); +} </script> <script async src='//www.google-analytics.com/analytics.js'></script> {{ end }} |