diff options
author | 2021-09-13 14:45:33 +0200 | |
---|---|---|
committer | 2021-09-13 14:45:33 +0200 | |
commit | 026674bc2c4eb5f53bcb38e7efce2fe2dfebe974 (patch) | |
tree | aeb8d5a884379b86597bc530f0375fc5dbe5357d /internal/router/template.go | |
parent | update my personal library versions (#220) (diff) | |
download | gotosocial-026674bc2c4eb5f53bcb38e7efce2fe2dfebe974.tar.xz |
Thread views on the web (#207)
* Webviews for status threads
* fix up templates
* add ForkAwesome and gotosocial-styling into repo
* clean up gotosocial-styling, old styling
* update CONTRIBUTING with new css building, and nodemon recommendation
* update Dockerfile with new css bundling
* those weren't supposed to make it in
* upgrade gotosocial-styling deps
* update authorize template with main wrapper
* update css pipeline
* abstract status from thread to avoid copy-pasting
* basic CW implementation
* fix PR review suggestions
* fix no-image-desc icon alignment
* remove template loading println
* remove println
* remove changes to testmodels
* reset changes to testmodels
Diffstat (limited to 'internal/router/template.go')
-rw-r--r-- | internal/router/template.go | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/internal/router/template.go b/internal/router/template.go index e7bdc3edf..2beee63c0 100644 --- a/internal/router/template.go +++ b/internal/router/template.go @@ -23,8 +23,10 @@ import ( "html/template" "os" "path/filepath" + "time" "github.com/gin-gonic/gin" + "github.com/superseriousbusiness/gotosocial/internal/api/model" "github.com/superseriousbusiness/gotosocial/internal/config" ) @@ -41,12 +43,51 @@ func loadTemplates(cfg *config.Config, engine *gin.Engine) error { return nil } +func oddOrEven(n int) string { + if n%2 == 0 { + return "even" + } else { + return "odd" + } +} + func noescape(str string) template.HTML { return template.HTML(str) } +func timestamp(stamp string) string { + t, _ := time.Parse(time.RFC3339, stamp) + return t.Format("January 2, 2006, 15:04:05") +} + +type IconWithLabel struct { + faIcon string + label string +} + +func visibilityIcon(visibility model.Visibility) template.HTML { + var icon IconWithLabel + + if visibility == model.VisibilityPublic { + icon = IconWithLabel{"globe", "public"} + } else if visibility == model.VisibilityUnlisted { + icon = IconWithLabel{"unlock", "unlisted"} + } else if visibility == model.VisibilityPrivate { + icon = IconWithLabel{"lock", "private"} + } else if visibility == model.VisibilityMutualsOnly { + icon = IconWithLabel{"handshake-o", "mutuals only"} + } else if visibility == model.VisibilityDirect { + icon = IconWithLabel{"envelope", "direct"} + } + + return template.HTML(fmt.Sprintf(`<i aria-label="Visiblity: %v" class="fa fa-%v"></i>`, icon.label, icon.faIcon)) +} + func loadTemplateFunctions(engine *gin.Engine) { engine.SetFuncMap(template.FuncMap{ - "noescape": noescape, + "noescape": noescape, + "oddOrEven": oddOrEven, + "visibilityIcon": visibilityIcon, + "timestamp": timestamp, }) } |