diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/lists/lists.go | 6 | ||||
-rw-r--r-- | modules/user/user.go | 71 |
2 files changed, 74 insertions, 3 deletions
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 | ||
162 | func listsToCards(lists []*List) []frontend.Card { | 162 | func 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 @@ | |||
1 | package user | ||
2 | |||
3 | import ( | ||
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 | |||
15 | type Module struct { | ||
16 | g *grilist.Grilist | ||
17 | lists *lists.Module | ||
18 | } | ||
19 | |||
20 | func New() *Module { | ||
21 | return &Module{} | ||
22 | } | ||
23 | |||
24 | func (m *Module) Name() string { | ||
25 | return "User" | ||
26 | } | ||
27 | |||
28 | func (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 | |||
41 | func (m *Module) ProvideDashboardData(user *charakterin.User) []grilist.DashboardCategory { | ||
42 | return make([]grilist.DashboardCategory, 0) | ||
43 | } | ||
44 | |||
45 | func (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 | ||