diff --git a/renderer.go b/renderer.go index a6b4118..4875745 100644 --- a/renderer.go +++ b/renderer.go @@ -26,6 +26,8 @@ type GlobalRenderData struct { Title string + HavePlugin func(name string) bool + // additional plugin-specific data Extra map[string]interface{} } @@ -74,6 +76,15 @@ func NewBaseRenderData(ctx *Context) *BaseRenderData { Path: strings.Split(ctx.Request().URL.Path, "/")[1:], Title: "Webmail", URL: ctx.Request().URL, + + HavePlugin: func(name string) bool { + for _, plugin := range ctx.Server.plugins { + if plugin.Name() == name { + return true + } + } + return false + }, } if ctx.Session != nil { diff --git a/themes/alps/nav.html b/themes/alps/nav.html index 1678434..d14a862 100644 --- a/themes/alps/nav.html +++ b/themes/alps/nav.html @@ -6,18 +6,22 @@ class="active" {{ end }} >Email + {{ if call .GlobalData.HavePlugin "caldav" }} Calendar + {{ end }} + {{ if call .GlobalData.HavePlugin "carddav" }} Contacts + {{ end }}