From 1cf95af41ea24ab76cba8a0761d349b65c08c294 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Wed, 13 May 2020 10:58:22 -0400 Subject: Add to mailbox view This causes the mailbox to automatically reload the page every 60 seconds, without JavaScript. This also updates the base template data to include the full URL, and replaces the earlier "Path" field with a pre-split array of path components, which is more immediately useful to most templates given the limitations of string munging with text/template primitives. --- plugins/base/public/compose.html | 2 +- plugins/base/public/login.html | 2 +- plugins/base/public/mailbox.html | 2 +- plugins/base/public/message.html | 2 +- plugins/base/public/settings.html | 2 +- plugins/caldav/public/calendar.html | 2 +- plugins/caldav/public/event.html | 2 +- plugins/carddav/public/address-book.html | 2 +- plugins/carddav/public/address-object.html | 2 +- plugins/carddav/public/update-address-object.html | 2 +- renderer.go | 8 ++++++-- themes/alps/compose.html | 2 +- themes/alps/head.html | 3 +++ themes/alps/login.html | 2 +- themes/alps/mailbox.html | 4 ++-- themes/alps/message.html | 2 +- themes/alps/messages-header.html | 2 +- themes/sourcehut/address-book.html | 2 +- themes/sourcehut/address-object.html | 2 +- themes/sourcehut/calendar.html | 2 +- themes/sourcehut/compose.html | 2 +- themes/sourcehut/event.html | 2 +- themes/sourcehut/login.html | 2 +- themes/sourcehut/mailbox.html | 2 +- themes/sourcehut/message.html | 2 +- themes/sourcehut/settings.html | 2 +- 26 files changed, 34 insertions(+), 27 deletions(-) diff --git a/plugins/base/public/compose.html b/plugins/base/public/compose.html index 2deb24a..df1e360 100644 --- a/plugins/base/public/compose.html +++ b/plugins/base/public/compose.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/base/public/login.html b/plugins/base/public/login.html index 0391ed1..77f53ba 100644 --- a/plugins/base/public/login.html +++ b/plugins/base/public/login.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/base/public/mailbox.html b/plugins/base/public/mailbox.html index 1e376ba..45729d1 100644 --- a/plugins/base/public/mailbox.html +++ b/plugins/base/public/mailbox.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/base/public/message.html b/plugins/base/public/message.html index 4d5edfa..38b41c5 100644 --- a/plugins/base/public/message.html +++ b/plugins/base/public/message.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/base/public/settings.html b/plugins/base/public/settings.html index 6a7f8ba..7acacb5 100644 --- a/plugins/base/public/settings.html +++ b/plugins/base/public/settings.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/caldav/public/calendar.html b/plugins/caldav/public/calendar.html index 8a0a390..c23c555 100644 --- a/plugins/caldav/public/calendar.html +++ b/plugins/caldav/public/calendar.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/caldav/public/event.html b/plugins/caldav/public/event.html index a07f663..f3c7652 100644 --- a/plugins/caldav/public/event.html +++ b/plugins/caldav/public/event.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/carddav/public/address-book.html b/plugins/carddav/public/address-book.html index a9ab9c5..e1e735f 100644 --- a/plugins/carddav/public/address-book.html +++ b/plugins/carddav/public/address-book.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/carddav/public/address-object.html b/plugins/carddav/public/address-object.html index b6e731e..5423d9f 100644 --- a/plugins/carddav/public/address-object.html +++ b/plugins/carddav/public/address-object.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/plugins/carddav/public/update-address-object.html b/plugins/carddav/public/update-address-object.html index 4769e97..dd4d087 100644 --- a/plugins/carddav/public/update-address-object.html +++ b/plugins/carddav/public/update-address-object.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps

diff --git a/renderer.go b/renderer.go index 5471158..3379233 100644 --- a/renderer.go +++ b/renderer.go @@ -5,7 +5,9 @@ import ( "html/template" "io" "io/ioutil" + "net/url" "os" + "strings" "github.com/labstack/echo/v4" ) @@ -14,7 +16,8 @@ const themesDir = "themes" // GlobalRenderData contains data available in all templates. type GlobalRenderData struct { - Path string + Path []string + URL *url.URL LoggedIn bool @@ -71,7 +74,8 @@ func NewBaseRenderData(ctx *Context) *BaseRenderData { global.Username = ctx.Session.username } - global.Path = ctx.Request().URL.String() + global.URL = ctx.Request().URL + global.Path = strings.Split(global.URL.Path, "/")[1:] return &BaseRenderData{ GlobalData: global, diff --git a/themes/alps/compose.html b/themes/alps/compose.html index 7b58a5f..6bd516e 100644 --- a/themes/alps/compose.html +++ b/themes/alps/compose.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}} {{template "nav.html" .}} diff --git a/themes/alps/head.html b/themes/alps/head.html index a6f679f..899f7d6 100644 --- a/themes/alps/head.html +++ b/themes/alps/head.html @@ -4,6 +4,9 @@ + {{- if eq (index .GlobalData.Path 0) "mailbox"}} + + {{end -}} Webmail diff --git a/themes/alps/login.html b/themes/alps/login.html index cc21966..f599535 100644 --- a/themes/alps/login.html +++ b/themes/alps/login.html @@ -1,4 +1,4 @@ -{{template "head.html"}} +{{template "head.html" .}}

alps webmail

diff --git a/themes/alps/mailbox.html b/themes/alps/mailbox.html index 6453d69..8e3331f 100644 --- a/themes/alps/mailbox.html +++ b/themes/alps/mailbox.html @@ -1,5 +1,5 @@ -{{template "head.html"}} -{{template "nav.html" . }} +{{template "head.html" .}} +{{template "nav.html" .}}