aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go2
-rw-r--r--modules/lists/lists.go6
-rw-r--r--modules/user/user.go71
-rw-r--r--views/navbar.html2
-rw-r--r--views/user.html22
5 files changed, 99 insertions, 4 deletions
diff --git a/main.go b/main.go
index 92cba1f..d657a4c 100644
--- a/main.go
+++ b/main.go
@@ -13,6 +13,7 @@ import (
13 "fagott.pw/grilist/modules/lists" 13 "fagott.pw/grilist/modules/lists"
14 "fagott.pw/grilist/modules/search" 14 "fagott.pw/grilist/modules/search"
15 "fagott.pw/grilist/modules/tags" 15 "fagott.pw/grilist/modules/tags"
16 "fagott.pw/grilist/modules/user"
16 17
17 "github.com/julienschmidt/httprouter" 18 "github.com/julienschmidt/httprouter"
18 _ "github.com/lib/pq" 19 _ "github.com/lib/pq"
@@ -77,6 +78,7 @@ func main() {
77 loadModule(lists.New()) 78 loadModule(lists.New())
78 loadModule(tags.New()) 79 loadModule(tags.New())
79 loadModule(search.New()) 80 loadModule(search.New())
81 loadModule(user.New())
80 82
81 log.Fatal(http.ListenAndServe(":8080", nil)) 83 log.Fatal(http.ListenAndServe(":8080", nil))
82} 84}
diff --git a/modules/lists/lists.go b/modules/lists/lists.go
index 85e6ce5..ec29ea8 100644
--- a/modules/lists/lists.go
+++ b/modules/lists/lists.go
@@ -159,7 +159,7 @@ func (m *Module) FromID(id int) (*List, error) {
159 return lists[0], nil 159 return lists[0], nil
160} 160}
161 161
162func listsToCards(lists []*List) []frontend.Card { 162func ListsToCards(lists []*List) []frontend.Card {
163 var cards []frontend.Card 163 var cards []frontend.Card
164 164
165 for _, list := range lists { 165 for _, list := range lists {
@@ -200,7 +200,7 @@ func (m *Module) ProvideDashboardData(user *charakterin.User) []grilist.Dashboar
200 200
201 categories = append(categories, grilist.DashboardCategory{ 201 categories = append(categories, grilist.DashboardCategory{
202 Title: "Neueste Listen", 202 Title: "Neueste Listen",
203 Cards: listsToCards(lists), 203 Cards: ListsToCards(lists),
204 }) 204 })
205 205
206 if user == nil { 206 if user == nil {
@@ -216,7 +216,7 @@ func (m *Module) ProvideDashboardData(user *charakterin.User) []grilist.Dashboar
216 216
217 categories = append(categories, grilist.DashboardCategory{ 217 categories = append(categories, grilist.DashboardCategory{
218 Title: "Meine Listen", 218 Title: "Meine Listen",
219 Cards: listsToCards(lists), 219 Cards: ListsToCards(lists),
220 }) 220 })
221 221
222 return categories 222 return categories
diff --git a/modules/user/user.go b/modules/user/user.go
new file mode 100644
index 0000000..2645919
--- /dev/null
+++ b/modules/user/user.go
@@ -0,0 +1,71 @@
1package user
2
3import (
4 "log"
5 "net/http"
6 "strconv"
7
8 "fagott.pw/charakterin"
9 "fagott.pw/grilist/grilist"
10 "fagott.pw/grilist/modules/lists"
11
12 "github.com/julienschmidt/httprouter"
13)
14
15type Module struct {
16 g *grilist.Grilist
17 lists *lists.Module
18}
19
20func New() *Module {
21 return &Module{}
22}
23
24func (m *Module) Name() string {
25 return "User"
26}
27
28func (m *Module) Init(g *grilist.Grilist) {
29 m.g = g
30
31 gm, ok := g.Modules["Lists"]
32 if !ok {
33 log.Fatal("tags: lists module not found")
34 }
35 m.lists = gm.(*lists.Module)
36
37 m.g.Router.GET("/user/:id", m.viewUser)
38 m.g.Router.GET("/user/:id/*rest", m.viewUser)
39}
40
41func (m *Module) ProvideDashboardData(user *charakterin.User) []grilist.DashboardCategory {
42 return make([]grilist.DashboardCategory, 0)
43}
44
45func (m *Module) viewUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
46 currentUser, _ := m.g.Charakterin.GetUserFromRequest(r)
47
48 userID, err := strconv.Atoi(p.ByName("id"))
49 if err != nil {
50 http.Redirect(w, r, "/", 302)
51 return
52 }
53
54 user := currentUser
55 if currentUser.ID != userID {
56 user, err = m.g.Charakterin.GetUserByID(userID)
57 if err != nil {
58 http.Redirect(w, r, "/", 302)
59 return
60 }
61 }
62
63 userLists := m.lists.GetUserLists(user)
64
65 data := m.g.Renderer.DefaultData()
66 data["user"] = currentUser
67 data["DisplayUser"] = user
68 data["Lists"] = lists.ListsToCards(userLists)
69
70 m.g.Renderer.RenderPage("user", w, data)
71} \ No newline at end of file
diff --git a/views/navbar.html b/views/navbar.html
index c456112..a0db664 100644
--- a/views/navbar.html
+++ b/views/navbar.html
@@ -5,7 +5,7 @@
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="/new/list">Liste erstellen</a></li>
8 <li><a href="/">{{ .user.GetName }}</a></li> 8 <li><a href="/user/{{ .user.ID }}/{{ .user.GetName }}">{{ .user.GetName }}</a></li>
9 <li><a href="/logout">Ausloggen</a></li> 9 <li><a href="/logout">Ausloggen</a></li>
10 {{ else }} 10 {{ else }}
11 <li><a href="/login">Einloggen</a></li> 11 <li><a href="/login">Einloggen</a></li>
diff --git a/views/user.html b/views/user.html
new file mode 100644
index 0000000..19ffff6
--- /dev/null
+++ b/views/user.html
@@ -0,0 +1,22 @@
1{{ define "user" }}
2<html>
3 <head>
4 {{ template "materialize" }}
5 <title>{{ .DisplayUser.Name }} - grilist</title>
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
7 </head>
8 <body>
9 {{ template "navbar" . }}
10 <div class="container">
11 <h1>{{ .DisplayUser.Name }}</h1>
12 <blockquote>zuletzt gesehen: {{ .DisplayUser.LastActivity.Format "Mon Jan _2 15:04:05 2006" }}</blockquote><br />
13 <div class="row">
14 <h3>Listen von {{ .DisplayUser.Name }}</h3>
15 {{ range .Lists }}
16 {{ template "card" . }}
17 {{ end }}
18 </div>
19 </div>
20 </body>
21</html>
22{{ end }}