first custom form

This commit is contained in:
Niko Abeler 2024-02-14 19:53:49 +01:00
parent b86eee27ce
commit fcc0132758
4 changed files with 26 additions and 20 deletions

View File

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

View File

@ -0,0 +1,7 @@
<label for="title">Title</label>
<input type="text" name="title" value="{{.Title}}" />
<label for="content">Content</label>
<textarea name="content" rows="16">
{{.Content}}
</textarea>

View File

@ -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
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

View File

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