Browse Source

Add INBOX unread count on mailbox/message pages

master
Simon Ser 4 years ago
parent
commit
9a7acd2791
No known key found for this signature in database GPG Key ID: FDE7BE0E88F5E48
3 changed files with 40 additions and 13 deletions
  1. +20
    -2
      plugins/base/routes.go
  2. +12
    -8
      themes/alps/mailbox.html
  3. +8
    -3
      themes/alps/message.html

+ 20
- 2
plugins/base/routes.go View File

@@ -66,6 +66,7 @@ func registerRoutes(p *alps.GoPlugin) {
type MailboxRenderData struct {
alps.BaseRenderData
Mailbox *MailboxStatus
Inbox *MailboxStatus
Mailboxes []MailboxInfo
Messages []IMAPMessage
PrevPage, NextPage int
@@ -96,7 +97,7 @@ func handleGetMailbox(ctx *alps.Context) error {

var mailboxes []MailboxInfo
var msgs []IMAPMessage
var mbox *MailboxStatus
var mbox, inbox *MailboxStatus
var total int
err = ctx.Session.DoIMAP(func(c *imapclient.Client) error {
var err error
@@ -114,6 +115,13 @@ func handleGetMailbox(ctx *alps.Context) error {
if mbox, err = getMailboxStatus(c, mboxName); err != nil {
return err
}
if mboxName == "INBOX" {
inbox = mbox
} else {
if inbox, err = getMailboxStatus(c, "INBOX"); err != nil {
return err
}
}
return nil
})
if err != nil {
@@ -149,6 +157,7 @@ func handleGetMailbox(ctx *alps.Context) error {
return ctx.Render(http.StatusOK, "mailbox.html", &MailboxRenderData{
BaseRenderData: *alps.NewBaseRenderData(ctx).WithTitle(title),
Mailbox: mbox,
Inbox: inbox,
Mailboxes: mailboxes,
Messages: msgs,
PrevPage: prevPage,
@@ -207,6 +216,7 @@ type MessageRenderData struct {
alps.BaseRenderData
Mailboxes []MailboxInfo
Mailbox *MailboxStatus
Inbox *MailboxStatus
Message *IMAPMessage
Part *IMAPPartNode
View interface{}
@@ -233,7 +243,7 @@ func handleGetPart(ctx *alps.Context, raw bool) error {
var mailboxes []MailboxInfo
var msg *IMAPMessage
var part *message.Entity
var mbox *MailboxStatus
var mbox, inbox *MailboxStatus
err = ctx.Session.DoIMAP(func(c *imapclient.Client) error {
var err error
if mailboxes, err = listMailboxes(c); err != nil {
@@ -245,6 +255,13 @@ func handleGetPart(ctx *alps.Context, raw bool) error {
if mbox, err = getMailboxStatus(c, mboxName); err != nil {
return err
}
if mboxName == "INBOX" {
inbox = mbox
} else {
if inbox, err = getMailboxStatus(c, "INBOX"); err != nil {
return err
}
}
return nil
})
if err != nil {
@@ -306,6 +323,7 @@ func handleGetPart(ctx *alps.Context, raw bool) error {
WithTitle(msg.Envelope.Subject),
Mailboxes: mailboxes,
Mailbox: mbox,
Inbox: inbox,
Message: msg,
Part: msg.PartByPath(partPath),
View: view,


+ 12
- 8
themes/alps/mailbox.html View File

@@ -5,18 +5,22 @@
<aside>
<!-- the logo image, dimensions 200x32 may be present or not -->
<a href="/compose" class="new">Compose&nbsp;Mail</a>
{{$current := .Mailbox}}
{{range .Mailboxes}}
<a href="{{.URL}}"
{{ if eq $current.Name .Name }}class="active"{{ end }}>
<a href="{{.URL}}" {{ if eq $.Mailbox.Name .Name }}class="active"{{ end }}>
{{ if eq .Name "INBOX" }}
Inbox
{{else}}
{{.Name}}
{{end}}
{{ if eq $current.Name .Name }}
{{ if $current.Unseen }}({{ $current.Unseen }}){{ end }}
{{ else }}
{{ .Name }}
{{ end }}

{{ $unseen := 0 }}
{{ if eq .Name "INBOX" }}
{{ $unseen = $.Inbox.Unseen }}
{{ end }}
{{ if eq .Name $.Mailbox.Name }}
{{ $unseen = $.Mailbox.Unseen }}
{{ end }}
{{ if $unseen }}({{ $unseen }}){{ end }}
</a>
{{end}}
</aside>


+ 8
- 3
themes/alps/message.html View File

@@ -32,7 +32,6 @@
<aside>
<!-- the logo image, dimensions 200x32 may be present or not -->
<a href="/compose" class="new">Compose&nbsp;Mail</a>
{{$current := .Mailbox}}
{{range .Mailboxes}}
<a href="{{.URL}}"
{{ if eq $current.Name .Name }}class="active"{{ end }}>
@@ -41,9 +40,15 @@
{{else}}
{{.Name}}
{{end}}
{{ if eq $current.Name .Name }}
{{ if $current.Unseen }}({{ $current.Unseen }}){{ end }}

{{ $unseen := 0 }}
{{ if eq .Name "INBOX" }}
{{ $unseen = $.Inbox.Unseen }}
{{ end }}
{{ if eq .Name $.Mailbox.Name }}
{{ $unseen = $.Mailbox.Unseen }}
{{ end }}
{{ if $unseen }}({{ $unseen }}){{ end }}
</a>
{{end}}
</aside>


Loading…
Cancel
Save