diff options
author | jan <jan@ruken.pw> | 2015-12-26 10:41:42 (UTC) |
---|---|---|
committer | jan <jan@ruken.pw> | 2015-12-26 10:41:42 (UTC) |
commit | 6fabf512767b458a44b4b2547a7b07e9db71c00a (patch) | |
tree | a40522cc0a735d09fd79cca00c8133f41963b7ef /frontend | |
parent | fb0424cea33e1c48f940c485bff1f4d0aac31dc4 (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')
-rw-r--r-- | frontend/renderer.go | 24 |
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. |
23 | type Renderer struct { | 23 | type 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. | ||
29 | func (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 | ||
38 | func (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. |
28 | func New(path string) *Renderer { | 43 | func 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. |
37 | func (r *Renderer) RenderPage(name string, w http.ResponseWriter, data map[string]interface{}) { | 53 | func (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) |