diff options
Diffstat (limited to 'cmd/server/edit.go')
| -rw-r--r-- | cmd/server/edit.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/cmd/server/edit.go b/cmd/server/edit.go index 730e6e9..eb0c4cc 100644 --- a/cmd/server/edit.go +++ b/cmd/server/edit.go @@ -8,6 +8,7 @@ import ( "net/http" "os" "path/filepath" + "strings" "riedstra.dev/mitch/go-website/page" ) @@ -17,6 +18,7 @@ func (a *App) EditPage(w http.ResponseWriter, r *http.Request) { page.Render(w, r, page.TemplateDirectory+"/4xx", map[string]interface{}{ "Title": "Method Not allowed", "Description": "Method not allowed", + "LoggedIn": a.IsLoggedIn(r), }, http.StatusMethodNotAllowed) return @@ -27,12 +29,18 @@ func (a *App) EditPage(w http.ResponseWriter, r *http.Request) { p = filepath.Clean(p) fh, err := os.Open("./" + p + page.Suffix) + if err != nil && strings.Contains(err.Error(), "no such file or directory") { + fh, err = os.Open("./" + page.TemplateDirectory + + "/new-template" + page.Suffix) + } + if err != nil { log.Printf("opening page: %s", err) a.Err500Default(w, r) return } + defer fh.Close() b, err := io.ReadAll(fh) if err != nil { @@ -43,8 +51,9 @@ func (a *App) EditPage(w http.ResponseWriter, r *http.Request) { } page.Render(w, r, page.TemplateDirectory+"/edit", map[string]interface{}{ - "Page": p, - "Content": html.EscapeString(string(b)), + "Page": p, + "Content": html.EscapeString(string(b)), + "LoggedIn": a.IsLoggedIn(r), }, http.StatusOK) } @@ -70,6 +79,7 @@ func (a *App) SaveEditPage(w http.ResponseWriter, r *http.Request) { return } + defer fh.Close() c := bytes.ReplaceAll([]byte(content), []byte{'\r'}, []byte{}) |
