parent
42904cb98a
commit
6069abe5fd
@ -0,0 +1,54 @@ |
|||||||
|
package user |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
|
||||||
|
"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 !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 status models.NotificationStatus |
||||||
|
switch c.Query("status") { |
||||||
|
case "read": |
||||||
|
status = models.NotificationStatusRead |
||||||
|
default: |
||||||
|
status = models.NotificationStatusUnread |
||||||
|
} |
||||||
|
|
||||||
|
notifications, err := models.NotificationsForUser(c.User, status) |
||||||
|
if err != nil { |
||||||
|
c.Handle(500, "ErrNotificationsForUser", err) |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
title := "Notifications" |
||||||
|
if count := len(notifications); count > 0 { |
||||||
|
title = fmt.Sprintf("(%d) %s", count, title) |
||||||
|
} |
||||||
|
c.Data["Title"] = title |
||||||
|
c.Data["Status"] = status |
||||||
|
c.Data["Notifications"] = notifications |
||||||
|
c.HTML(200, tplNotification) |
||||||
|
} |
@ -0,0 +1,68 @@ |
|||||||
|
{{template "base/head" .}} |
||||||
|
|
||||||
|
<div class="user notification"> |
||||||
|
<div class="ui container"> |
||||||
|
<h1 class="ui header">{{.i18n.Tr "notification.notifications"}}</h1> |
||||||
|
|
||||||
|
<div class="ui top attached tabular menu"> |
||||||
|
<a href="/notifications?status=unread"> |
||||||
|
<div class="{{if eq .Status 1}}active{{end}} item"> |
||||||
|
{{.i18n.Tr "notification.unread"}} |
||||||
|
{{if eq .Status 1}} |
||||||
|
<div class="ui label">{{len .Notifications}}</div> |
||||||
|
{{end}} |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
<a href="/notifications?status=read"> |
||||||
|
<div class="{{if eq .Status 2}}active{{end}} item"> |
||||||
|
{{.i18n.Tr "notification.read"}} |
||||||
|
{{if eq .Status 2}} |
||||||
|
<div class="ui label">{{len .Notifications}}</div> |
||||||
|
{{end}} |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="ui bottom attached active tab segment"> |
||||||
|
{{if eq (len .Notifications) 0}} |
||||||
|
{{if eq .Status 1}} |
||||||
|
{{.i18n.Tr "notification.no_unread"}} |
||||||
|
{{else}} |
||||||
|
{{.i18n.Tr "notification.no_read"}} |
||||||
|
{{end}} |
||||||
|
{{else}} |
||||||
|
<div class="ui relaxed divided list"> |
||||||
|
{{range $notification := .Notifications}} |
||||||
|
{{$issue := $notification.GetIssue}} |
||||||
|
{{$repo := $notification.GetRepo}} |
||||||
|
{{$repoOwner := $repo.MustOwner}} |
||||||
|
|
||||||
|
<div class="item"> |
||||||
|
<a href="{{$.AppSubUrl}}/{{$repoOwner.Name}}/{{$repo.Name}}/issues/{{$issue.Index}}"> |
||||||
|
{{if and $issue.IsPull}} |
||||||
|
{{if $issue.IsClosed}} |
||||||
|
<i class="octicon octicon-git-merge"></i> |
||||||
|
{{else}} |
||||||
|
<i class="octicon octicon-git-pull-request"></i> |
||||||
|
{{end}} |
||||||
|
{{else}} |
||||||
|
{{if $issue.IsClosed}} |
||||||
|
<i class="octicon octicon-issue-closed"></i> |
||||||
|
{{else}} |
||||||
|
<i class="octicon octicon-issue-opened"></i> |
||||||
|
{{end}} |
||||||
|
{{end}} |
||||||
|
|
||||||
|
<div class="content"> |
||||||
|
<div class="header">{{$repoOwner.Name}}/{{$repo.Name}}</div> |
||||||
|
<div class="description">{{$issue.Title}}</div> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
{{end}} |
||||||
|
</div> |
||||||
|
{{end}} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{{template "base/footer" .}} |
Loading…
Reference in new issue