tpl/tplimpl: Add loading attribute to Vimeo shortcode - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit b9add1c7027d0eeceb821451e2a03b3f36a2cf18
DIR parent b0686712ba5fa459e341c9c6f262e8d7dfdb2539
HTML Author: Joe Mooring <joe.mooring@veriphor.com>
Date: Thu, 27 Feb 2025 14:45:00 -0800
tpl/tplimpl: Add loading attribute to Vimeo shortcode
Closes #13445
Diffstat:
M tpl/tplimpl/embedded/templates/sho… | 66 ++++++++++++++++++++++++-------
M tpl/tplimpl/shortcodes_integration… | 4 ++--
2 files changed, 54 insertions(+), 16 deletions(-)
---
DIR diff --git a/tpl/tplimpl/embedded/templates/shortcodes/vimeo.html b/tpl/tplimpl/embedded/templates/shortcodes/vimeo.html
@@ -1,14 +1,52 @@
-{{- $pc := site.Config.Privacy.Vimeo -}}
-{{- if not $pc.Disable -}}
-{{- if $pc.Simple -}}
-{{ template "_internal/shortcodes/vimeo_simple.html" . }}
-{{- else -}}
-{{ if .IsNamedParams }}<div {{ if .Get "class" }}class="{{ .Get "class" }}"{{ else }}style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}>
- <iframe src="https://player.vimeo.com/video/{{ .Get "id" }}{{- if $pc.EnableDNT -}}?dnt=1{{- end -}}" {{ if not (.Get "class") }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}{{ if .Get "title"}}title="{{ .Get "title" }}"{{ else }}title="vimeo video"{{ end }} webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
-</div>{{ else }}
-<div {{ if gt (len .Params) 1 }}class="{{ .Get 1 }}"{{ else }}style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"{{ end }}>
- <iframe src="https://player.vimeo.com/video/{{ .Get 0 }}{{- if $pc.EnableDNT -}}?dnt=1{{- end -}}" {{ if len .Params | eq 1 }}style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" {{ end }}{{ if len .Params | eq 3 }}title="{{ .Get 2 }}"{{ else }}title="vimeo video"{{ end }} webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
-</div>
-{{ end }}
-{{- end -}}
-{{- end -}}
+{{- /*
+Renders an embedded Vimeo video.
+
+Accepts named or positional arguments. If positional, order is id, class,
+title, then loading.
+
+@param {string} [class] The class attribute of the wrapping div element. When specified, removes the style attributes from the iframe element and its wrapping div element.
+@param {string} [id] The video id. Optional if the id is provided as first positional argument.
+@param {string} [loading=eager] The loading attribute of the iframe element.
+@param {string} [title=Vimeo video] The title attribute of the iframe element.
+
+@returns {template.HTML}
+
+@example {{< vimeo 55073825 >}}
+@example {{< vimeo id=55073825 class="foo bar" loading=lazy title="My Video" >}}
+*/}}
+{{- $pc := site.Config.Privacy.Vimeo }}
+{{- if not $pc.Disable }}
+ {{- if $pc.Simple }}
+ {{- template "_internal/shortcodes/vimeo_simple.html" . }}
+ {{- else }}
+ {{- $id := or (.Get "id") (.Get 0) "" }}
+ {{- $class := or (.Get "class") (.Get 1) "" }}
+ {{- $title := or (.Get "title") (.Get 2) "Vimeo video" }}
+ {{- $loading := or (.Get "loading") (.Get 3) "eager" }}
+ {{- $dnt := cond $pc.EnableDNT 1 0 }}
+
+ {{- $divStyle := "position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;" }}
+ {{- $iframeStyle := "position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" }}
+
+ {{- with $id }}
+ {{- $src := printf "https://player.vimeo.com/video/%v?dnt=%v" . $dnt }}
+ <div
+ {{- with $class }}
+ class="{{ . }}"
+ {{- else }}
+ style="{{ $divStyle | safeCSS }}"
+ {{- end }}>
+ <iframe webkitallowfullscreen mozallowfullscreen allowfullscreen
+ src="{{- $src }}"
+ {{- if not $class }}
+ style="{{ $iframeStyle | safeCSS }}"
+ {{- end }}
+ {{- with $loading }} loading="{{ . }}" {{- end }}
+ {{- with $title }} title="{{ . }}" {{- end }}>
+ </iframe>
+ </div>
+ {{- else }}
+ {{- errorf "The %q shortcode requires a video id, either as the first positional argument or an argument named id. See %s" .Name .Position }}
+ {{- end }}
+ {{- end }}
+{{- end }}
DIR diff --git a/tpl/tplimpl/shortcodes_integration_test.go b/tpl/tplimpl/shortcodes_integration_test.go
@@ -478,12 +478,12 @@ Content: {{ .Content }}
// Regular mode
b := hugolib.Test(t, files)
- b.AssertFileContent("public/index.html", "d5b2a079cc37d0ed")
+ b.AssertFileContent("public/index.html", "d1f592d2256ac3ff")
// Simple mode
files = strings.ReplaceAll(files, "privacy.vimeo.simple = false", "privacy.vimeo.simple = true")
b = hugolib.Test(t, files)
- b.AssertFileContent("public/index.html", "73b8767ce8bdf694")
+ b.AssertFileContent("public/index.html", "c5bf16d87e2a370b")
// Simple mode with non-existent id
files = strings.ReplaceAll(files, "{{< vimeo 55073825 >}}", "{{< vimeo __id_does_not_exist__ >}}")