diff options
author | Andrey Nering <andrey.nering@gmail.com> | 2017-01-03 17:09:36 -0200 |
---|---|---|
committer | Andrey Nering <andrey.nering@gmail.com> | 2017-01-03 17:09:36 -0200 |
commit | b354cf362ec432533da4384d4ee0c32283b7089f (patch) | |
tree | 5cc33eb5c21edd3724a88af3f3068ebd48507678 /routers | |
parent | 545ba2e2e62123fc4c9b7f780ccff3ee1b4888ff (diff) | |
download | gitea-b354cf362ec432533da4384d4ee0c32283b7089f.tar.gz gitea-b354cf362ec432533da4384d4ee0c32283b7089f.zip |
Add pagination for notifications
Diffstat (limited to 'routers')
-rw-r--r-- | routers/user/notification.go | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/routers/user/notification.go b/routers/user/notification.go index 866cc6de02..7e556ae2ea 100644 --- a/routers/user/notification.go +++ b/routers/user/notification.go @@ -4,6 +4,8 @@ import ( "fmt" "strings" + "github.com/Unknwon/paginater" + "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" @@ -34,26 +36,46 @@ func GetNotificationCount(c *context.Context) { // Notifications is the notifications page func Notifications(c *context.Context) { - var status models.NotificationStatus - switch c.Query("status") { + var ( + keyword = c.Query("q") + status models.NotificationStatus + page = c.QueryInt("page") + perPage = c.QueryInt("perPage") + ) + if page < 1 { + page = 1 + } + if perPage < 1 { + perPage = 20 + } + + switch keyword { case "read": status = models.NotificationStatusRead default: status = models.NotificationStatusUnread } - notifications, err := models.NotificationsForUser(c.User, status) + notifications, err := models.NotificationsForUser(c.User, status, page, perPage) if err != nil { c.Handle(500, "ErrNotificationsForUser", err) return } + total, err := models.GetNotificationCount(c.User, status) + if err != nil { + c.Handle(500, "ErrGetNotificationCount", err) + return + } + title := "Notifications" if count := len(notifications); count > 0 { title = fmt.Sprintf("(%d) %s", count, title) } c.Data["Title"] = title + c.Data["Keyword"] = keyword c.Data["Status"] = status c.Data["Notifications"] = notifications + c.Data["Page"] = paginater.New(int(total), perPage, page, 5) c.HTML(200, tplNotification) } |