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  }