2024-10-21 16:46:25 +03:00
|
|
|
package templates
|
|
|
|
|
|
|
|
import (
|
|
|
|
"embed"
|
|
|
|
"html/template"
|
|
|
|
"log/slog"
|
|
|
|
|
|
|
|
"git.a71.su/Andrew71/hibiscus-txt/internal/config"
|
|
|
|
"git.a71.su/Andrew71/hibiscus-txt/internal/lang"
|
|
|
|
)
|
|
|
|
|
|
|
|
// pages contains the HTML templates used by the app.
|
|
|
|
//
|
|
|
|
//go:embed pages
|
|
|
|
var pages embed.FS
|
|
|
|
|
|
|
|
// EmbeddedPage returns contents of a file in Pages while "handling" potential errors.
|
|
|
|
func EmbeddedPage(name string) []byte {
|
|
|
|
data, err := pages.ReadFile(name)
|
|
|
|
if err != nil {
|
|
|
|
slog.Error("error reading embedded file", "err", err)
|
2024-10-23 14:11:02 +03:00
|
|
|
return []byte("")
|
2024-10-21 16:46:25 +03:00
|
|
|
}
|
|
|
|
return data
|
|
|
|
}
|
|
|
|
|
|
|
|
var templateFuncs = map[string]interface{}{
|
|
|
|
"translate": lang.Translate,
|
|
|
|
"info": func() config.AppInfo { return config.Info },
|
|
|
|
"config": func() config.Config { return config.Cfg },
|
|
|
|
}
|
|
|
|
var Edit = template.Must(template.New("").Funcs(templateFuncs).ParseFS(pages, "pages/base.html", "pages/edit.html"))
|
|
|
|
var View = template.Must(template.New("").Funcs(templateFuncs).ParseFS(pages, "pages/base.html", "pages/entry.html"))
|
|
|
|
var List = template.Must(template.New("").Funcs(templateFuncs).ParseFS(pages, "pages/base.html", "pages/list.html"))
|
|
|
|
|
|
|
|
var Info = template.Must(template.New("").Funcs(templateFuncs).ParseFS(pages, "pages/base.html", "pages/info.html"))
|
|
|
|
|
|
|
|
var Template404 = template.Must(template.New("404").Funcs(templateFuncs).ParseFS(pages, "pages/error/404.html"))
|
|
|
|
var Template500 = template.Must(template.New("500").Funcs(templateFuncs).ParseFS(pages, "pages/error/500.html"))
|