summaryrefslogtreecommitdiff
path: root/internal/router/api-v1-general-page-body.go
diff options
from:
to:
context:
space:
mode:
authorGravatar Saya Andy <145215889+SayaAndy@users.noreply.github.com> 2025-10-20 19:01:05 +0700
committerGravatar GitHub <noreply@github.com> 2025-10-20 19:01:05 +0700
commitdf20c871060ad88254f18d4a04f714edf59156f0 (patch)
tree3161c1417a314ee13595fef6906969ac92172edf /internal/router/api-v1-general-page-body.go
parent3266aae61dbaaba45e32d64d7faddaaa671f8b52 (diff)
parent64397d4d27c14427ee8cb8d5a7618058d04f3737 (diff)
downloadweb-0.10.0.tar.gz
web-0.10.0.zip
v0.10.0 (#15)v0.10.0
- [feat: have toolbar on the top by default (only return to left if the screen is short on height)](https://github.com/SayaAndy/saya-today-web/commit/324c6df1ab878aa0c34f80c58f730e01aca1f4e9) - feat: switch font to Andika - [feat: add noise to plain color backgrounds](https://github.com/SayaAndy/saya-today-web/commit/36d7f332e6c318064ff0cd6849f69854c7ba0d79) - [feat: shorten toolbar in global map, paint map on the whole screen](https://github.com/SayaAndy/saya-today-web/commit/2cbbaaa40019e452b41c98720af8c23759351200) - [feat: redo language page with general page layout](https://github.com/SayaAndy/saya-today-web/commit/f6c60d0a963817189854f5b42bc58a76ddb90d53) - feat: move back button from header to toolbar - feat: switch masonry to use rem units - feat: fit masonry to center - feat: make inset shadows more apparent - feat: header font: less thick, non-italic and drops shadow - [fix: home page header getting too close to right border](https://github.com/SayaAndy/saya-today-web/commit/fdb8582f40168dbb0795358f1ea950a26f157b2d) - feat: paint shadow off home page header - fix: have toolbar buttons' href updated with language change - fix: add missing underline in contacts panel
Diffstat (limited to 'internal/router/api-v1-general-page-body.go')
-rw-r--r--internal/router/api-v1-general-page-body.go26
1 files changed, 19 insertions, 7 deletions
diff --git a/internal/router/api-v1-general-page-body.go b/internal/router/api-v1-general-page-body.go
index c1a4a9f..fe21957 100644
--- a/internal/router/api-v1-general-page-body.go
+++ b/internal/router/api-v1-general-page-body.go
@@ -11,6 +11,7 @@ import (
"strings"
"time"
+ "github.com/SayaAndy/saya-today-web/config"
"github.com/SayaAndy/saya-today-web/internal/b2"
"github.com/SayaAndy/saya-today-web/internal/factgiver"
"github.com/SayaAndy/saya-today-web/locale"
@@ -24,7 +25,7 @@ func init() {
tm.Add("general-page-body", "views/partials/general-page-body.html")
}
-func Api_V1_GeneralPage_Body(l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client, md goldmark.Markdown) func(c *fiber.Ctx) error {
+func Api_V1_GeneralPage_Body(l map[string]*locale.LocaleConfig, langs []config.AvailableLanguageConfig, b2Client *b2.B2Client, md goldmark.Markdown) func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error {
c.Set(fiber.HeaderContentType, fiber.MIMETextPlainCharsetUTF8)
@@ -45,19 +46,26 @@ func Api_V1_GeneralPage_Body(l map[string]*locale.LocaleConfig, langs []string,
return c.Status(fiber.StatusOK).Type("html").Send(val)
}
+ lang := ""
pathParts := strings.Split(strings.Trim(path, "/"), "/")
- if len(pathParts) == 0 {
- return c.Status(fiber.ErrBadRequest.Code).SendString("'Referer' header is invalid: expect format '/{lang}/...'")
+ if len(pathParts) == 1 && pathParts[0] == "" {
+ pathParts = []string{}
}
-
- lang := pathParts[0]
- if !slices.Contains(langs, lang) {
- return c.Status(fiber.ErrNotFound.Code).SendString(fmt.Sprintf("server does not support '%s' language... yet??", lang))
+ if len(pathParts) > 0 {
+ lang = pathParts[0]
+ for _, availableLang := range langs {
+ if availableLang.Name == lang {
+ goto langIsAvailable
+ }
+ }
+ return c.Status(fiber.ErrBadRequest.Code).SendString("'Referer' header is invalid: expect format '/{lang}/...'")
}
+ langIsAvailable:
values := fiber.Map{
"L": l[lang],
"Lang": lang,
+ "Path": strings.Trim(path, "/"),
"QueryString": string(c.Request().URI().QueryString()),
}
var additionalTemplates []string
@@ -149,6 +157,10 @@ func Api_V1_GeneralPage_Body(l map[string]*locale.LocaleConfig, langs []string,
values["GifName"] = fmt.Sprintf("otter-%d.gif", rand.Int()%3+1)
values["FunFacts"] = FactGiver.Give(lang)
additionalTemplates = append(additionalTemplates, "views/pages/home-page.html")
+ } else if len(pathParts) == 0 {
+ values["Title"] = "Choose Your Language"
+ values["AvailableLanguages"] = langs
+ additionalTemplates = append(additionalTemplates, "views/pages/language-pick.html")
}
content, err := tm.Render("general-page-body", values, additionalTemplates...)