Migrate to layout

This commit is contained in:
Wancat
2022-10-20 11:20:24 +08:00
parent ab43f732fe
commit 526a1c4faa
6 changed files with 79 additions and 64 deletions

16
main.go
View File

@@ -33,7 +33,6 @@ type TxData struct {
func init() { func init() {
ledgerTpl = template.Must(template.ParseGlob("tx/*")) ledgerTpl = template.Must(template.ParseGlob("tx/*"))
htmlTpl = template.Must(template.ParseGlob("templates/*.html"))
flag.StringVar(&LEDGER_FILE, "f", "example.txt", "ledger journal file to write") flag.StringVar(&LEDGER_FILE, "f", "example.txt", "ledger journal file to write")
flag.StringVar(&LEDGER_INIT, "i", "", "ledger initiation file") flag.StringVar(&LEDGER_INIT, "i", "", "ledger initiation file")
flag.StringVar(&WORKING_DIR, "w", "", "ledger working directory") flag.StringVar(&WORKING_DIR, "w", "", "ledger working directory")
@@ -43,8 +42,9 @@ func init() {
func main() { func main() {
r := gin.Default() r := gin.Default()
r.HTMLRender = loadTemplates("templates")
r.GET("/", func(c *gin.Context) { r.GET("/", func(c *gin.Context) {
htmlTpl.ExecuteTemplate(c.Writer, "index.html", struct { c.HTML(200, "index.html", struct {
Templates []*template.Template Templates []*template.Template
Scripts map[string][]string Scripts map[string][]string
}{ }{
@@ -65,11 +65,9 @@ func main() {
log.Println(err, c.Request.Form) log.Println(err, c.Request.Form)
return return
} }
if err := htmlTpl.ExecuteTemplate(c.Writer, "new.html", struct { c.HTML(200, "new.html", struct {
Tx string Tx string
}{tx}); err != nil { }{tx})
c.AbortWithError(500, err)
}
}) })
r.POST("/submit", func(c *gin.Context) { r.POST("/submit", func(c *gin.Context) {
@@ -79,11 +77,9 @@ func main() {
return return
} }
if err := htmlTpl.ExecuteTemplate(c.Writer, "success.html", struct { c.HTML(200, "success.html", struct {
Tx string Tx string
}{tx}); err != nil { }{tx})
c.AbortWithError(500, err)
}
}) })
r.GET("/exec", func(c *gin.Context) { r.GET("/exec", func(c *gin.Context) {

27
template.go Normal file
View File

@@ -0,0 +1,27 @@
package main
import (
"path"
"path/filepath"
"github.com/gin-contrib/multitemplate"
)
func loadTemplates(templatesDir string) multitemplate.Renderer {
r := multitemplate.NewRenderer()
layouts, err := filepath.Glob(path.Join(templatesDir, "layouts", "*.html"))
if err != nil {
panic(err)
}
includes, err := filepath.Glob(path.Join(templatesDir, "*.html"))
if err != nil {
panic(err)
}
for _, include := range includes {
r.AddFromFiles(filepath.Base(include), append(layouts, include)...)
}
return r
}

View File

@@ -1,10 +1,4 @@
<!DOCTYPE html> {{ define "main" }}
<html>
<head>
<title>Ledger Quick Note</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Ledger Quick Note</h1> <h1>Ledger Quick Note</h1>
<form action="/new" method="POST"> <form action="/new" method="POST">
<label>Action: <label>Action:
@@ -23,5 +17,4 @@
<li><a href="/exec?name={{ $k }}">{{ $k }}</a></li> <li><a href="/exec?name={{ $k }}">{{ $k }}</a></li>
{{ end }} {{ end }}
</ul> </ul>
</body> {{ end }}
</html>

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<title>{{ block "title" . }}Ledger Quick Note{{ end }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
{{ block "main" . }}
{{ end }}
</body>
</html>

View File

@@ -1,14 +1,8 @@
<!DOCTYPE html> {{ define "title" }}Confirm{{ end }}
<html> {{ define "main" }}
<head>
<title>Ledger Quick Note</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Confirm new Tx</h1> <h1>Confirm new Tx</h1>
<form action="/submit" method="POST"> <form action="/submit" method="POST">
<textarea name="tx" rows="15" cols="40">{{ .Tx }}</textarea><br> <textarea name="tx" rows="15" cols="40">{{ .Tx }}</textarea><br>
<input type="submit"> <input type="submit">
</form> </form>
</body> {{ end }}
</html>

View File

@@ -1,13 +1,6 @@
<!DOCTYPE html> {{ define "title" }}Success{{ end }}
<html> {{ define "main" }}
<head>
<title>Ledger Quick Note</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Ledger Quick Note</h1>
<p><strong>Success</strong></p> <p><strong>Success</strong></p>
<pre><code>{{ .Tx }}</code></pre> <pre><code>{{ .Tx }}</code></pre>
<p><a href="/">Back to home</a></p> <p><a href="/">Back to home</a></p>
</body> {{ end }}
</html>