diff options
Diffstat (limited to '')
-rw-r--r-- | cmd/web/templates.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/cmd/web/templates.go b/cmd/web/templates.go new file mode 100644 index 0000000..845fe25 --- /dev/null +++ b/cmd/web/templates.go @@ -0,0 +1,48 @@ +package main + +import ( + "html/template" + "path/filepath" + + "github.com/defencedigital/ded-web/internal/models" +) + +// TODO: At the moment we are using a struct will have fields for all the data +// we will need. Not sure whether this is good or bad at the moment. +type templateData struct { + Operations []models.Operation + Organisations []models.Organisation + Persons []models.Person +} + +func newTemplateCache() (map[string]*template.Template, error) { + cache := map[string]*template.Template{} + + // get a slice of filepaths match the pattern for our page templates + // e.g. [ui/html/pages/home.tmpl.html ui/html/pages/view.tmpl.html] + pages, err := filepath.Glob("./ui/html/pages/*.html") + if err != nil { + return nil, err + } + + // loop through the page filepaths one by one + for _, page := range pages { + // extract "home.tmp.html" from the full filepath. + name := filepath.Base(page) + + files := []string{ + "./ui/html/base.tmpl.html", + "./ui/html/partials/nav.tmpl.html", + page, + } + + ts, err := template.ParseFiles(files...) + if err != nil { + return nil, err + } + + cache[name] = ts + } + + return cache, nil +} |