aboutsummaryrefslogtreecommitdiff
path: root/frontend/renderer.go
diff options
context:
space:
mode:
authorjan <jan@ruken.pw>2015-12-26 10:41:42 (UTC)
committerjan <jan@ruken.pw>2015-12-26 10:41:42 (UTC)
commit6fabf512767b458a44b4b2547a7b07e9db71c00a (patch)
treea40522cc0a735d09fd79cca00c8133f41963b7ef /frontend/renderer.go
parentfb0424cea33e1c48f940c485bff1f4d0aac31dc4 (diff)
default data im renderer, damit wir später krasse sachen machen können. es gibt jetzt eine globale navbar, damit man nicht mehr den zurückknopf drücken muss, um bis zur startseite zu kommen. ich habe einen großen D.
Diffstat (limited to 'frontend/renderer.go')
-rw-r--r--frontend/renderer.go24
1 files changed, 23 insertions, 1 deletions
diff --git a/frontend/renderer.go b/frontend/renderer.go
index 0a2b7e9..e9b9931 100644
--- a/frontend/renderer.go
+++ b/frontend/renderer.go
@@ -21,13 +21,29 @@ type Card struct {
21 21
22// Renderer rendert Seiten. 22// Renderer rendert Seiten.
23type Renderer struct { 23type Renderer struct {
24 templates *template.Template 24 templates *template.Template
25 defaultData map[string]interface{}
26}
27
28// DefaultData gibt die Standard-Daten für die Views zurück. Das ist immer eine Kopie weil Reasons.
29func (r *Renderer) DefaultData() map[string]interface{} {
30 d := make(map[string]interface{})
31 for k, v := range r.defaultData {
32 d[k] = v
33 }
34 return d
35}
36
37// SetDefaultData updated die standarddaten
38func (r *Renderer) SetDefaultData(data map[string]interface{}) {
39 r.defaultData = data
25} 40}
26 41
27// New erstellt einen neuen Renderer und sucht alle Templates aus dem gegebenen pfad. 42// New erstellt einen neuen Renderer und sucht alle Templates aus dem gegebenen pfad.
28func New(path string) *Renderer { 43func New(path string) *Renderer {
29 r := &Renderer{ 44 r := &Renderer{
30 template.Must(template.ParseGlob(path + "/*")), 45 template.Must(template.ParseGlob(path + "/*")),
46 make(map[string]interface{}),
31 } 47 }
32 48
33 return r 49 return r
@@ -35,6 +51,12 @@ func New(path string) *Renderer {
35 51
36// RenderPage rendert eine bestimmte Seite (basierend auf dem Template-Namen) und den gegebenen Daten. 52// RenderPage rendert eine bestimmte Seite (basierend auf dem Template-Namen) und den gegebenen Daten.
37func (r *Renderer) RenderPage(name string, w http.ResponseWriter, data map[string]interface{}) { 53func (r *Renderer) RenderPage(name string, w http.ResponseWriter, data map[string]interface{}) {
54 // default daten einspeisen
55 for k, v := range r.defaultData {
56 if _, ok := data[k]; !ok {
57 data[k] = v
58 }
59 }
38 err := r.templates.ExecuteTemplate(w, name, data) 60 err := r.templates.ExecuteTemplate(w, name, data)
39 if err != nil { 61 if err != nil {
40 http.Error(w, err.Error(), http.StatusInternalServerError) 62 http.Error(w, err.Error(), http.StatusInternalServerError)