aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-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)