summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorAndrey Nering <andrey.nering@gmail.com>2017-01-05 11:53:01 -0200
committerGitHub <noreply@github.com>2017-01-05 11:53:01 -0200
commit79d527195d98d74867a067ce93a4dace2b86d2bb (patch)
tree0dd577f8b0f28c95a7d66def7d321e3b4e65f2c3 /routers
parent9d1bc9aac88bda13e4b9319ab915bca1b65521f6 (diff)
parentb354cf362ec432533da4384d4ee0c32283b7089f (diff)
downloadgitea-79d527195d98d74867a067ce93a4dace2b86d2bb.tar.gz
gitea-79d527195d98d74867a067ce93a4dace2b86d2bb.zip
Merge pull request #539 from andreynering/notifications-step-2
Notifications - Step 2
Diffstat (limited to 'routers')
-rw-r--r--routers/user/notification.go81
-rw-r--r--routers/user/setting.go1
2 files changed, 81 insertions, 1 deletions
diff --git a/routers/user/notification.go b/routers/user/notification.go
new file mode 100644
index 0000000000..7e556ae2ea
--- /dev/null
+++ b/routers/user/notification.go
@@ -0,0 +1,81 @@
+package user
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/Unknwon/paginater"
+
+ "code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/base"
+ "code.gitea.io/gitea/modules/context"
+)
+
+const (
+ tplNotification base.TplName = "user/notification/notification"
+)
+
+// GetNotificationCount is the middleware that sets the notification count in the context
+func GetNotificationCount(c *context.Context) {
+ if strings.HasPrefix(c.Req.URL.Path, "/api") {
+ return
+ }
+
+ if !c.IsSigned {
+ return
+ }
+
+ count, err := models.GetNotificationUnreadCount(c.User)
+ if err != nil {
+ c.Handle(500, "GetNotificationCount", err)
+ return
+ }
+
+ c.Data["NotificationUnreadCount"] = count
+}
+
+// Notifications is the notifications page
+func Notifications(c *context.Context) {
+ 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, 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)
+}
diff --git a/routers/user/setting.go b/routers/user/setting.go
index e078f8c17a..a465b0cd8c 100644
--- a/routers/user/setting.go
+++ b/routers/user/setting.go
@@ -29,7 +29,6 @@ const (
tplSettingsSocial base.TplName = "user/settings/social"
tplSettingsApplications base.TplName = "user/settings/applications"
tplSettingsDelete base.TplName = "user/settings/delete"
- tplNotification base.TplName = "user/notification"
tplSecurity base.TplName = "user/security"
)