summaryrefslogtreecommitdiff
path: root/web/template/status_attachments.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'web/template/status_attachments.tmpl')
-rw-r--r--web/template/status_attachments.tmpl184
1 files changed, 113 insertions, 71 deletions
diff --git a/web/template/status_attachments.tmpl b/web/template/status_attachments.tmpl
index bd26c82a6..b257f2211 100644
--- a/web/template/status_attachments.tmpl
+++ b/web/template/status_attachments.tmpl
@@ -18,77 +18,119 @@
*/ -}}
{{- /*
- Template for rendering a gallery of status media attachments.
- To use this template, pass a web view status into it.
+ Template for rendering a gallery of status media attachments.
+ To use this template, pass a web view status into it.
*/ -}}
-{{ with .MediaAttachments }}
- <div class="media photoswipe-gallery {{ (len .) | oddOrEven }} {{ if eq (len .) 1 }}single{{ else if eq (len .) 2 }}double{{- end -}}">
- {{- range $index, $media := . }}
- <div class="media-wrapper">
- <details class="{{- $media.Type -}}-spoiler media-spoiler" {{- if not $media.Sensitive }} open{{ end -}}>
- <summary>
- <div class="show sensitive button" aria-hidden="true">Show sensitive media</div>
- <span class="eye button" role="button" tabindex="0" aria-label="Toggle media">
- <i class="hide fa fa-fw fa-eye-slash" aria-hidden="true"></i>
- <i class="show fa fa-fw fa-eye" aria-hidden="true"></i>
- </span>
- {{- if eq .Type "video" }}
- <video {{- if .Description }} title="{{- $media.Description -}}" {{- end -}}>
- <source type="video/mp4" src="{{- $media.URL -}}"/>
- </video>
- {{- else if eq .Type "image" }}
- <img src="{{- $media.PreviewURL -}}" {{- if .Description }} title="{{- $media.Description -}}" {{- end }}/>
- {{- end }}
- </summary>
- {{- if eq .Type "video" }}
- <video
- class="plyr-video photoswipe-slide"
- controls
- data-pswp-index="{{- $index -}}"
- data-pswp-width="{{- $media.Meta.Original.Width -}}px"
- data-pswp-height="{{- $media.Meta.Original.Height -}}px"
- {{- if .Description }}
- alt="{{- $media.Description -}}"
- title="{{- $media.Description -}}"
- {{- end }}
- >
- <source type="video/mp4" src="{{- $media.URL -}}"/>
- </video>
- {{- else if eq .Type "image" }}
- <a
- class="photoswipe-slide"
- href="{{- $media.URL -}}"
- target="_blank"
- data-pswp-width="{{- $media.Meta.Original.Width -}}px"
- data-pswp-height="{{- $media.Meta.Original.Height -}}px"
- data-cropped="true"
- {{- if .Description }}
- title="{{- $media.Description -}}"
- {{- end }}
- >
- <img src="{{$media.PreviewURL}}" {{if .Description}}alt="{{$media.Description}}" {{end}} />
- </a>
- {{- else }}
- <a
- class="unknown-attachment"
- href="{{- $media.RemoteURL -}}"
- target="_blank"
- {{- if .Description }}
- title="Link to external media: {{ $media.Description -}}&#10;&#13;{{- $media.RemoteURL -}}"
- {{- else }}
- title="Link to external media.&#10;&#13;{{- $media.RemoteURL -}}"
- {{- end }}
- >
- <div class="placeholder" aria-hidden="true">
- <i class="placeholder-external-link fa fa-external-link"></i>
- <i class="placeholder-icon fa fa-file-text"></i>
- <div class="placeholder-link-to">External media</div>
- </div>
- </a>
- {{- end }}
- </details>
- </div>
- {{- end }}
- </div>
+{{- define "imagePreview" }}
+<img
+ src="{{- .PreviewURL -}}"
+ loading="lazy"
+ {{- if .Description }}
+ alt="{{- .Description -}}"
+ title="{{- .Description -}}"
+ {{- end }}
+ width="{{- .Meta.Original.Width -}}"
+ height="{{- .Meta.Original.Height -}}"
+/>
{{- end }}
+
+{{- define "videoPreview" }}
+<video
+ {{- if .Description }}
+ alt="{{- .Description -}}"
+ title="{{- .Description -}}"
+ {{- end }}
+ width="{{- .Meta.Original.Width -}}"
+ height="{{- .Meta.Original.Height -}}"
+>
+ <source type="video/mp4" src="{{- .URL -}}"/>
+</video>
+{{- end }}
+
+{{- /* Produces something like "1 attachment", "2 attachments", etc */ -}}
+{{- define "attachmentsLength" -}}
+{{- (len .) }}{{- if eq (len .) 1 }} attachment{{- else }} attachments{{- end -}}
+{{- end -}}
+
+{{- /* Produces something like "media photoswipe-gallery odd single" */ -}}
+{{- define "galleryClass" -}}
+media photoswipe-gallery {{ (len .) | oddOrEven }} {{ if eq (len .) 1 }}single{{ else if eq (len .) 2 }}double{{ end }}
+{{- end -}}
+
+{{- with .MediaAttachments }}
+<div
+ class="{{- template "galleryClass" . -}}"
+ role="group"
+ aria-label="{{- template "attachmentsLength" . -}}"
+>
+ {{- range $index, $media := . }}
+ <div class="media-wrapper">
+ <details class="{{- $media.Type -}}-spoiler media-spoiler" {{- if not $media.Sensitive }} open{{- end -}}>
+ <summary>
+ <div class="show sensitive button" aria-hidden="true">Show sensitive media</div>
+ <span class="eye button" role="button" tabindex="0" aria-label="Toggle media">
+ <i class="hide fa fa-fw fa-eye-slash" aria-hidden="true"></i>
+ <i class="show fa fa-fw fa-eye" aria-hidden="true"></i>
+ </span>
+ {{- if eq .Type "video" }}
+ {{- include "videoPreview" $media | indent 4 }}
+ {{- else if eq .Type "image" }}
+ {{- include "imagePreview" $media | indent 4 }}
+ {{- end }}
+ </summary>
+ {{- if eq .Type "video" }}
+ <video
+ class="plyr-video photoswipe-slide"
+ controls
+ data-pswp-index="{{- $index -}}"
+ data-pswp-width="{{- $media.Meta.Original.Width -}}px"
+ data-pswp-height="{{- $media.Meta.Original.Height -}}px"
+ {{- if .Description }}
+ alt="{{- $media.Description -}}"
+ title="{{- $media.Description -}}"
+ {{- end }}
+ >
+ <source type="video/mp4" src="{{- $media.URL -}}"/>
+ </video>
+ {{- else if eq .Type "image" }}
+ <a
+ class="photoswipe-slide"
+ href="{{- $media.URL -}}"
+ target="_blank"
+ data-pswp-width="{{- $media.Meta.Original.Width -}}px"
+ data-pswp-height="{{- $media.Meta.Original.Height -}}px"
+ data-cropped="true"
+ {{- if .Description }}
+ alt="{{- $media.Description -}}"
+ title="{{- $media.Description -}}"
+ {{- end }}
+ >
+ {{- with $media }}
+ {{- include "imagePreview" . | indent 4 }}
+ {{- end }}
+ </a>
+ {{- else }}
+ <a
+ class="unknown-attachment"
+ href="{{- $media.RemoteURL -}}"
+ rel="nofollow noreferrer noopener"
+ target="_blank"
+ {{- if .Description }}
+ title="Open external media: {{ $media.Description -}}&#10;&#13;{{- $media.RemoteURL -}}"
+ {{- else }}
+ title="Open external media.&#10;&#13;{{- $media.RemoteURL -}}"
+ {{- end }}
+ >
+ <div class="placeholder" aria-hidden="true">
+ <i class="placeholder-external-link fa fa-external-link"></i>
+ <i class="placeholder-icon fa fa-file-text"></i>
+ <div class="placeholder-link-to">External media</div>
+ </div>
+ </a>
+ {{- end }}
+ </details>
+ </div>
+ {{- end }}
+</div>
+{{- end }} \ No newline at end of file