From b766eefe7cfaf334aeb607171250a2b4b9eaabf0 Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Tue, 24 Jan 2023 13:12:46 +0100 Subject: [PATCH] Add gemini CTA to HTTP pages --- src/http/tpl.go | 19 +++++++++++++++---- src/http/tpl/follow.html | 2 ++ src/http/tpl/gemini-cta.html | 12 ++++++++++++ src/http/tpl/index.html | 2 ++ src/http/tpl/post.html | 2 ++ src/http/tpl/posts.html | 2 ++ 6 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/http/tpl/gemini-cta.html diff --git a/src/http/tpl.go b/src/http/tpl.go index 4af715a..0f6b531 100644 --- a/src/http/tpl.go +++ b/src/http/tpl.go @@ -99,6 +99,9 @@ func (a *api) tplFuncs() template.FuncMap { "DateTimeFormat": func(t time.Time) string { return t.Format("2006-01-02") }, + "SafeURL": func(u string) template.URL { + return template.URL(u) + }, } } @@ -123,6 +126,7 @@ func (a *api) mustParseTpl(name string) *template.Template { func (a *api) mustParseBasedTpl(name string) *template.Template { tpl := a.mustParseTpl(name) + tpl = template.Must(tpl.New("gemini-cta.html").Parse(mustReadTplFile("gemini-cta.html"))) tpl = template.Must(tpl.New("base.html").Parse(mustReadTplFile("base.html"))) return tpl } @@ -131,15 +135,19 @@ type tplData struct { Payload interface{} } +func newTPLData(r *http.Request, payload interface{}) tplData { + return tplData{ + Payload: payload, + } +} + // executeTemplate expects to be the final action in an http.Handler func executeTemplate( rw http.ResponseWriter, r *http.Request, tpl *template.Template, payload interface{}, ) { - tplData := tplData{ - Payload: payload, - } + tplData := newTPLData(r, payload) if err := tpl.Execute(rw, tplData); err != nil { apiutil.InternalServerError( @@ -164,7 +172,10 @@ func (a *api) renderDumbTplHandler(tplName string) http.Handler { tpl := a.mustParseBasedTpl(tplName) return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { - if err := tpl.Execute(rw, nil); err != nil { + + tplData := newTPLData(r, nil) + + if err := tpl.Execute(rw, tplData); err != nil { apiutil.InternalServerError( rw, r, fmt.Errorf("rendering %q: %w", tplName, err), ) diff --git a/src/http/tpl/follow.html b/src/http/tpl/follow.html index 132706b..88fee46 100644 --- a/src/http/tpl/follow.html +++ b/src/http/tpl/follow.html @@ -145,6 +145,8 @@ emailSubscribe.onclick = async () => { +{{ template "gemini-cta.html" . }} + {{ end }} {{ template "base.html" . }} diff --git a/src/http/tpl/gemini-cta.html b/src/http/tpl/gemini-cta.html new file mode 100644 index 0000000..06e3a22 --- /dev/null +++ b/src/http/tpl/gemini-cta.html @@ -0,0 +1,12 @@ +
+ +

+ This site can also be accessed via the gemini protocol: + + {{ BlogGeminiURL "/" }} + +

+

+ What is gemini? +

+ diff --git a/src/http/tpl/index.html b/src/http/tpl/index.html index fdaf43f..0e5b58e 100644 --- a/src/http/tpl/index.html +++ b/src/http/tpl/index.html @@ -50,6 +50,8 @@
  • Radio alHara is another great internet radio station.
  • + {{ template "gemini-cta.html" . }} + {{ end }} {{ template "base.html" . }} diff --git a/src/http/tpl/post.html b/src/http/tpl/post.html index efef203..db69302 100644 --- a/src/http/tpl/post.html +++ b/src/http/tpl/post.html @@ -38,6 +38,8 @@

    {{ end }} +{{ template "gemini-cta.html" . }} + {{ end }} {{ template "base.html" . }} diff --git a/src/http/tpl/posts.html b/src/http/tpl/posts.html index e6d226b..0701459 100644 --- a/src/http/tpl/posts.html +++ b/src/http/tpl/posts.html @@ -30,6 +30,8 @@

    {{ end }} + {{ template "gemini-cta.html" . }} + {{ end }} {{ template "base.html" . }}