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)
}