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 | |
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.
-rw-r--r-- | dashboard.go | 1 | ||||
-rw-r--r-- | frontend/renderer.go | 24 | ||||
-rw-r--r-- | main.go | 2 | ||||
-rw-r--r-- | modules/grils/grils.go | 9 | ||||
-rw-r--r-- | modules/lists/lists.go | 9 | ||||
-rw-r--r-- | views/dashboard.html | 4 | ||||
-rw-r--r-- | views/gril.html | 6 | ||||
-rw-r--r-- | views/index.html | 34 | ||||
-rw-r--r-- | views/list.html | 6 | ||||
-rw-r--r-- | views/navbar.html | 13 |
10 files changed, 47 insertions, 61 deletions
diff --git a/dashboard.go b/dashboard.go index 6e81d6b..63dcdfc 100644 --- a/dashboard.go +++ b/dashboard.go | |||
@@ -25,5 +25,6 @@ func viewDashboard(w http.ResponseWriter, r *http.Request, _ httprouter.Params) | |||
25 | 25 | ||
26 | data := make(map[string]interface{}) | 26 | data := make(map[string]interface{}) |
27 | data["categories"] = categories | 27 | data["categories"] = categories |
28 | data["user"] = user | ||
28 | app.Renderer.RenderPage("dashboard", w, data) | 29 | app.Renderer.RenderPage("dashboard", w, data) |
29 | } | 30 | } |
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) |
@@ -9,8 +9,8 @@ import ( | |||
9 | "fagott.pw/charakterin" | 9 | "fagott.pw/charakterin" |
10 | "fagott.pw/grilist/frontend" | 10 | "fagott.pw/grilist/frontend" |
11 | "fagott.pw/grilist/grilist" | 11 | "fagott.pw/grilist/grilist" |
12 | "fagott.pw/grilist/modules/lists" | ||
13 | "fagott.pw/grilist/modules/grils" | 12 | "fagott.pw/grilist/modules/grils" |
13 | "fagott.pw/grilist/modules/lists" | ||
14 | 14 | ||
15 | "github.com/julienschmidt/httprouter" | 15 | "github.com/julienschmidt/httprouter" |
16 | _ "github.com/lib/pq" | 16 | _ "github.com/lib/pq" |
diff --git a/modules/grils/grils.go b/modules/grils/grils.go index fbe57e3..3663c7f 100644 --- a/modules/grils/grils.go +++ b/modules/grils/grils.go | |||
@@ -73,10 +73,7 @@ func (m *GrilsModule) FromID(id int) (*Gril, error) { | |||
73 | } | 73 | } |
74 | 74 | ||
75 | func (m *GrilsModule) viewGril(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | 75 | func (m *GrilsModule) viewGril(w http.ResponseWriter, r *http.Request, p httprouter.Params) { |
76 | loggedIn := false | 76 | user, _ := m.g.Charakterin.GetUserFromRequest(r) |
77 | if user, _ := m.g.Charakterin.GetUserFromRequest(r); user != nil { | ||
78 | loggedIn = true | ||
79 | } | ||
80 | sid := p.ByName("id") | 77 | sid := p.ByName("id") |
81 | 78 | ||
82 | id, err := strconv.Atoi(sid) | 79 | id, err := strconv.Atoi(sid) |
@@ -91,8 +88,8 @@ func (m *GrilsModule) viewGril(w http.ResponseWriter, r *http.Request, p httprou | |||
91 | return | 88 | return |
92 | } | 89 | } |
93 | 90 | ||
94 | data := make(map[string]interface{}) | 91 | data := m.g.Renderer.DefaultData() |
95 | data["loggedIn"] = loggedIn | 92 | data["user"] = user |
96 | data["gril"] = gril | 93 | data["gril"] = gril |
97 | 94 | ||
98 | m.g.Renderer.RenderPage("gril", w, data) | 95 | m.g.Renderer.RenderPage("gril", w, data) |
diff --git a/modules/lists/lists.go b/modules/lists/lists.go index 519bb36..970b15b 100644 --- a/modules/lists/lists.go +++ b/modules/lists/lists.go | |||
@@ -207,10 +207,7 @@ func (m *Module) ProvideDashboardData(user *charakterin.User) []grilist.Dashboar | |||
207 | } | 207 | } |
208 | 208 | ||
209 | func (m *Module) viewList(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | 209 | func (m *Module) viewList(w http.ResponseWriter, r *http.Request, p httprouter.Params) { |
210 | loggedIn := false | 210 | user, _ := m.g.Charakterin.GetUserFromRequest(r) |
211 | if user, _ := m.g.Charakterin.GetUserFromRequest(r); user != nil { | ||
212 | loggedIn = true | ||
213 | } | ||
214 | sid := p.ByName("id") | 211 | sid := p.ByName("id") |
215 | 212 | ||
216 | id, err := strconv.Atoi(sid) | 213 | id, err := strconv.Atoi(sid) |
@@ -225,8 +222,8 @@ func (m *Module) viewList(w http.ResponseWriter, r *http.Request, p httprouter.P | |||
225 | return | 222 | return |
226 | } | 223 | } |
227 | 224 | ||
228 | data := make(map[string]interface{}) | 225 | data := m.g.Renderer.DefaultData() |
229 | data["loggedIn"] = loggedIn | 226 | data["user"] = user |
230 | data["list"] = list | 227 | data["list"] = list |
231 | 228 | ||
232 | m.g.Renderer.RenderPage("list", w, data) | 229 | m.g.Renderer.RenderPage("list", w, data) |
diff --git a/views/dashboard.html b/views/dashboard.html index a000b57..a9a01d9 100644 --- a/views/dashboard.html +++ b/views/dashboard.html | |||
@@ -6,10 +6,8 @@ | |||
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> |
7 | </head> | 7 | </head> |
8 | <body> | 8 | <body> |
9 | {{ template "navbar" . }} | ||
9 | <div class="container"> | 10 | <div class="container"> |
10 | <div class="row right-align"> | ||
11 | <a class="waves-effect waves-teal btn-flat large" style="top: 24px; font-size: 18px" href="/logout">Ausloggen</a> | ||
12 | </div> | ||
13 | <div class="row"> | 11 | <div class="row"> |
14 | {{ range $category := .categories }} | 12 | {{ range $category := .categories }} |
15 | <h2>{{ $category.Title }}</h2> | 13 | <h2>{{ $category.Title }}</h2> |
diff --git a/views/gril.html b/views/gril.html index d62fc75..d623abf 100644 --- a/views/gril.html +++ b/views/gril.html | |||
@@ -8,12 +8,8 @@ | |||
8 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> | 8 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> |
9 | </head> | 9 | </head> |
10 | <body> | 10 | <body> |
11 | {{ template "navbar" . }} | ||
11 | <div class="container"> | 12 | <div class="container"> |
12 | {{ if .loggedIn }} | ||
13 | <div class="row right-align"> | ||
14 | <a class="waves-effect waves-teal btn-flat large" style="top: 24px; font-size: 18px" href="/logout">Ausloggen</a> | ||
15 | </div> | ||
16 | {{ end }} | ||
17 | <h1>{{ $gril.RomajiName }}<small>{{ $gril.KanjiName }}</small></h1> | 13 | <h1>{{ $gril.RomajiName }}<small>{{ $gril.KanjiName }}</small></h1> |
18 | </div> | 14 | </div> |
19 | </body> | 15 | </body> |
diff --git a/views/index.html b/views/index.html deleted file mode 100644 index 81c801f..0000000 --- a/views/index.html +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | {{ define "index" }} | ||
2 | <html> | ||
3 | <head> | ||
4 | {{ template "materialize" }} | ||
5 | <title>grilist</title> | ||
6 | <style> | ||
7 | body { | ||
8 | height: 100%; | ||
9 | width: 100%; | ||
10 | overflow: hidden; | ||
11 | } | ||
12 | |||
13 | h1 { | ||
14 | font-size: 100px; | ||
15 | } | ||
16 | |||
17 | h1 >small { | ||
18 | margin-top: -50px; | ||
19 | font-size: 20%; | ||
20 | } | ||
21 | </style> | ||
22 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> | ||
23 | </head> | ||
24 | <body class="valign-wrapper center-align"> | ||
25 | <div class="container"> | ||
26 | <div class="center-align"> | ||
27 | <h1>grilist<small class="blue-grey-text lighten-1">#tamtam</small></h1> | ||
28 | |||
29 | <a class="btn waves-effect waves-light cyan lighten-3" href="/logout">Ausloggen</a> | ||
30 | </div> | ||
31 | </div> | ||
32 | </body> | ||
33 | </html> | ||
34 | {{ end }} \ No newline at end of file | ||
diff --git a/views/list.html b/views/list.html index 63cfd9c..fb5f7a3 100644 --- a/views/list.html +++ b/views/list.html | |||
@@ -8,12 +8,8 @@ | |||
8 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> | 8 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> |
9 | </head> | 9 | </head> |
10 | <body> | 10 | <body> |
11 | {{ template "navbar" . }} | ||
11 | <div class="container"> | 12 | <div class="container"> |
12 | {{ if .loggedIn }} | ||
13 | <div class="row right-align"> | ||
14 | <a class="waves-effect waves-teal btn-flat large" style="top: 24px; font-size: 18px" href="/logout">Ausloggen</a> | ||
15 | </div> | ||
16 | {{ end }} | ||
17 | <h1>{{ $list.Name }}<small>von xyz</small></h1><br /> | 13 | <h1>{{ $list.Name }}<small>von xyz</small></h1><br /> |
18 | <ul> | 14 | <ul> |
19 | {{ range $lg := $list.Grils }} | 15 | {{ range $lg := $list.Grils }} |
diff --git a/views/navbar.html b/views/navbar.html new file mode 100644 index 0000000..c4bbace --- /dev/null +++ b/views/navbar.html | |||
@@ -0,0 +1,13 @@ | |||
1 | {{ define "navbar" }} | ||
2 | <nav> | ||
3 | <div class="nav-wrapper purple lighten-2"> | ||
4 | <a href="/" class="brand-logo center">grilist</a> | ||
5 | <ul id="nav-mobile" class="right hide-on-med-and-down"> | ||
6 | {{ if .user }} | ||
7 | <li><a href="/">{{ .user.Name }}</a></li> | ||
8 | <li><a href="/logout">Ausloggen</a></li> | ||
9 | {{ end }} | ||
10 | </ul> | ||
11 | </div> | ||
12 | </nav> | ||
13 | {{ end }} \ No newline at end of file | ||