shithub: hugo

Download patch

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