aboutsummaryrefslogtreecommitdiffstats
path: root/templates/user/notification
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2020-04-24 04:57:38 +0100
committerGitHub <noreply@github.com>2020-04-24 00:57:38 -0300
commitb10c416f9e72da39fb5f7398c7c67faaab008a5e (patch)
treedd5579c788f0a29326f979c9a984cd899b2f1737 /templates/user/notification
parente74c4e1be988f2815146338cbce8210e515a937e (diff)
downloadgitea-b10c416f9e72da39fb5f7398c7c67faaab008a5e.tar.gz
gitea-b10c416f9e72da39fb5f7398c7c67faaab008a5e.zip
Use AJAX for notifications table (#10961)
* Use AJAX for notifications table Signed-off-by: Andrew Thornton <art27@cantab.net> * move to separate js Signed-off-by: Andrew Thornton <art27@cantab.net> * placate golangci-lint Signed-off-by: Andrew Thornton <art27@cantab.net> * Add autoupdating notification count Signed-off-by: Andrew Thornton <art27@cantab.net> * Fix wipeall Signed-off-by: Andrew Thornton <art27@cantab.net> * placate tests Signed-off-by: Andrew Thornton <art27@cantab.net> * Try hidden Signed-off-by: Andrew Thornton <art27@cantab.net> * Try hide and hidden Signed-off-by: Andrew Thornton <art27@cantab.net> * More auto-update improvements Only run checker on pages that have a count Change starting checker to 10s with a back-off to 60s if there is no change Signed-off-by: Andrew Thornton <art27@cantab.net> * string comparison! Signed-off-by: Andrew Thornton <art27@cantab.net> * as per @silverwind Signed-off-by: Andrew Thornton <art27@cantab.net> * add configurability as per @6543 Signed-off-by: Andrew Thornton <art27@cantab.net> * Add documentation as per @6543 Signed-off-by: Andrew Thornton <art27@cantab.net> * Use CSRF header not query Signed-off-by: Andrew Thornton <art27@cantab.net> * Further JS improvements Fix @etzelia update notification table request Fix @silverwind comments Co-Authored-By: silverwind <me@silverwind.io> Signed-off-by: Andrew Thornton <art27@cantab.net> * Simplify the notification count fns Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: silverwind <me@silverwind.io>
Diffstat (limited to 'templates/user/notification')
-rw-r--r--templates/user/notification/notification.tmpl118
-rw-r--r--templates/user/notification/notification_div.tmpl128
2 files changed, 129 insertions, 117 deletions
diff --git a/templates/user/notification/notification.tmpl b/templates/user/notification/notification.tmpl
index c4f744a291..b483c15e95 100644
--- a/templates/user/notification/notification.tmpl
+++ b/templates/user/notification/notification.tmpl
@@ -1,119 +1,3 @@
{{template "base/head" .}}
-
-<div class="user notification">
- <div class="ui container">
- <h1 class="ui dividing header">{{.i18n.Tr "notification.notifications"}}</h1>
-
- <div class="ui top attached tabular menu">
- <a href="{{AppSubUrl}}/notifications?q=unread" class="{{if eq .Status 1}}active{{end}} item">
- {{.i18n.Tr "notification.unread"}}
- {{if .NotificationUnreadCount}}
- <div class="ui label">{{.NotificationUnreadCount}}</div>
- {{end}}
- </a>
- <a href="{{AppSubUrl}}/notifications?q=read" class="{{if eq .Status 2}}active{{end}} item">
- {{.i18n.Tr "notification.read"}}
- </a>
- {{if and (eq .Status 1) (.NotificationUnreadCount)}}
- <form action="{{AppSubUrl}}/notifications/purge" method="POST" style="margin-left: auto;">
- {{$.CsrfTokenHtml}}
- <button class="ui mini button primary" title='{{$.i18n.Tr "notification.mark_all_as_read"}}'>
- {{svg "octicon-checklist" 16}}
- </button>
- </form>
- {{end}}
- </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}}
- <table class="ui unstackable striped very compact small selectable table">
- <tbody>
- {{range $notification := .Notifications}}
- {{$issue := $notification.Issue}}
- {{$repo := $notification.Repository}}
- {{$repoOwner := $repo.MustOwner}}
-
- <tr data-href="{{$notification.HTMLURL}}">
- <td class="collapsing">
- {{if eq $notification.Status 3}}
- <span class="blue">{{svg "octicon-pin" 16}}</span>
- {{else if $issue.IsPull}}
- {{if $issue.IsClosed}}
- {{if $issue.GetPullRequest.HasMerged}}
- <span class="purple">{{svg "octicon-git-merge" 16}}</span>
- {{else}}
- <span class="red">{{svg "octicon-git-pull-request" 16}}</span>
- {{end}}
- {{else}}
- <span class="green">{{svg "octicon-git-pull-request" 16}}</span>
- {{end}}
- {{else}}
- {{if $issue.IsClosed}}
- <span class="red">{{svg "octicon-issue-closed" 16}}</span>
- {{else}}
- <span class="green">{{svg "octicon-issue-opened" 16}}</span>
- {{end}}
- {{end}}
- </td>
- <td class="eleven wide">
- <a class="item" href="{{$notification.HTMLURL}}">
- #{{$issue.Index}} - {{$issue.Title}}
- </a>
- </td>
- <td>
- <a class="item" href="{{AppSubUrl}}/{{$repoOwner.Name}}/{{$repo.Name}}">
- {{$repoOwner.Name}}/{{$repo.Name}}
- </a>
- </td>
- <td class="collapsing">
- {{if ne $notification.Status 3}}
- <form action="{{AppSubUrl}}/notifications/status" method="POST">
- {{$.CsrfTokenHtml}}
- <input type="hidden" name="notification_id" value="{{$notification.ID}}" />
- <input type="hidden" name="status" value="pinned" />
- <button class="ui mini button" title='{{$.i18n.Tr "notification.pin"}}'>
- {{svg "octicon-pin" 16}}
- </button>
- </form>
- {{end}}
- </td>
- <td class="collapsing">
- {{if or (eq $notification.Status 1) (eq $notification.Status 3)}}
- <form action="{{AppSubUrl}}/notifications/status" method="POST">
- {{$.CsrfTokenHtml}}
- <input type="hidden" name="notification_id" value="{{$notification.ID}}" />
- <input type="hidden" name="status" value="read" />
- <input type="hidden" name="page" value="{{$.Page.Paginater.Current}}" />
- <button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_read"}}'>
- {{svg "octicon-check" 16}}
- </button>
- </form>
- {{else if eq $notification.Status 2}}
- <form action="{{AppSubUrl}}/notifications/status" method="POST">
- {{$.CsrfTokenHtml}}
- <input type="hidden" name="notification_id" value="{{$notification.ID}}" />
- <input type="hidden" name="status" value="unread" />
- <input type="hidden" name="page" value="{{$.Page.Paginater.Current}}" />
- <button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_unread"}}'>
- {{svg "octicon-bell" 16}}
- </button>
- </form>
- {{end}}
- </td>
- </tr>
- {{end}}
- </tbody>
- </table>
- {{end}}
- </div>
-
- {{template "base/paginate" .}}
- </div>
-</div>
-
+{{template "user/notification/notification_div" .}}
{{template "base/footer" .}}
diff --git a/templates/user/notification/notification_div.tmpl b/templates/user/notification/notification_div.tmpl
new file mode 100644
index 0000000000..18054c479a
--- /dev/null
+++ b/templates/user/notification/notification_div.tmpl
@@ -0,0 +1,128 @@
+<div class="user notification" id="notification_div" data-params="{{.Page.GetParams}}">
+ <div class="ui container">
+ <h1 class="ui dividing header">{{.i18n.Tr "notification.notifications"}}</h1>
+ <div class="ui top attached tabular menu">
+ {{ $notificationUnreadCount := call .NotificationUnreadCount}}
+ <a href="{{AppSubUrl}}/notifications?q=unread" class="{{if eq .Status 1}}active{{end}} item">
+ {{.i18n.Tr "notification.unread"}}
+ <div class="ui label {{if not $notificationUnreadCount}}hidden{{end}}">{{$notificationUnreadCount}}</div>
+ </a>
+ <a href="{{AppSubUrl}}/notifications?q=read" class="{{if eq .Status 2}}active{{end}} item">
+ {{.i18n.Tr "notification.read"}}
+ </a>
+ {{if and (eq .Status 1)}}
+ <form action="{{AppSubUrl}}/notifications/purge" method="POST" style="margin-left: auto;">
+ {{$.CsrfTokenHtml}}
+ <div class="{{if not $notificationUnreadCount}}hide{{end}}">
+ <button class="ui mini button primary" title='{{$.i18n.Tr "notification.mark_all_as_read"}}'>
+ {{svg "octicon-checklist" 16}}
+ </button>
+ </div>
+ </form>
+ {{end}}
+ </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}}
+ <table class="ui unstackable striped very compact small selectable table" id="notification_table">
+ <tbody>
+ {{range $notification := .Notifications}}
+ {{$issue := .Issue}}
+ {{$repo := .Repository}}
+ {{$repoOwner := $repo.MustOwner}}
+ <tr id="notification_{{.ID}}">
+ <td class="collapsing" data-href="{{.HTMLURL}}">
+ {{if eq .Status 3}}
+ <span class="blue">{{svg "octicon-pin" 16}}</span>
+ {{else if $issue.IsPull}}
+ {{if $issue.IsClosed}}
+ {{if $issue.GetPullRequest.HasMerged}}
+ <span class="purple">{{svg "octicon-git-merge" 16}}</span>
+ {{else}}
+ <span class="red">{{svg "octicon-git-pull-request" 16}}</span>
+ {{end}}
+ {{else}}
+ <span class="green">{{svg "octicon-git-pull-request" 16}}</span>
+ {{end}}
+ {{else}}
+ {{if $issue.IsClosed}}
+ <span class="red">{{svg "octicon-issue-closed" 16}}</span>
+ {{else}}
+ <span class="green">{{svg "octicon-issue-opened" 16}}</span>
+ {{end}}
+ {{end}}
+ </td>
+ <td class="eleven wide" data-href="{{.HTMLURL}}">
+ <a class="item" href="{{.HTMLURL}}">
+ #{{$issue.Index}} - {{$issue.Title}}
+ </a>
+ </td>
+ <td data-href="{{AppSubUrl}}/{{$repoOwner.Name}}/{{$repo.Name}}">
+ <a class="item" href="{{AppSubUrl}}/{{$repoOwner.Name}}/{{$repo.Name}}">
+ {{$repoOwner.Name}}/{{$repo.Name}}
+ </a>
+ </td>
+ <td class="collapsing">
+ {{if ne .Status 3}}
+ <form action="{{AppSubUrl}}/notifications/status" method="POST">
+ {{$.CsrfTokenHtml}}
+ <input type="hidden" name="notification_id" value="{{.ID}}" />
+ <input type="hidden" name="status" value="pinned" />
+ <button class="ui mini button" title='{{$.i18n.Tr "notification.pin"}}'
+ data-url="{{AppSubUrl}}/notifications/status"
+ data-status="pinned"
+ data-page="{{$.Page.Paginater.Current}}"
+ data-notification-id="{{.ID}}"
+ data-q="{{$.Keyword}}">
+ {{svg "octicon-pin" 16}}
+ </button>
+ </form>
+ {{end}}
+ </td>
+ <td class="collapsing">
+ {{if or (eq .Status 1) (eq .Status 3)}}
+ <form action="{{AppSubUrl}}/notifications/status" method="POST">
+ {{$.CsrfTokenHtml}}
+ <input type="hidden" name="notification_id" value="{{.ID}}" />
+ <input type="hidden" name="status" value="read" />
+ <input type="hidden" name="page" value="{{$.Page.Paginater.Current}}" />
+ <button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_read"}}'
+ data-url="{{AppSubUrl}}/notifications/status"
+ data-status="read"
+ data-page="{{$.Page.Paginater.Current}}"
+ data-notification-id="{{.ID}}"
+ data-q="{{$.Keyword}}">
+ {{svg "octicon-check" 16}}
+ </button>
+ </form>
+ {{else if eq .Status 2}}
+ <form action="{{AppSubUrl}}/notifications/status" method="POST">
+ {{$.CsrfTokenHtml}}
+ <input type="hidden" name="notification_id" value="{{.ID}}" />
+ <input type="hidden" name="status" value="unread" />
+ <input type="hidden" name="page" value="{{$.Page.Paginater.Current}}" />
+ <button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_unread"}}'
+ data-url="{{AppSubUrl}}/notifications/status"
+ data-status="unread"
+ data-page="{{$.Page.Paginater.Current}}"
+ data-notification-id="{{.ID}}"
+ data-q="{{$.Keyword}}">
+ {{svg "octicon-bell" 16}}
+ </button>
+ </form>
+ {{end}}
+ </td>
+ </tr>
+ {{end}}
+ </tbody>
+ </table>
+ {{end}}
+ </div>
+ {{template "base/paginate" .}}
+ </div>
+</div>