summaryrefslogtreecommitdiff
path: root/web/template/status.tmpl
diff options
context:
space:
mode:
authorLibravatar f0x52 <f0x@cthu.lu>2023-05-11 17:46:32 +0200
committerLibravatar GitHub <noreply@github.com>2023-05-11 17:46:32 +0200
commit9cc9ffc5a7edd5bcd4e51bd6b32dfdba5082dd24 (patch)
tree55851a745af76564d9e7cb60aae81eb13e53c69e /web/template/status.tmpl
parentfeat: initial tracing support (#1623) (diff)
downloadgotosocial-9cc9ffc5a7edd5bcd4e51bd6b32dfdba5082dd24.tar.xz
[frontend] Profiles with fields & more (#1764)
* redesign status template * separate index page styling * redesign profile template * fix header styling/wrapping * remove old spoiler js * fix status cw button wrapping * fix status info variables * profile responsiveness, accessibility tweaks * fix variable use, mobile * remove duplicate id's * rss icon, fix indent * fix toot border-radius * fix toot spacing * emojify and html profile fields * refactor (sensitive) media rendering * plaintext profile fields * bundle plyr icon svg * only pause video when switching photoswipe slides * yarn upgrade * profile fields formatting * replace uglifyify with @browserify updated fork * fix profile field templating (yet again) * fix React classes * testrig: add testing profile field for admin user * fix sensitive media interactions * Revert "testrig: add testing profile field for admin user" This reverts commit 80490c183e6639ce5b57fcfca6772d8f96df8706. * settings interface wrapping * fix reported toot styling * add role to profile sr-only text * comment fallback rule * remove currently unused image description lacking indicator
Diffstat (limited to 'web/template/status.tmpl')
-rw-r--r--web/template/status.tmpl149
1 files changed, 94 insertions, 55 deletions
diff --git a/web/template/status.tmpl b/web/template/status.tmpl
index f31219a9e..a8c9792ab 100644
--- a/web/template/status.tmpl
+++ b/web/template/status.tmpl
@@ -17,71 +17,110 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ -}}
-<div data-nosnippet class="contentgrid">
- <a href="{{.Account.URL}}" class="avatar"><img src="{{.Account.Avatar}}" alt=""></a>
- <a href="{{.Account.URL}}" class="displayname">{{if .Account.DisplayName}}{{emojify .Account.Emojis (escape .Account.DisplayName)}}{{else}}{{.Account.Username}}{{end}}</a>
- <a href="{{.Account.URL}}" class="username">@{{.Account.Acct}}</a>
- <div class="not-expanded">
- <span class="date">{{.CreatedAt | timestamp}}</span>
- </div>
+<section class="author">
+ <a href="{{.Account.URL}}">
+ <img class="avatar" src="{{.Account.Avatar}}" alt="">
+ <span class="displayname">
+ {{if .Account.DisplayName}}
+ {{emojify .Account.Emojis (escape .Account.DisplayName)}}
+ {{else}}
+ {{.Account.Username}}
+ {{end}}
+ <span class="sr-only">.</span>
+ </span>
+ <span class="username">@{{.Account.Username}}<span class="sr-only">, </span>{{acctInstance .Account.Acct}}</span>
+ </a>
+</section>
+<section class="body">
<div class="text">
{{if .SpoilerText}}
- <input class="spoiler" id="hideSpoiler-{{.ID}}" type="checkbox" style="display: none" aria-hidden="true" checked="true" />
- <div class="spoiler">
- <span class="spoiler-text">{{emojify .Emojis (escape .SpoilerText)}}</span>
- <label class="button spoiler-label" for="hideSpoiler-{{.ID}}" tabindex="0">Toggle visibility</label>
- </div>
- {{end}}
+ <details class="text-spoiler">
+ <summary>
+ <span class="spoiler-text">{{emojify .Emojis (escape .SpoilerText)}}</span>
+ <span class="button" role="button" tabindex="0">Toggle visibility</span>
+ </summary>
+ <div class="content">
+ {{emojify .Emojis (noescape .Content)}}
+ </div>
+ </details>
+ {{else}}
<div class="content">
{{emojify .Emojis (noescape .Content)}}
</div>
+ {{end}}
</div>
{{with .MediaAttachments}}
- <div class="media photoswipe-gallery {{(len .) | oddOrEven }}{{if eq (len .) 1}} single{{end}}{{if eq (len .) 2}} double{{end}}">
- {{range .}}
+ <div
+ class="media photoswipe-gallery {{(len .) | oddOrEven }}{{if eq (len .) 1}} single{{end}}{{if eq (len .) 2}} double{{end}}">
+ {{range $index, $media := .}}
+ {{with $media}}
<div class="media-wrapper">
- {{if not .Description}}
- <div class="no-image-desc" aria-hidden="true" ><i class="fa fa-info-circle"></i><span>Missing media description</span></div>
- {{end}}
- <input type="checkbox" id="sensitiveMedia-{{.ID}}" class="sensitive-checkbox hidden" {{if not $.Sensitive}}checked{{end}}/>
- <div class="sensitive">
- <div class="open">
- <label for="sensitiveMedia-{{.ID}}" class="button" role="button" tabindex="0">
- <i class="fa fa-eye-slash" title="Hide sensitive media"></i>
- </label>
- </div>
- <div class="closed" {{if .Description}}title="{{.Description}}"{{end}}>
- <label for="sensitiveMedia-{{.ID}}" class="button" role="button" tabindex="0">Show sensitive media</label>
- </div>
- </div>
- {{ if eq .Type "video" }}
- <div class="video-play">
- <span class="icon-span fa-stack" aria-hidden="true">
- <i class="icon-bg fa fa-fw fa-circle fa-stack-1x"></i>
- <i class="icon fa fa-fw fa-play-circle fa-stack-1x"></i>
- </span>
- </div>
- {{ end }}
- <a href="{{.URL}}"
- target="_blank"
- {{if .Description}}title="{{.Description}}"{{end}}
- data-pswp-width="{{.Meta.Original.Width}}px"
- data-pswp-height="{{.Meta.Original.Height}}px"
- {{if eq .Type "video"}}data-pswp-type="video"{{end}}
- data-cropped="true">
- <img src="{{.PreviewURL}}" {{if .Description}}alt="{{.Description}}"{{end}} data-blurhash="{{.Blurhash}}"/>
- </a>
+ <details class="{{.Type}}-spoiler" {{if not $.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="{{.Description}}" {{end}}>
+ <source type="video/mp4" src="{{.URL}}" />
+ </video>
+ {{else}}
+ <img {{if .Description}} title="{{.Description}}" {{end}} src="{{.PreviewURL}}" />
+ {{end}}
+ </summary>
+ {{if eq .Type "video"}}
+ <video class="plyr-video photoswipe-slide" controls {{if .Description}}alt="{{.Description}}"
+ title="{{.Description}}" {{end}} data-pswp-index="{{$index}}" data-pswp-width="{{.Meta.Original.Width}}px"
+ data-pswp-height="{{.Meta.Original.Height}}px">
+ <source type="video/mp4" src="{{.URL}}" />
+ </video>
+ {{else}}
+ <a class="photoswipe-slide" href="{{.URL}}" target="_blank" {{if .Description}}title="{{.Description}}" {{end}}
+ data-pswp-width="{{.Meta.Original.Width}}px" data-pswp-height="{{.Meta.Original.Height}}px"
+ data-cropped="true">
+ <img src="{{.PreviewURL}}" {{if .Description}}alt="{{.Description}}" {{end}} />
+ </a>
+ {{end}}
+ </details>
</div>
{{end}}
+ {{end}}
</div>
{{end}}
-</div>
-<div class="info">
- <div id="date">{{.CreatedAt | timestampPrecise}}</div>
- <div class="stats">
- <div id="replies"><i aria-label="Replies" class="fa fa-reply-all"></i> {{.RepliesCount}}</div>
- <div id="boosts"><i aria-label="Boosts" class="fa fa-retweet"></i> {{.ReblogsCount}}</div>
- <div id="favorites"><i aria-label="Favorites" class="fa fa-star"></i> {{.FavouritesCount}}</div>
+</section>
+<aside class="info">
+ <time datetime="{{.CreatedAt}}">{{.CreatedAt | timestampPrecise}}</time>
+ <div class="stats" role="group">
+ <div>
+ <span aria-hidden="true">
+ <i class="fa fa-reply-all"></i> {{.RepliesCount}}
+ </span>
+ <span class="sr-only">{{.RepliesCount}} {{if .RepliesCount | eq 1}}reply{{else}}replies{{end}}</span>
+ </div>
+ <div>
+ <span aria-hidden="true">
+ <i class="fa fa-star"></i> {{.FavouritesCount}}
+ </span>
+ <span class="sr-only">{{.FavouritesCount}} favourite{{if .FavouritesCount | eq 1 | not}}s{{end}}</span>
+ </div>
+ <div>
+ <span aria-hidden="true">
+ <i class="fa fa-retweet"></i> {{.ReblogsCount}}
+ </span>
+ <span class="sr-only">{{.ReblogsCount}} boost{{if .ReblogsCount | eq 1 | not}}s{{end}}</span>
+ </div>
+ {{if .Pinned}}
+ <div>
+ <i class="fa fa-thumb-tack" aria-hidden="true"></i>
+ <span class="sr-only">pinned</span>
+ </div>
+ {{end}}
</div>
-</div>
-<a data-nosnippet href="{{.URL}}" class="toot-link">View toot</a>
+</aside>
+<a data-nosnippet href="{{.URL}}" class="toot-link">Open
+ thread</a> \ No newline at end of file