aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjan <jan@ruken.pw>2015-12-31 00:19:09 (UTC)
committerjan <jan@ruken.pw>2015-12-31 00:19:09 (UTC)
commit16f6b2565d33be12c84dc78ed5fef147d8f435d3 (patch)
tree38da730fd72a2f06a721bc9f804337392804e471
parentc2503cab34c1abe3e0ab9de2ac2321a42db8989c (diff)
listen können jetzt erstellt werden.
-rw-r--r--modules/lists/lists.go37
-rw-r--r--views/create_list.html47
-rw-r--r--views/navbar.html1
3 files changed, 85 insertions, 0 deletions
diff --git a/modules/lists/lists.go b/modules/lists/lists.go
index 2b1ced3..ae1ec65 100644
--- a/modules/lists/lists.go
+++ b/modules/lists/lists.go
@@ -61,6 +61,8 @@ func (m *Module) Init(g *grilist.Grilist) {
61 m.grils = grilsModule 61 m.grils = grilsModule
62 m.g.Router.GET("/list/:id", m.viewList) 62 m.g.Router.GET("/list/:id", m.viewList)
63 m.g.Router.POST("/list/:id", m.addGrilToList) 63 m.g.Router.POST("/list/:id", m.addGrilToList)
64 m.g.Router.GET("/new/list", m.displayCreateList)
65 m.g.Router.POST("/new/list", m.createList)
64} 66}
65 67
66func (m *Module) getListGrils(list *List) error { 68func (m *Module) getListGrils(list *List) error {
@@ -260,6 +262,41 @@ func (m *Module) addGrilToList(w http.ResponseWriter, r *http.Request, p httprou
260 http.Error(w, "not implemented", 500) 262 http.Error(w, "not implemented", 500)
261} 263}
262 264
265func (m *Module) displayCreateList(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
266 user, _ := m.g.Charakterin.GetUserFromRequest(r)
267
268 data := m.g.Renderer.DefaultData()
269 data["user"] = user
270
271 m.g.Renderer.RenderPage("create_list", w, data)
272}
273
274func (m *Module) createList(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
275 user, err := m.g.Charakterin.GetUserFromRequest(r)
276 if err != nil {
277 log.Println(err)
278 http.Error(w, "500", http.StatusInternalServerError)
279 return
280 }
281
282 values, err := readBody(r)
283 if err != nil {
284 log.Println(err)
285 http.Error(w, "500", http.StatusInternalServerError)
286 return
287 }
288
289 var id int
290 err = m.g.DB.QueryRow(`INSERT INTO grilist.lists(user_id, name, description) VALUES($1, $2, $3) RETURNING id`, user.ID, values.Get("name"), values.Get("description")).Scan(&id)
291 if err != nil {
292 log.Println(err)
293 http.Error(w, "500", http.StatusInternalServerError)
294 return
295 }
296
297 http.Redirect(w, r, fmt.Sprintf("/list/%d", id), 302)
298}
299
263// New erstellt eine neue Instanz des Modules 300// New erstellt eine neue Instanz des Modules
264func New() *Module { 301func New() *Module {
265 return &Module{} 302 return &Module{}
diff --git a/views/create_list.html b/views/create_list.html
new file mode 100644
index 0000000..375dddd
--- /dev/null
+++ b/views/create_list.html
@@ -0,0 +1,47 @@
1{{ define "create_list" }}
2<html>
3 <head>
4 {{ template "materialize" }}
5 <title>grilist</title>
6 <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
7 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
8 </head>
9 <body>
10 {{ template "navbar" . }}
11 <div class="container">
12 <div class="row">
13 <div class="col s12 m8 offset-m2 l6 offset-l3">
14 {{ if .error }}
15 <div class="col s12 m8 offset-m2">
16 <div class="card red lighten-2">
17 <div class="card-content white-text">
18 <span class="card-title">Fehler</span>
19 <p>Es gab einen Fehler: {{ .error }}</p>
20 </div>
21 </div>
22 </div>
23 {{ end }}
24
25 <form method="POST" name="create-list" action="">
26 <div class="input-field col s12">
27 <i class="material-icons prefix">list</i>
28 <input name="name" type="text" placeholder="Name" class="validate"/>
29 </div>
30 <div class="input-field col s12">
31 <textarea id="description" name="description" class="materialize-textarea" style="padding-top: 32px"></textarea>
32 <label for="description">Beschreibung</label>
33 </div>
34 <div class="row col s12">
35 <div class="right-align">
36 <button class="btn waves-effect waves-light purple lighten-2" type="submit" name="action">
37 Erstellen <i class="material-icons right">send</i>
38 </button>
39 </div>
40 </div>
41 </form>
42 </div>
43 </div>
44 </div>
45 </body>
46</html>
47{{ end }}
diff --git a/views/navbar.html b/views/navbar.html
index 8905a1d..c456112 100644
--- a/views/navbar.html
+++ b/views/navbar.html
@@ -4,6 +4,7 @@
4 <a href="/" class="brand-logo center">grilist</a> 4 <a href="/" class="brand-logo center">grilist</a>
5 <ul id="nav-mobile" class="right hide-on-med-and-down"> 5 <ul id="nav-mobile" class="right hide-on-med-and-down">
6 {{ if .user }} 6 {{ if .user }}
7 <li><a href="/new/list">Liste erstellen</a></li>
7 <li><a href="/">{{ .user.GetName }}</a></li> 8 <li><a href="/">{{ .user.GetName }}</a></li>
8 <li><a href="/logout">Ausloggen</a></li> 9 <li><a href="/logout">Ausloggen</a></li>
9 {{ else }} 10 {{ else }}