Monorepo for Tangled tangled.org

swap ordering of template parsing

Changed files
+35 -14
appview
pages
templates
+6 -2
appview/pages/pages.go
··· 37 37 38 38 if !strings.HasPrefix(path, "templates/layouts/") { 39 39 // Add the page template on top of the base 40 - tmpl, err := template.New(name).ParseFS(files, path, "templates/layouts/*.html") 40 + tmpl, err := template.New(name).ParseFS(files, "templates/layouts/*.html", path) 41 41 if err != nil { 42 42 return fmt.Errorf("setting up template: %w", err) 43 43 } ··· 68 68 return p.t[name].ExecuteTemplate(w, "layouts/base", params) 69 69 } 70 70 71 + func (p *Pages) executePlain(name string, w io.Writer, params any) error { 72 + return p.t[name].Execute(w, params) 73 + } 74 + 71 75 func (p *Pages) executeRepo(name string, w io.Writer, params any) error { 72 76 return p.t[name].ExecuteTemplate(w, "layouts/repoBase", params) 73 77 } 74 78 75 79 func (p *Pages) Login(w io.Writer, params LoginParams) error { 76 - return p.execute("user/login", w, params) 80 + return p.executePlain("user/login", w, params) 77 81 } 78 82 79 83 type TimelineParams struct {
+1 -1
appview/pages/templates/layouts/base.html
··· 9 9 integrity="sha384-HGfztofotfshcF7+8n44JQL2oJmowVChPTg48S+jvZoztPfvwD79OC/LTtG6dMp+" 10 10 crossorigin="anonymous" 11 11 ></script> 12 - <title>{{block "title" .}}{{end}}</title> 12 + <title>{{block "title" .}}tangled{{end}}</title> 13 13 </head> 14 14 <body> 15 15 <header class="topbar">
+1
appview/pages/templates/layouts/topbar.html
··· 2 2 3 3 {{ with .LoggedInUser }} 4 4 <nav> 5 + <a href="/">timeline</a>&nbsp;· 5 6 <a href="/settings">settings</a>&nbsp;· 6 7 <a href="/knots">knots</a>&nbsp;· 7 8 <a href="/repo/new">add repos</a>&nbsp;·
+27 -11
appview/pages/templates/user/login.html
··· 1 - {{ define "title" }}login{{end}} 1 + {{ define "user/login" }} 2 + <!doctype html> 3 + <html lang="en"> 4 + <head> 5 + <meta charset="UTF-8" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + <script 8 + src="https://unpkg.com/htmx.org@2.0.4" 9 + integrity="sha384-HGfztofotfshcF7+8n44JQL2oJmowVChPTg48S+jvZoztPfvwD79OC/LTtG6dMp+" 10 + crossorigin="anonymous" 11 + ></script> 12 + <title>login</title> 13 + </head> 14 + <body> 15 + <main class="content"> 16 + <h1>login</h1> 17 + <form method="POST" action="/login"> 18 + <label for="handle">handle</label> 19 + <input type="text" id="handle" name="handle" required /> 2 20 3 - {{define "content"}} 4 - <h1>login</h1> 5 - <form method="POST" action="/login"> 6 - <label for="handle">handle</label> 7 - <input type="text" id="handle" name="handle" required /> 21 + <label for="app_password">app password</label> 22 + <input type="password" id="app_password" name="app_password" required /> 8 23 9 - <label for="app_password">app password</label> 10 - <input type="password" id="app_password" name="app_password" required /> 24 + <button type="submit">login</button> 25 + </form> 26 + </main> 27 + </body> 28 + </html> 11 29 12 - <button type="submit">login</button> 13 - </form> 14 - {{end}} 30 + {{ end }}