Fixes #4798
This commit is contained in:
parent
ceaff7cafc
commit
07b96d16e8
7 changed files with 90 additions and 0 deletions
|
@ -77,6 +77,9 @@ type Twitter struct {
|
||||||
// When set to true, the Tweet and its embedded page on your site are not used
|
// When set to true, the Tweet and its embedded page on your site are not used
|
||||||
// for purposes that include personalized suggestions and personalized ads.
|
// for purposes that include personalized suggestions and personalized ads.
|
||||||
EnableDNT bool
|
EnableDNT bool
|
||||||
|
|
||||||
|
// If simple mode is enabled, a static and no-JS version of the Tweet will be built.
|
||||||
|
Simple bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vimeo holds the privacy configuration settingsrelated to the Vimeo shortcode.
|
// Vimeo holds the privacy configuration settingsrelated to the Vimeo shortcode.
|
||||||
|
|
|
@ -44,6 +44,7 @@ disable = true
|
||||||
[privacy.twitter]
|
[privacy.twitter]
|
||||||
disable = true
|
disable = true
|
||||||
enableDNT = true
|
enableDNT = true
|
||||||
|
simple = true
|
||||||
[privacy.vimeo]
|
[privacy.vimeo]
|
||||||
disable = true
|
disable = true
|
||||||
simple = true
|
simple = true
|
||||||
|
@ -69,6 +70,7 @@ simple = true
|
||||||
assert.True(pc.SpeakerDeck.Disable)
|
assert.True(pc.SpeakerDeck.Disable)
|
||||||
assert.True(pc.Twitter.Disable)
|
assert.True(pc.Twitter.Disable)
|
||||||
assert.True(pc.Twitter.EnableDNT)
|
assert.True(pc.Twitter.EnableDNT)
|
||||||
|
assert.True(pc.Twitter.Simple)
|
||||||
assert.True(pc.Vimeo.Disable)
|
assert.True(pc.Vimeo.Disable)
|
||||||
assert.True(pc.Vimeo.Simple)
|
assert.True(pc.Vimeo.Simple)
|
||||||
assert.True(pc.YouTube.PrivacyEnhanced)
|
assert.True(pc.YouTube.PrivacyEnhanced)
|
||||||
|
|
|
@ -30,6 +30,7 @@ type Config struct {
|
||||||
Disqus Disqus
|
Disqus Disqus
|
||||||
GoogleAnalytics GoogleAnalytics
|
GoogleAnalytics GoogleAnalytics
|
||||||
Instagram Instagram
|
Instagram Instagram
|
||||||
|
Twitter Twitter
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disqus holds the functional configuration settings related to the Disqus template.
|
// Disqus holds the functional configuration settings related to the Disqus template.
|
||||||
|
@ -52,6 +53,14 @@ type Instagram struct {
|
||||||
DisableInlineCSS bool
|
DisableInlineCSS bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Twitter holds the functional configuration settings related to the Twitter shortcodes.
|
||||||
|
type Twitter struct {
|
||||||
|
// The Simple variant of Twitter is decorated with a basic set of inline styles.
|
||||||
|
// This means that if you want to provide your own CSS, you want
|
||||||
|
// to disable the inline CSS provided by Hugo.
|
||||||
|
DisableInlineCSS bool
|
||||||
|
}
|
||||||
|
|
||||||
func DecodeConfig(cfg config.Provider) (c Config, err error) {
|
func DecodeConfig(cfg config.Provider) (c Config, err error) {
|
||||||
m := cfg.GetStringMap(servicesConfigKey)
|
m := cfg.GetStringMap(servicesConfigKey)
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,8 @@ shortname = "DS"
|
||||||
id = "ga_id"
|
id = "ga_id"
|
||||||
[services.instagram]
|
[services.instagram]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
|
[services.twitter]
|
||||||
|
disableInlineCSS = true
|
||||||
`
|
`
|
||||||
cfg, err := config.FromConfigString(tomlConfig, "toml")
|
cfg, err := config.FromConfigString(tomlConfig, "toml")
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
|
|
|
@ -390,10 +390,47 @@ if (!doNotTrack) {
|
||||||
{{- end -}}`},
|
{{- end -}}`},
|
||||||
{`shortcodes/twitter.html`, `{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
|
{`shortcodes/twitter.html`, `{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable -}}
|
||||||
|
{{- if $pc.Simple -}}
|
||||||
|
{{ template "_internal/shortcodes/twitter_simple.html" . }}
|
||||||
|
{{- else -}}
|
||||||
{{- $url := printf "https://api.twitter.com/1/statuses/oembed.json?id=%s&dnt=%t" (index .Params 0) $pc.EnableDNT -}}
|
{{- $url := printf "https://api.twitter.com/1/statuses/oembed.json?id=%s&dnt=%t" (index .Params 0) $pc.EnableDNT -}}
|
||||||
{{- $json := getJSON $url -}}
|
{{- $json := getJSON $url -}}
|
||||||
{{ $json.html | safeHTML }}
|
{{ $json.html | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}`},
|
{{- end -}}`},
|
||||||
|
{`shortcodes/twitter_simple.html`, `{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
|
||||||
|
{{- $sc := .Page.Site.Config.Services.Twitter -}}
|
||||||
|
{{- if not $pc.Disable -}}
|
||||||
|
{{- $id := .Get 0 -}}
|
||||||
|
{{- $json := getJSON "https://api.twitter.com/1/statuses/oembed.json?id=" $id "&omit_script=true" -}}
|
||||||
|
{{- if not $sc.DisableInlineCSS -}}
|
||||||
|
{{ template "__h_simple_twitter_css" $ }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ $json.html | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ define "__h_simple_twitter_css" }}
|
||||||
|
{{ if not (.Page.Scratch.Get "__h_simple_twitter_css") }}
|
||||||
|
{{/* Only include once */}}
|
||||||
|
{{ .Page.Scratch.Set "__h_simple_twitter_css" true }}
|
||||||
|
<style type="text/css">
|
||||||
|
.twitter-tweet {
|
||||||
|
font: 14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
|
||||||
|
border-left: 4px solid #2b7bb9;
|
||||||
|
padding-left: 1.5em;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.twitter-tweet a {
|
||||||
|
color: #2b7bb9;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
blockquote.twitter-tweet a:hover,
|
||||||
|
blockquote.twitter-tweet a:focus {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}`},
|
||||||
{`shortcodes/vimeo.html`, `{{- $pc := .Page.Site.Config.Privacy.Vimeo -}}
|
{`shortcodes/vimeo.html`, `{{- $pc := .Page.Site.Config.Privacy.Vimeo -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable -}}
|
||||||
{{- if $pc.Simple -}}
|
{{- if $pc.Simple -}}
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
|
{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable -}}
|
||||||
|
{{- if $pc.Simple -}}
|
||||||
|
{{ template "_internal/shortcodes/twitter_simple.html" . }}
|
||||||
|
{{- else -}}
|
||||||
{{- $url := printf "https://api.twitter.com/1/statuses/oembed.json?id=%s&dnt=%t" (index .Params 0) $pc.EnableDNT -}}
|
{{- $url := printf "https://api.twitter.com/1/statuses/oembed.json?id=%s&dnt=%t" (index .Params 0) $pc.EnableDNT -}}
|
||||||
{{- $json := getJSON $url -}}
|
{{- $json := getJSON $url -}}
|
||||||
{{ $json.html | safeHTML }}
|
{{ $json.html | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
|
@ -0,0 +1,33 @@
|
||||||
|
{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
|
||||||
|
{{- $sc := .Page.Site.Config.Services.Twitter -}}
|
||||||
|
{{- if not $pc.Disable -}}
|
||||||
|
{{- $id := .Get 0 -}}
|
||||||
|
{{- $json := getJSON "https://api.twitter.com/1/statuses/oembed.json?id=" $id "&omit_script=true" -}}
|
||||||
|
{{- if not $sc.DisableInlineCSS -}}
|
||||||
|
{{ template "__h_simple_twitter_css" $ }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ $json.html | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{ define "__h_simple_twitter_css" }}
|
||||||
|
{{ if not (.Page.Scratch.Get "__h_simple_twitter_css") }}
|
||||||
|
{{/* Only include once */}}
|
||||||
|
{{ .Page.Scratch.Set "__h_simple_twitter_css" true }}
|
||||||
|
<style type="text/css">
|
||||||
|
.twitter-tweet {
|
||||||
|
font: 14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
|
||||||
|
border-left: 4px solid #2b7bb9;
|
||||||
|
padding-left: 1.5em;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.twitter-tweet a {
|
||||||
|
color: #2b7bb9;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
blockquote.twitter-tweet a:hover,
|
||||||
|
blockquote.twitter-tweet a:focus {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
Loading…
Add table
Reference in a new issue