From e94b1311ded705b0af3a6977cf5fb248a9530387 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 4 Dec 2019 18:30:01 +0100 Subject: Add basic theme support References: https://todo.sr.ht/~sircmpwn/koushin/1 --- template.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'template.go') diff --git a/template.go b/template.go index 2581da0..f12e2ec 100644 --- a/template.go +++ b/template.go @@ -9,6 +9,7 @@ import ( ) type tmpl struct { + // TODO: add support for multiple themes t *template.Template } @@ -16,8 +17,8 @@ func (t *tmpl) Render(w io.Writer, name string, data interface{}, c echo.Context return t.t.ExecuteTemplate(w, name, data) } -func loadTemplates() (*tmpl, error) { - t, err := template.New("drmdb").Funcs(template.FuncMap{ +func loadTemplates(logger echo.Logger, themeName string) (*tmpl, error) { + base, err := template.New("").Funcs(template.FuncMap{ "tuple": func(values ...interface{}) []interface{} { return values }, @@ -25,5 +26,21 @@ func loadTemplates() (*tmpl, error) { return url.PathEscape(s) }, }).ParseGlob("public/*.html") - return &tmpl{t}, err + if err != nil { + return nil, err + } + + theme, err := base.Clone() + if err != nil { + return nil, err + } + + if themeName != "" { + logger.Printf("Loading theme \"%s\"", themeName) + if _, err := theme.ParseGlob("public/themes/" + themeName + "/*.html"); err != nil { + return nil, err + } + } + + return &tmpl{theme}, err } -- cgit v1.2.3