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() {
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_INIT, "i", "", "ledger initiation file")
flag.StringVar(&WORKING_DIR, "w", "", "ledger working directory")
@@ -43,8 +42,9 @@ func init() {
func main() {
r := gin.Default()
r.HTMLRender = loadTemplates("templates")
r.GET("/", func(c *gin.Context) {
htmlTpl.ExecuteTemplate(c.Writer, "index.html", struct {
c.HTML(200, "index.html", struct {
Templates []*template.Template
Scripts map[string][]string
}{
@@ -65,11 +65,9 @@ func main() {
log.Println(err, c.Request.Form)
return
}
if err := htmlTpl.ExecuteTemplate(c.Writer, "new.html", struct {
c.HTML(200, "new.html", struct {
Tx string
}{tx}); err != nil {
c.AbortWithError(500, err)
}
}{tx})
})
r.POST("/submit", func(c *gin.Context) {
@@ -79,11 +77,9 @@ func main() {
return
}
if err := htmlTpl.ExecuteTemplate(c.Writer, "success.html", struct {
c.HTML(200, "success.html", struct {
Tx string
}{tx}); err != nil {
c.AbortWithError(500, err)
}
}{tx})
})
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,12 +1,6 @@
<!DOCTYPE html>
<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>
<form action="/new" method="POST">
{{ define "main" }}
<h1>Ledger Quick Note</h1>
<form action="/new" method="POST">
<label>Action:
{{ range .Templates }}
<input type="radio" name="action" value="{{ .Name }}">{{ .Name }}</option>
@@ -16,12 +10,11 @@
<label>Account: <input name="account" type="text"></label></br>
<label>Tx Name: <input name="name" type="text"></label></br>
<input type="submit">
</form>
<h2>Scripts</h2>
<ul>
</form>
<h2>Scripts</h2>
<ul>
{{ range $k, $v := .Scripts }}
<li><a href="/exec?name={{ $k }}">{{ $k }}</a></li>
{{ end }}
</ul>
</body>
</html>
</ul>
{{ end }}

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>
<html>
<head>
<title>Ledger Quick Note</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Confirm new Tx</h1>
<form action="/submit" method="POST">
{{ define "title" }}Confirm{{ end }}
{{ define "main" }}
<h1>Confirm new Tx</h1>
<form action="/submit" method="POST">
<textarea name="tx" rows="15" cols="40">{{ .Tx }}</textarea><br>
<input type="submit">
</form>
</body>
</html>
</form>
{{ end }}

View File

@@ -1,13 +1,6 @@
<!DOCTYPE html>
<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>
<p><strong>Success</strong></p>
<pre><code>{{ .Tx }}</code></pre>
<p><a href="/">Back to home</a></p>
</body>
</html>
{{ define "title" }}Success{{ end }}
{{ define "main" }}
<p><strong>Success</strong></p>
<pre><code>{{ .Tx }}</code></pre>
<p><a href="/">Back to home</a></p>
{{ end }}