diff options
Diffstat (limited to 'modules/tags')
-rw-r--r-- | modules/tags/tags.go | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/modules/tags/tags.go b/modules/tags/tags.go index 9412e24..aca1b44 100644 --- a/modules/tags/tags.go +++ b/modules/tags/tags.go | |||
@@ -3,6 +3,7 @@ package tags | |||
3 | import ( | 3 | import ( |
4 | "log" | 4 | "log" |
5 | "net/http" | 5 | "net/http" |
6 | "strconv" | ||
6 | 7 | ||
7 | "fagott.pw/charakterin" | 8 | "fagott.pw/charakterin" |
8 | "fagott.pw/grilist/frontend" | 9 | "fagott.pw/grilist/frontend" |
@@ -33,6 +34,7 @@ func (m *Module) Init(g *grilist.Grilist) { | |||
33 | } | 34 | } |
34 | m.grils = gm.(*grils.GrilsModule) | 35 | m.grils = gm.(*grils.GrilsModule) |
35 | m.g.Router.GET("/tag/:tag", m.viewTag) | 36 | m.g.Router.GET("/tag/:tag", m.viewTag) |
37 | m.g.Router.GET("/tag/:tag/:page", m.viewTagPage) | ||
36 | } | 38 | } |
37 | 39 | ||
38 | func (m *Module) Interface() interface{} { | 40 | func (m *Module) Interface() interface{} { |
@@ -44,21 +46,35 @@ func (m *Module) ProvideDashboardData(user *charakterin.User) []grilist.Dashboar | |||
44 | } | 46 | } |
45 | 47 | ||
46 | func (m *Module) viewTag(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | 48 | func (m *Module) viewTag(w http.ResponseWriter, r *http.Request, p httprouter.Params) { |
49 | p = append(p, httprouter.Param{ | ||
50 | Key: "page", | ||
51 | Value: "1", | ||
52 | }) | ||
53 | m.viewTagPage(w, r, p) | ||
54 | } | ||
55 | |||
56 | func (m *Module) viewTagPage(w http.ResponseWriter, r *http.Request, p httprouter.Params) { | ||
47 | user, _ := m.g.Charakterin.GetUserFromRequest(r) | 57 | user, _ := m.g.Charakterin.GetUserFromRequest(r) |
48 | tag := p.ByName("tag") | 58 | tag := p.ByName("tag") |
49 | var tagID int | 59 | var tagID int |
50 | row := m.g.DB.QueryRow("SELECT id FROM grilist.tags WHERE name = $1;", tag) | 60 | row := m.g.DB.QueryRow("SELECT id FROM grilist.tags WHERE name = $1;", tag) |
51 | if err := row.Scan(&tagID); err != nil { | 61 | if err := row.Scan(&tagID); err != nil { |
52 | log.Println(err) | 62 | log.Println("error getting tag id", err) |
53 | http.Redirect(w, r, "/", 302) | 63 | http.Redirect(w, r, "/", 302) |
54 | return | 64 | return |
55 | } | 65 | } |
66 | |||
67 | pageNumber, err := strconv.Atoi(p.ByName("page")) | ||
68 | if err != nil || pageNumber < 1 { | ||
69 | pageNumber = 1 | ||
70 | } | ||
71 | |||
56 | idList := make([]int, 0) | 72 | idList := make([]int, 0) |
57 | rows, err := m.g.DB.Query( | 73 | rows, err := m.g.DB.Query( |
58 | "SELECT gril_id FROM grilist.grils_tags WHERE tag_id = $1", | 74 | "SELECT gril_id FROM grilist.grils_tags WHERE tag_id = $1 LIMIT 12 OFFSET $2", |
59 | tagID) | 75 | tagID, (pageNumber-1)*12) |
60 | if err != nil { | 76 | if err != nil { |
61 | log.Println(err) | 77 | log.Println("error getting idList", err) |
62 | http.Redirect(w, r, "/", 302) | 78 | http.Redirect(w, r, "/", 302) |
63 | return | 79 | return |
64 | } | 80 | } |