summaryrefslogtreecommitdiff
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
-rw-r--r--internal/router/api-v1-blog-search.go7
-rw-r--r--internal/router/lang-blog-title.go7
-rw-r--r--internal/router/lang-blog.go7
-rw-r--r--internal/router/lang-map.go7
-rw-r--r--internal/router/root.go7
-rw-r--r--internal/router/tm.go18
-rw-r--r--internal/templatemanager/templatemanager.go24
-rw-r--r--main.go23
-rw-r--r--views/pages/global-map.html11
9 files changed, 32 insertions, 79 deletions
diff --git a/internal/router/api-v1-blog-search.go b/internal/router/api-v1-blog-search.go
index 51ace85..2997407 100644
--- a/internal/router/api-v1-blog-search.go
+++ b/internal/router/api-v1-blog-search.go
@@ -10,15 +10,12 @@ import (
"time"
"github.com/SayaAndy/saya-today-web/internal/b2"
+ "github.com/SayaAndy/saya-today-web/internal/templatemanager"
"github.com/SayaAndy/saya-today-web/locale"
"github.com/gofiber/fiber/v2"
)
-func init() {
- tm.Add("catalogue-blog-cards", "views/partials/catalogue-blog-cards.html", "views/partials/catalogue-blog-card-tags.html")
-}
-
-func Api_V1_BlogSearch(l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client) func(c *fiber.Ctx) error {
+func Api_V1_BlogSearch(tm *templatemanager.TemplateManager, l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client) func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error {
sort := c.Query("sort")
lang := c.Query("lang")
diff --git a/internal/router/lang-blog-title.go b/internal/router/lang-blog-title.go
index b7b5d7e..39d4252 100644
--- a/internal/router/lang-blog-title.go
+++ b/internal/router/lang-blog-title.go
@@ -11,16 +11,13 @@ import (
"github.com/SayaAndy/saya-today-web/internal/b2"
"github.com/SayaAndy/saya-today-web/internal/frontmatter"
+ "github.com/SayaAndy/saya-today-web/internal/templatemanager"
"github.com/SayaAndy/saya-today-web/locale"
"github.com/gofiber/fiber/v2"
"github.com/yuin/goldmark"
)
-func init() {
- tm.Add("blog-page", "views/layouts/general-page.html", "views/pages/blog-page.html")
-}
-
-func Lang_Blog_Title(l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client, md goldmark.Markdown) func(c *fiber.Ctx) error {
+func Lang_Blog_Title(tm *templatemanager.TemplateManager, l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client, md goldmark.Markdown) func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error {
lang := c.Params("lang")
if !slices.Contains(langs, lang) {
diff --git a/internal/router/lang-blog.go b/internal/router/lang-blog.go
index 650c4b1..1a7cbca 100644
--- a/internal/router/lang-blog.go
+++ b/internal/router/lang-blog.go
@@ -9,15 +9,12 @@ import (
"strings"
"github.com/SayaAndy/saya-today-web/internal/b2"
+ "github.com/SayaAndy/saya-today-web/internal/templatemanager"
"github.com/SayaAndy/saya-today-web/locale"
"github.com/gofiber/fiber/v2"
)
-func init() {
- tm.Add("blog-catalogue", "views/layouts/general-page.html", "views/pages/blog-catalogue.html")
-}
-
-func Lang_Blog(l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client) func(c *fiber.Ctx) error {
+func Lang_Blog(tm *templatemanager.TemplateManager, l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client) func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error {
lang := c.Params("lang")
if !slices.Contains(langs, lang) {
diff --git a/internal/router/lang-map.go b/internal/router/lang-map.go
index e94d756..8cc070a 100644
--- a/internal/router/lang-map.go
+++ b/internal/router/lang-map.go
@@ -8,15 +8,12 @@ import (
"strings"
"github.com/SayaAndy/saya-today-web/internal/b2"
+ "github.com/SayaAndy/saya-today-web/internal/templatemanager"
"github.com/SayaAndy/saya-today-web/locale"
"github.com/gofiber/fiber/v2"
)
-func init() {
- tm.Add("global-map", "views/pages/global-map.html")
-}
-
-func Lang_Map(l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client) func(c *fiber.Ctx) error {
+func Lang_Map(tm *templatemanager.TemplateManager, l map[string]*locale.LocaleConfig, langs []string, b2Client *b2.B2Client) func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error {
lang := c.Params("lang")
if !slices.Contains(langs, lang) {
diff --git a/internal/router/root.go b/internal/router/root.go
index f4a0692..f5be6cb 100644
--- a/internal/router/root.go
+++ b/internal/router/root.go
@@ -4,14 +4,11 @@ import (
"log/slog"
"github.com/SayaAndy/saya-today-web/config"
+ "github.com/SayaAndy/saya-today-web/internal/templatemanager"
"github.com/gofiber/fiber/v2"
)
-func init() {
- tm.Add("index", "views/index.html")
-}
-
-func Root(localeCfg []config.AvailableLanguageConfig) func(c *fiber.Ctx) error {
+func Root(tm *templatemanager.TemplateManager, localeCfg []config.AvailableLanguageConfig) func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error {
content, err := tm.Render("index", fiber.Map{
"AvailableLanguages": localeCfg,
diff --git a/internal/router/tm.go b/internal/router/tm.go
deleted file mode 100644
index e8095ee..0000000
--- a/internal/router/tm.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package router
-
-import (
- "log/slog"
- "os"
-
- "github.com/SayaAndy/saya-today-web/internal/templatemanager"
-)
-
-var tm = assert(templatemanager.NewTemplateManager())
-
-func assert[T any](t T, err error) T {
- if err != nil {
- slog.Error("fail to initialize template manager", slog.String("error", err.Error()))
- os.Exit(1)
- }
- return t
-}
diff --git a/internal/templatemanager/templatemanager.go b/internal/templatemanager/templatemanager.go
index f89d0c8..5effcb3 100644
--- a/internal/templatemanager/templatemanager.go
+++ b/internal/templatemanager/templatemanager.go
@@ -22,7 +22,7 @@ type TemplateManagerTemplates struct {
Files []string
}
-func NewTemplateManager(templates ...TemplateManagerTemplates) (*TemplateManager, error) {
+func NewTemplateManager(templates []TemplateManagerTemplates) (*TemplateManager, error) {
templateMap := make(map[string]templateManagerRender)
for _, tmplStruct := range templates {
@@ -37,6 +37,7 @@ func NewTemplateManager(templates ...TemplateManagerTemplates) (*TemplateManager
Main: filepath.Base(tmplStruct.Files[0]),
Tmpl: tmpl,
}
+
}
return &TemplateManager{
@@ -54,24 +55,3 @@ func (tm *TemplateManager) Render(name string, data interface{}) ([]byte, error)
err := tmpl.Tmpl.ExecuteTemplate(&buf, tmpl.Main, data)
return buf.Bytes(), err
}
-
-func (tm *TemplateManager) Add(name string, files ...string) error {
- if len(files) == 0 {
- return fmt.Errorf("you can't add template without any files")
- }
-
- tmpl := template.New("").Funcs(template.FuncMap{
- "contains": strings.Contains,
- })
-
- tmpl, err := tmpl.ParseFiles(files...)
- if err != nil {
- return fmt.Errorf("failed to add template into manager: %w", err)
- }
-
- tm.templates[name] = templateManagerRender{
- Main: filepath.Base(files[0]),
- Tmpl: tmpl,
- }
- return nil
-}
diff --git a/main.go b/main.go
index 566e796..85839b9 100644
--- a/main.go
+++ b/main.go
@@ -11,6 +11,7 @@ import (
"github.com/SayaAndy/saya-today-web/internal/lightgallery"
"github.com/SayaAndy/saya-today-web/internal/router"
"github.com/SayaAndy/saya-today-web/internal/tailwind"
+ "github.com/SayaAndy/saya-today-web/internal/templatemanager"
"github.com/SayaAndy/saya-today-web/locale"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/redirect"
@@ -68,6 +69,18 @@ func main() {
localization[lang.Name] = localeCfg
}
+ tm, err := templatemanager.NewTemplateManager([]templatemanager.TemplateManagerTemplates{
+ {Name: "blog-page", Files: []string{"views/layouts/general-page.html", "views/pages/blog-page.html"}},
+ {Name: "blog-catalogue", Files: []string{"views/layouts/general-page.html", "views/pages/blog-catalogue.html"}},
+ {Name: "index", Files: []string{"views/index.html"}},
+ {Name: "catalogue-blog-cards", Files: []string{"views/partials/catalogue-blog-cards.html", "views/partials/catalogue-blog-card-tags.html"}},
+ {Name: "global-map", Files: []string{"views/pages/global-map.html"}},
+ })
+ if err != nil {
+ slog.Error("fail to initialize template manager", slog.String("error", err.Error()))
+ os.Exit(1)
+ }
+
app := fiber.New(fiber.Config{})
app.Use(redirect.New(redirect.Config{
@@ -78,12 +91,12 @@ func main() {
StatusCode: 301,
}))
- app.Get("/", router.Root(cfg.AvailableLanguages))
- app.Get("/:lang/map", router.Lang_Map(localization, availableLanguages, b2Client))
- app.Get("/:lang/blog", router.Lang_Blog(localization, availableLanguages, b2Client))
- app.Get("/:lang/blog/:title", router.Lang_Blog_Title(localization, availableLanguages, b2Client, md))
+ app.Get("/", router.Root(tm, cfg.AvailableLanguages))
+ app.Get("/:lang/map", router.Lang_Map(tm, localization, availableLanguages, b2Client))
+ app.Get("/:lang/blog", router.Lang_Blog(tm, localization, availableLanguages, b2Client))
+ app.Get("/:lang/blog/:title", router.Lang_Blog_Title(tm, localization, availableLanguages, b2Client, md))
app.Get("/api/v1/tz", router.Api_V1_TZ())
- app.Get("/api/v1/blog-search", router.Api_V1_BlogSearch(localization, availableLanguages, b2Client))
+ app.Get("/api/v1/blog-search", router.Api_V1_BlogSearch(tm, localization, availableLanguages, b2Client))
app.Static("/", "./static")
diff --git a/views/pages/global-map.html b/views/pages/global-map.html
index 05c39a1..09d7ab2 100644
--- a/views/pages/global-map.html
+++ b/views/pages/global-map.html
@@ -11,8 +11,6 @@
{{ block "header" . }}{{ end }}
<link href="/output.css" rel="stylesheet">
<link rel="stylesheet" href="https://f003.backblazeb2.com/file/sayana-static/libs/leaflet/1.9.4/leaflet.css">
- <link rel="stylesheet" href="https://f003.backblazeb2.com/file/sayana-static/libs/leaflet.markercluster/1.4.1/MarkerCluster.css">
- <link rel="stylesheet" href="https://f003.backblazeb2.com/file/sayana-static/libs/leaflet.markercluster/1.4.1/MarkerCluster.Default.css">
</head>
<body data-theme="ram" class="font-spectral text-main-dark overflow-hidden bg-interlocked-hexagons h-screen flex flex-row ar-lt-0.8:flex-col">
@@ -62,7 +60,6 @@
<script src="https://f003.backblazeb2.com/file/sayana-static/libs/htmx/2.0.6/htmx.min.js"></script>
<script src="https://f003.backblazeb2.com/file/sayana-static/libs/leaflet/1.9.4/leaflet.js"></script>
- <script src="https://f003.backblazeb2.com/file/sayana-static/libs/leaflet.markercluster/1.4.1/leaflet.markercluster.js"></script>
<script>
const themeWheel = document.getElementById('theme-wheel');
@@ -177,7 +174,6 @@
<script>
var map;
- var markers = L.markerClusterGroup();
function initLocationMap() {
map = L.map('map-container').setView([{{ .MapLocationLat }}, {{ .MapLocationLong }}], 4);
@@ -186,8 +182,6 @@
maxZoom: 18,
attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
-
- map.addLayer(markers);
}
function stringToColor(str) {
@@ -219,13 +213,12 @@
var marker = L.marker([x, y], {
title: title,
- }).bindPopup(`
+ }).addTo(map)
+ .bindPopup(`
<div class="flex flex-row justify-center justify-items-center">
<img onclick="location.href='${link}';" class="cursor-pointer object-cover rounded-[10%] select-none w-[3vmax] h-[3vmax] mr-[0.5vmax]" src="https://f003.backblazeb2.com/file/sayana-photos/webp-320p/${thumbnail}.webp">
<span><b><a href="${link}">${title}</a></b><br><a href="https://www.openstreetmap.org/#map=13/${x}/${y}">${x}, ${y}</a></span>
</div>`);
-
- markers.addLayer(marker);
}
document.addEventListener('DOMContentLoaded', () => {