diff options
Diffstat (limited to 'frontend')
-rw-r--r-- | frontend/renderer.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/frontend/renderer.go b/frontend/renderer.go new file mode 100644 index 0000000..5673860 --- /dev/null +++ b/frontend/renderer.go | |||
@@ -0,0 +1,33 @@ | |||
1 | package frontend | ||
2 | |||
3 | import ( | ||
4 | "html/template" | ||
5 | "net/http" | ||
6 | ) | ||
7 | |||
8 | // Renderer rendert Seiten. | ||
9 | type Renderer struct { | ||
10 | templates *template.Template | ||
11 | } | ||
12 | |||
13 | // New erstellt einen neuen Renderer und sucht alle Templates aus dem gegebenen pfad. | ||
14 | func New(path string) *Renderer { | ||
15 | r := &Renderer{ | ||
16 | template.Must(template.ParseGlob(path + "/*")), | ||
17 | } | ||
18 | |||
19 | return r | ||
20 | } | ||
21 | |||
22 | // RenderPage rendert eine bestimmte Seite (basierend auf dem Template-Namen) und den gegebenen Daten. | ||
23 | func (r *Renderer) RenderPage(name string, w http.ResponseWriter, data map[string]interface{}) { | ||
24 | err := r.templates.ExecuteTemplate(w, name, data) | ||
25 | if err != nil { | ||
26 | http.Error(w, err.Error(), http.StatusInternalServerError) | ||
27 | } | ||
28 | } | ||
29 | |||
30 | // RenderLoginPage zeigt die Loginseite an. | ||
31 | func (r *Renderer) RenderLoginPage(w http.ResponseWriter, data map[string]interface{}) { | ||
32 | r.RenderPage("login", w, data) | ||
33 | } | ||