diff options
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) |