aboutsummaryrefslogtreecommitdiffstats
path: root/template.go
diff options
context:
space:
mode:
Diffstat (limited to 'template.go')
-rw-r--r--template.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/template.go b/template.go
index 110c433..2ebcbc0 100644
--- a/template.go
+++ b/template.go
@@ -13,6 +13,38 @@ import (
const themesDir = "public/themes"
+// GlobalRenderData contains data available in all templates.
+type GlobalRenderData struct {
+ LoggedIn bool
+
+ // if logged in
+ Username string
+ // TODO: list of mailboxes
+
+ Extra map[string]interface{}
+}
+
+// RenderData is the base type for templates. It should be extended with new
+// template-specific fields.
+type RenderData struct {
+ Global GlobalRenderData
+ Extra map[string]interface{}
+}
+
+func NewRenderData(ctx *context) *RenderData {
+ global := GlobalRenderData{Extra: make(map[string]interface{})}
+
+ if ctx.session != nil {
+ global.LoggedIn = true
+ global.Username = ctx.session.username
+ }
+
+ return &RenderData{
+ Global: global,
+ Extra: make(map[string]interface{}),
+ }
+}
+
type renderer struct {
base *template.Template
themes map[string]*template.Template