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