From fcc0132758d6f21c8277ef8a871e360919e750bc Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Wed, 14 Feb 2024 19:53:49 +0100 Subject: [PATCH] first custom form --- entry_types/article.go | 16 ++++++++++++++-- render/templates/forms/Article.tmpl | 7 +++++++ tmp/build-errors.log | 2 +- web/editor_handler.go | 21 ++++----------------- 4 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 render/templates/forms/Article.tmpl diff --git a/entry_types/article.go b/entry_types/article.go index d2c57ee..15a6198 100644 --- a/entry_types/article.go +++ b/entry_types/article.go @@ -4,7 +4,6 @@ import ( "fmt" "owl-blogs/domain/model" "owl-blogs/render" - "owl-blogs/web/forms" ) type Article struct { @@ -13,11 +12,24 @@ type Article struct { } type ArticleMetaData struct { - forms.DefaultForm Title string `owl:"inputType=text"` Content string `owl:"inputType=text widget=textarea"` } +// Form implements model.EntryMetaData. +func (meta *ArticleMetaData) Form(binSvc model.BinaryStorageInterface) string { + f, _ := render.RenderTemplateToString("forms/Article", meta) + return f +} + +// ParseFormData implements model.EntryMetaData. +func (*ArticleMetaData) ParseFormData(data model.HttpFormData, binSvc model.BinaryStorageInterface) (model.EntryMetaData, error) { + return &ArticleMetaData{ + Title: data.FormValue("title"), + Content: data.FormValue("content"), + }, nil +} + func (e *Article) Title() string { return e.meta.Title } diff --git a/render/templates/forms/Article.tmpl b/render/templates/forms/Article.tmpl new file mode 100644 index 0000000..65aaedd --- /dev/null +++ b/render/templates/forms/Article.tmpl @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/tmp/build-errors.log b/tmp/build-errors.log index 6c6d080..9ba0172 100644 --- a/tmp/build-errors.log +++ b/tmp/build-errors.log @@ -1 +1 @@ -exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 \ No newline at end of file +exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 \ No newline at end of file diff --git a/web/editor_handler.go b/web/editor_handler.go index 86e1be8..710ae85 100644 --- a/web/editor_handler.go +++ b/web/editor_handler.go @@ -5,7 +5,6 @@ import ( "owl-blogs/app/repository" "owl-blogs/domain/model" "owl-blogs/render" - "owl-blogs/web/forms" "time" "github.com/gofiber/fiber/v2" @@ -48,12 +47,7 @@ func (h *EditorHandler) HandleGetNew(c *fiber.Ctx) error { if err != nil { return err } - - form := forms.NewForm(entryType.MetaData(), h.binSvc) - htmlForm, err := form.HtmlForm() - if err != nil { - return err - } + htmlForm := entryType.MetaData().Form(h.binSvc) return render.RenderTemplateWithBase(c, getSiteConfig(h.configRepo), "views/editor", htmlForm) } @@ -65,9 +59,7 @@ func (h *EditorHandler) HandlePostNew(c *fiber.Ctx) error { return err } - form := forms.NewForm(entry.MetaData(), h.binSvc) - // get form data - entryMeta, err := form.Parse(c) + entryMeta, err := entry.MetaData().ParseFormData(c, h.binSvc) if err != nil { return err } @@ -100,11 +92,7 @@ func (h *EditorHandler) HandleGetEdit(c *fiber.Ctx) error { return err } - form := forms.NewForm(entry.MetaData(), h.binSvc) - htmlForm, err := form.HtmlForm() - if err != nil { - return err - } + htmlForm := entry.MetaData().Form(h.binSvc) return render.RenderTemplateWithBase(c, getSiteConfig(h.configRepo), "views/editor", htmlForm) } @@ -117,9 +105,8 @@ func (h *EditorHandler) HandlePostEdit(c *fiber.Ctx) error { return err } - form := forms.NewForm(entry.MetaData(), h.binSvc) // get form data - meta, err := form.Parse(c) + meta, err := entry.MetaData().ParseFormData(c, h.binSvc) if err != nil { return err }