ref: 5f24a2c047db0bff8c9e267bfa8ef8e43e6bd24e
parent: 710142016b140538bfc11e48bb32d26fa685b2ad
author: Bjørn Erik Pedersen <[email protected]>
date: Mon May 21 10:02:30 EDT 2018
Add PrivacyEnhanced mode for YouTube to the GDPR Policy See #4616
--- a/config/privacy/privacyConfig.go
+++ b/config/privacy/privacyConfig.go
@@ -72,8 +72,12 @@
// YouTube holds the privacy configuration settingsrelated to the YouTube shortcode.
type YouTube struct {
- Service `mapstructure:",squash"`
- NoCookie bool
+ Service `mapstructure:",squash"`
+
+ // When you turn on privacy-enhanced mode,
+ // YouTube won’t store information about visitors on your website
+ // unless they play the video.
+ PrivacyEnhanced bool
}
func DecodeConfig(cfg config.Provider) (pc Config, err error) {
--- a/config/privacy/privacyConfig_test.go
+++ b/config/privacy/privacyConfig_test.go
@@ -44,7 +44,7 @@
disable = true
[privacy.youtube]
disable = true
-noCookie = true
+privacyEnhanced = true
`
cfg, err := config.FromConfigString(tomlConfig, "toml")
assert.NoError(err)
@@ -61,7 +61,7 @@
assert.True(pc.Tweet.Disable)
assert.True(pc.Vimeo.Disable)
- assert.True(pc.YouTube.NoCookie)
+ assert.True(pc.YouTube.PrivacyEnhanced)
assert.True(pc.YouTube.Disable)
}
@@ -74,7 +74,7 @@
[Privacy]
[Privacy.YouTube]
-NoCOOKIE = true
+PrivacyENhanced = true
`
cfg, err := config.FromConfigString(tomlConfig, "toml")
assert.NoError(err)
@@ -82,7 +82,7 @@
pc, err := DecodeConfig(cfg)
assert.NoError(err)
assert.NotNil(pc)
- assert.True(pc.YouTube.NoCookie)
+ assert.True(pc.YouTube.PrivacyEnhanced)
}
func TestDecodeConfigDefault(t *testing.T) {
@@ -91,5 +91,5 @@
pc, err := DecodeConfig(viper.New())
assert.NoError(err)
assert.NotNil(pc)
- assert.False(pc.YouTube.NoCookie)
+ assert.False(pc.YouTube.PrivacyEnhanced)
}
--- a/hugolib/config_test.go
+++ b/hugolib/config_test.go
@@ -377,7 +377,7 @@
[privacy]
[privacy.youtube]
-noCookie = true
+privacyEnhanced = true
`
b := newTestSitesBuilder(t)
@@ -384,6 +384,6 @@
b.WithConfigFile("toml", tomlConfig)
b.Build(BuildCfg{SkipRender: true})
- assert.True(b.H.Sites[0].Info.PrivacyConfig.YouTube.NoCookie)
+ assert.True(b.H.Sites[0].Info.PrivacyConfig.YouTube.PrivacyEnhanced)
}
--- a/tpl/tplimpl/embedded/templates.autogen.go
+++ b/tpl/tplimpl/embedded/templates.autogen.go
@@ -287,13 +287,14 @@
{{- end -}}`},
{`shortcodes/youtube.html`, `{{- $pc := .Page.Site.PrivacyConfig.YouTube -}}
{{- if not $pc.Disable -}}
+{{ $ytHost := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" }}
{{ if .IsNamedParams }}
<div {{ if .Get "class" }}class="{{ .Get "class" }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
- <iframe src="//www.youtube.com/embed/{{ .Get "id" }}?{{ with .Get "autoplay" }}{{ if eq . "true" }}autoplay=1{{ end }}{{ end }}"
+ <iframe src="//{{ $ytHost }}/embed/{{ .Get "id" }}?{{ with .Get "autoplay" }}{{ if eq . "true" }}autoplay=1{{ end }}{{ end }}"
{{ if not (.Get "class") }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}allowfullscreen frameborder="0" title="YouTube Video"></iframe>
</div>{{ else }}
<div {{ if len .Params | eq 2 }}class="{{ .Get 1 }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
- <iframe src="//www.youtube.com/embed/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}allowfullscreen frameborder="0" title="YouTube Video"></iframe>
+ <iframe src="//{{ $ytHost }}/embed/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}allowfullscreen frameborder="0" title="YouTube Video"></iframe>
</div>
{{ end }}
{{- end -}}`},
--- a/tpl/tplimpl/embedded/templates/shortcodes/youtube.html
+++ b/tpl/tplimpl/embedded/templates/shortcodes/youtube.html
@@ -1,12 +1,13 @@
{{- $pc := .Page.Site.PrivacyConfig.YouTube -}}
{{- if not $pc.Disable -}}
+{{ $ytHost := cond $pc.PrivacyEnhanced "www.youtube-nocookie.com" "www.youtube.com" }}
{{ if .IsNamedParams }}
<div {{ if .Get "class" }}class="{{ .Get "class" }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
- <iframe src="//www.youtube.com/embed/{{ .Get "id" }}?{{ with .Get "autoplay" }}{{ if eq . "true" }}autoplay=1{{ end }}{{ end }}"
+ <iframe src="//{{ $ytHost }}/embed/{{ .Get "id" }}?{{ with .Get "autoplay" }}{{ if eq . "true" }}autoplay=1{{ end }}{{ end }}"
{{ if not (.Get "class") }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}allowfullscreen frameborder="0" title="YouTube Video"></iframe>
</div>{{ else }}
<div {{ if len .Params | eq 2 }}class="{{ .Get 1 }}"{{ else }}style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;"{{ end }}>
- <iframe src="//www.youtube.com/embed/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}allowfullscreen frameborder="0" title="YouTube Video"></iframe>
+ <iframe src="//{{ $ytHost }}/embed/{{ .Get 0 }}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" {{ end }}allowfullscreen frameborder="0" title="YouTube Video"></iframe>
</div>
{{ end }}
{{- end -}}
\ No newline at end of file