Fixes #4798 - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 07b96d16e8679c40e289c9076ef4414ed6eb7f81
 (DIR) parent ceaff7cafc5357274e546984ae02a4cbdf305f81
 (HTM) Author: Alex <onedrawingperday@gmail.com>
       Date:   Wed, 30 May 2018 23:42:32 +0300
       
       Fixes #4798
       
       Diffstat:
         M config/privacy/privacyConfig.go     |       3 +++
         M config/privacy/privacyConfig_test.… |       2 ++
         M config/services/servicesConfig.go   |       9 +++++++++
         M config/services/servicesConfig_tes… |       2 ++
         M tpl/tplimpl/embedded/templates.aut… |      37 +++++++++++++++++++++++++++++++
         M tpl/tplimpl/embedded/templates/sho… |       4 ++++
         A tpl/tplimpl/embedded/templates/sho… |      34 +++++++++++++++++++++++++++++++
       
       7 files changed, 91 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/config/privacy/privacyConfig.go b/config/privacy/privacyConfig.go
       @@ -77,6 +77,9 @@ type Twitter struct {
                // 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.
                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.
 (DIR) diff --git a/config/privacy/privacyConfig_test.go b/config/privacy/privacyConfig_test.go
       @@ -44,6 +44,7 @@ disable = true
        [privacy.twitter]
        disable = true
        enableDNT = true
       +simple = true
        [privacy.vimeo]
        disable = true
        simple = true
       @@ -69,6 +70,7 @@ simple = true
                assert.True(pc.SpeakerDeck.Disable)
                assert.True(pc.Twitter.Disable)
                assert.True(pc.Twitter.EnableDNT)
       +        assert.True(pc.Twitter.Simple)
                assert.True(pc.Vimeo.Disable)
                assert.True(pc.Vimeo.Simple)
                assert.True(pc.YouTube.PrivacyEnhanced)
 (DIR) diff --git a/config/services/servicesConfig.go b/config/services/servicesConfig.go
       @@ -30,6 +30,7 @@ type Config struct {
                Disqus          Disqus
                GoogleAnalytics GoogleAnalytics
                Instagram       Instagram
       +        Twitter         Twitter
        }
        
        // Disqus holds the functional configuration settings related to the Disqus template.
       @@ -52,6 +53,14 @@ type Instagram struct {
                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) {
                m := cfg.GetStringMap(servicesConfigKey)
        
 (DIR) diff --git a/config/services/servicesConfig_test.go b/config/services/servicesConfig_test.go
       @@ -35,6 +35,8 @@ shortname = "DS"
        id = "ga_id"
        [services.instagram]
        disableInlineCSS = true
       +[services.twitter]
       +disableInlineCSS = true
        `
                cfg, err := config.FromConfigString(tomlConfig, "toml")
                assert.NoError(err)
 (DIR) diff --git a/tpl/tplimpl/embedded/templates.autogen.go b/tpl/tplimpl/embedded/templates.autogen.go
       @@ -390,10 +390,47 @@ if (!doNotTrack) {
        {{- end -}}`},
                {`shortcodes/twitter.html`, `{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
        {{- 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 -}}
        {{- $json := getJSON $url -}}
        {{ $json.html | safeHTML }}
       +{{- 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 -}}
        {{- if not $pc.Disable -}}
        {{- if $pc.Simple -}}
 (DIR) diff --git a/tpl/tplimpl/embedded/templates/shortcodes/twitter.html b/tpl/tplimpl/embedded/templates/shortcodes/twitter.html
       @@ -1,6 +1,10 @@
        {{- $pc := .Page.Site.Config.Privacy.Twitter -}}
        {{- 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 -}}
        {{- $json := getJSON $url -}}
        {{ $json.html | safeHTML }}
       +{{- end -}}
        {{- end -}}
        \ No newline at end of file
 (DIR) diff --git a/tpl/tplimpl/embedded/templates/shortcodes/twitter_simple.html b/tpl/tplimpl/embedded/templates/shortcodes/twitter_simple.html
       @@ -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 }}
       +\ No newline at end of file