Add pagination for notifications

This commit is contained in:
Andrey Nering 2017-01-03 17:09:36 -02:00
parent 545ba2e2e6
commit b354cf362e
3 changed files with 40 additions and 10 deletions

View file

@ -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)
}