aboutsummaryrefslogtreecommitdiff
path: root/src/server/ui.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ui.go')
-rw-r--r--src/server/ui.go46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/server/ui.go b/src/server/ui.go
index f0b73ad..ce0ef01 100644
--- a/src/server/ui.go
+++ b/src/server/ui.go
@@ -2,20 +2,54 @@ package server
import (
"html/template"
+ "log"
"net/http"
+ "path/filepath"
+ "strings"
+
+ "gitlab.com/alexkavon/newsstand/src/conf"
)
type Ui struct {
pages map[string]*template.Template
}
-func buildPages(paths ...string) Ui {
- // walk template files with template.ParseFS (?)
-
+func NewUi(config *conf.Conf) Ui {
return Ui{}
}
-func (ui *Ui) RenderPage(page string, w http.ResponseWriter) {
- p := ui.pages[page]
- p.ExecuteTemplate(w, "base", nil)
+func (ui *Ui) CompilePages(uipath string) {
+ ui.pages = map[string]*template.Template{}
+ baseTmpl, err := template.ParseFiles(filepath.Join(uipath, "templates/base.tmpl.html"))
+ if err != nil {
+ log.Fatal(err)
+ }
+ pagesDir := filepath.Join(uipath, "pages")
+ tmplGlob := "**/*.tmpl.html"
+
+ fileglob, err := filepath.Glob(filepath.Join(pagesDir, tmplGlob))
+ if err != nil {
+ log.Fatal(err)
+ }
+ for _, file := range fileglob {
+ f := strings.TrimSuffix(file, ".tmpl.html")
+ tmplName, err := filepath.Rel(pagesDir, f)
+ if err != nil {
+ log.Fatal(err)
+ }
+ skeleton, err := baseTmpl.Clone()
+ if err != nil {
+ log.Fatal(err)
+ }
+ ui.pages[tmplName] = template.Must(skeleton.ParseFiles(file))
+ log.Println(ui.pages[tmplName].DefinedTemplates())
+ }
+}
+
+func (ui *Ui) Render(w http.ResponseWriter, pageName string, data interface{}) {
+ p := ui.pages[pageName]
+ err := p.ExecuteTemplate(w, "base", data)
+ if err != nil {
+ log.Fatal(err)
+ }
}