From b1d0bc826f52529b12c950496be71037ee676786 Mon Sep 17 00:00:00 2001 From: Wancat Date: Fri, 4 Nov 2022 23:36:23 +0800 Subject: [PATCH] Add edit function --- route.go | 27 +++++++++++++++++++++++++++ templates/edit.html | 8 ++++++++ templates/index.html | 2 +- templates/layouts/base.html | 6 +++++- tx.go | 14 +++++++++++++- user.go | 16 ++++++++++++++-- 6 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 templates/edit.html diff --git a/route.go b/route.go index c5406e9..8a82fa2 100644 --- a/route.go +++ b/route.go @@ -1,6 +1,7 @@ package main import ( + "io/ioutil" "log" "text/template" @@ -78,5 +79,31 @@ func router() *gin.Engine { } }) + authZone.GET("/edit", func(c *gin.Context) { + user := getUser(c) + f, err := user.ReadFile(DEFAULT_JOURNAL) + if err != nil { + panic(err) + } + defer f.Close() + data, err := ioutil.ReadAll(f) + if err != nil { + panic(err) + } + HTML(c, 200, "edit.html", string(data)) + }) + + authZone.POST("/edit", func(c *gin.Context) { + user := getUser(c) + data := c.PostForm("data") + err := user.overwriteFile(data) + if err != nil { + panic(err) + } + HTML(c, 200, "success.html", struct { + Tx string + }{data}) + }) + return r } diff --git a/templates/edit.html b/templates/edit.html new file mode 100644 index 0000000..e345ea0 --- /dev/null +++ b/templates/edit.html @@ -0,0 +1,8 @@ +{{ define "title" }}編輯{{ end }} +{{ define "main" }} +

編輯帳本

+
+
+ +
+{{ end }} diff --git a/templates/index.html b/templates/index.html index 59dbb02..338f385 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,3 +1,3 @@ {{ define "main" }} -

Ledger Quick Note

+

Ledger 速記

{{ end }} diff --git a/templates/layouts/base.html b/templates/layouts/base.html index dafd2b4..fb88e5c 100644 --- a/templates/layouts/base.html +++ b/templates/layouts/base.html @@ -1,13 +1,17 @@ - {{ block "title" . }}Ledger Quick Note{{ end }} + {{ block "title" . }}Ledger 速記{{ end }} {{ block "main" .Data }} diff --git a/tx.go b/tx.go index 6e7d270..2253ded 100644 --- a/tx.go +++ b/tx.go @@ -25,7 +25,19 @@ func newTx(data TxData) (result string, err error) { } func (u *User) appendToFile(tx string) (err error) { - f, err := u.File(DEFAULT_JOURNAL) + f, err := u.AppendFile(DEFAULT_JOURNAL) + if err != nil { + return err + } + defer f.Close() + + buf := strings.NewReader(strings.ReplaceAll(tx, "\r", "")) // Remove CR generated from browser + _, err = io.Copy(f, buf) + return err +} + +func (u *User) overwriteFile(tx string) (err error) { + f, err := u.WriteFile(DEFAULT_JOURNAL) if err != nil { return err } diff --git a/user.go b/user.go index f6f5727..7e97e0f 100644 --- a/user.go +++ b/user.go @@ -23,6 +23,18 @@ func (u *User) FilePath(name string) string { return path.Join(u.Dir(), name) } -func (u *User) File(name string) (*os.File, error) { - return os.OpenFile(u.FilePath(name), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) +func (u *User) File(name string, mode int) (*os.File, error) { + return os.OpenFile(u.FilePath(name), mode, 0644) +} + +func (u *User) AppendFile(name string) (*os.File, error) { + return u.File(name, os.O_WRONLY|os.O_CREATE|os.O_APPEND) +} + +func (u *User) ReadFile(name string) (*os.File, error) { + return u.File(name, os.O_RDONLY|os.O_CREATE) +} + +func (u *User) WriteFile(name string) (*os.File, error) { + return u.File(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC) }