github.com/jamiefdhurst/journal@v0.9.2/internal/app/controller/web/edit.go (about) 1 package web 2 3 import ( 4 "net/http" 5 "text/template" 6 7 "github.com/jamiefdhurst/journal/internal/app" 8 "github.com/jamiefdhurst/journal/internal/app/model" 9 "github.com/jamiefdhurst/journal/pkg/controller" 10 ) 11 12 // Edit Handle updating an existing entry 13 type Edit struct { 14 controller.Super 15 Error bool 16 Journal model.Journal 17 } 18 19 // Run Edit action 20 func (c *Edit) Run(response http.ResponseWriter, request *http.Request) { 21 container := c.Super.Container.(*app.Container) 22 if !container.Configuration.EnableEdit { 23 RunBadRequest(response, request, c.Super.Container) 24 return 25 } 26 27 js := model.Journals{Container: c.Super.Container.(*app.Container), Gs: model.GiphyAdapter(c.Super.Container.(*app.Container))} 28 c.Journal = js.FindBySlug(c.Params[1]) 29 30 if c.Journal.ID == 0 { 31 RunBadRequest(response, request, c.Super.Container) 32 return 33 } 34 35 if request.Method == "GET" { 36 c.Error = false 37 flash := c.Session.GetFlash() 38 if flash != nil && flash[0] == "error" { 39 c.Error = true 40 } 41 42 c.SessionStore.Save(response) 43 template, _ := template.ParseFiles( 44 "./web/templates/_layout/default.html.tmpl", 45 "./web/templates/edit.html.tmpl", 46 "./web/templates/_partial/form.html.tmpl") 47 template.ExecuteTemplate(response, "layout", c) 48 } else { 49 if request.FormValue("title") == "" || request.FormValue("date") == "" || request.FormValue("content") == "" { 50 c.Session.AddFlash("error") 51 c.SessionStore.Save(response) 52 http.Redirect(response, request, "/"+c.Journal.Slug+"/edit", http.StatusFound) 53 return 54 } 55 56 c.Journal.Title = request.FormValue("title") 57 c.Journal.Date = request.FormValue("date") 58 c.Journal.Content = request.FormValue("content") 59 js.Save(c.Journal) 60 61 c.Session.AddFlash("saved") 62 c.SessionStore.Save(response) 63 http.Redirect(response, request, "/", http.StatusFound) 64 } 65 66 }