From 94e4691734a707ce938df19ac0bd3a9143666f49 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Wed, 8 Nov 2023 08:55:27 +0600 Subject: [PATCH] :building_construction: Use theme templates instead embed Embed templates must be used for internal pages, dashboard and other non-customizable views --- main.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 4df6102..a00876e 100644 --- a/main.go +++ b/main.go @@ -29,9 +29,15 @@ import ( pageucase "source.toby3d.me/toby3d/home/internal/page/usecase" sitefsrepo "source.toby3d.me/toby3d/home/internal/site/repository/fs" siteucase "source.toby3d.me/toby3d/home/internal/site/usecase" - "source.toby3d.me/toby3d/home/web/template" + themefsrepo "source.toby3d.me/toby3d/home/internal/theme/repository/fs" + themeucase "source.toby3d.me/toby3d/home/internal/theme/usecase" ) +type Context struct { + Site *domain.Site + Page *domain.Page +} + var ( config = new(domain.Config) logger = log.New(os.Stdout, "home\t", log.Lmsgprefix|log.LstdFlags|log.LUTC) @@ -78,6 +84,10 @@ func main() { matcher := language.NewMatcher(message.DefaultCatalog.Languages()) contentDir := os.DirFS(config.ContentDir) + themeDir := os.DirFS(config.ThemeDir) + + themes := themefsrepo.NewFileSystemThemeRepository(themeDir) + themer := themeucase.NewThemeUseCase(themes) sites := sitefsrepo.NewFileSystemSiteRepository(contentDir) siter := siteucase.NewSiteUseCase(sites) @@ -109,8 +119,20 @@ func main() { return } + tpl, err := themer.Do(r.Context()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + + return + } + w.Header().Set(common.HeaderContentType, common.MIMETextHTMLCharsetUTF8) - template.WriteTemplate(w, template.NewPage(template.NewBaseOf(site), page)) + if err = tpl.Execute(w, &Context{ + Site: site, + Page: page, + }); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } }), ErrorLog: logger, BaseContext: func(ln net.Listener) context.Context { return ctx },