From ed476a1f0d3f970f977626688ac316f8b251d3a0 Mon Sep 17 00:00:00 2001 From: SayaAndy Date: Sat, 16 May 2026 14:01:14 +0700 Subject: feat: highlight the blog page visited earlier in blog catalogue --- internal/router/handlers/lang-blog.go | 7 +++---- internal/router/router.go | 3 ++- views/layouts/general-page.html | 1 + views/pages/blog-catalogue.html | 2 +- views/pages/blog-page.html | 1 + views/partials/general-page-body.html | 1 + 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/internal/router/handlers/lang-blog.go b/internal/router/handlers/lang-blog.go index 79ec9f3..9f7947b 100644 --- a/internal/router/handlers/lang-blog.go +++ b/internal/router/handlers/lang-blog.go @@ -65,10 +65,8 @@ func (r *CatalogueHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements } func (r *CatalogueHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) { - querySort := c.Query("sort") - if querySort == "" { - querySort = "publicationDateDesc" - } + querySort := c.Query("sort", "publicationDateDesc") + previousBlogPage := c.Query("codename") encodedQuery := c.Request().URI().QueryString() decodedQuery, _ := url.QueryUnescape(string(encodedQuery)) @@ -88,6 +86,7 @@ func (r *CatalogueHandler) RenderBody(c *fiber.Ctx, supplements *router.Suppleme templateMap["QuerySort"] = querySort templateMap["QueryTags"] = strings.Join(queryTags, ",") templateMap["Title"] = supplements.Localization[lang].BlogSearch.Header + templateMap["PreviousBlogPage"] = previousBlogPage return fiber.StatusOK, nil } diff --git a/internal/router/router.go b/internal/router/router.go index 7f3511a..a1208e0 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -576,11 +576,12 @@ func (r *Router) generalPageSegment(c *fiber.Ctx, part string) error { cacheKey := "" trimmedPath := strings.Trim(path, "/") + requestQuery := string(c.Request().URI().QueryString()) switch route.ToCache() { case ByUrlOnly: cacheKey = fmt.Sprintf("%s.%s.%s", method, part, trimmedPath) case ByUrlAndQuery: - cacheKey = fmt.Sprintf("%s.%s.%s.%s", method, part, trimmedPath, queryString) + cacheKey = fmt.Sprintf("%s.%s.%s.%s.%s", method, part, trimmedPath, queryString, requestQuery) } if route.ToCache() != Disabled { diff --git a/views/layouts/general-page.html b/views/layouts/general-page.html index 491c652..3392ff7 100644 --- a/views/layouts/general-page.html +++ b/views/layouts/general-page.html @@ -659,6 +659,7 @@ hx-trigger="popstate from:window" hx-target="#general-page-body" hx-swap="innerHTML" + hx-include="#general-page-body .htmx-exit-trigger" >