diff --git a/cmd/owl/main.go b/cmd/owl/main.go index 28519d0..4047ea0 100644 --- a/cmd/owl/main.go +++ b/cmd/owl/main.go @@ -32,6 +32,9 @@ func App(db infra.Database) *web.WebApp { registry := app.NewEntryTypeRegistry() registry.Register(&model.Image{}) registry.Register(&model.Article{}) + registry.Register(&model.Page{}) + registry.Register(&model.Recipe{}) + registry.Register(&model.Note{}) entryRepo := infra.NewEntryRepository(db, registry) binRepo := infra.NewBinaryFileRepo(db) diff --git a/domain/model/note.go b/domain/model/note.go new file mode 100644 index 0000000..f2ed50b --- /dev/null +++ b/domain/model/note.go @@ -0,0 +1,26 @@ +package model + +type Note struct { + EntryBase + meta NoteMetaData +} + +type NoteMetaData struct { + Content string `owl:"inputType=text widget=textarea"` +} + +func (e *Note) Title() string { + return "" +} + +func (e *Note) Content() EntryContent { + return EntryContent(e.meta.Content) +} + +func (e *Note) MetaData() interface{} { + return &e.meta +} + +func (e *Note) SetMetaData(metaData interface{}) { + e.meta = *metaData.(*NoteMetaData) +} diff --git a/domain/model/page.go b/domain/model/page.go new file mode 100644 index 0000000..385d864 --- /dev/null +++ b/domain/model/page.go @@ -0,0 +1,36 @@ +package model + +import ( + "fmt" + "owl-blogs/render" +) + +type Page struct { + EntryBase + meta PageMetaData +} + +type PageMetaData struct { + Title string `owl:"inputType=text"` + Content string `owl:"inputType=text widget=textarea"` +} + +func (e *Page) Title() string { + return e.meta.Title +} + +func (e *Page) Content() EntryContent { + str, err := render.RenderTemplateToString("entry/Page", e) + if err != nil { + fmt.Println(err) + } + return EntryContent(str) +} + +func (e *Page) MetaData() interface{} { + return &e.meta +} + +func (e *Page) SetMetaData(metaData interface{}) { + e.meta = *metaData.(*PageMetaData) +} diff --git a/domain/model/recipe.go b/domain/model/recipe.go new file mode 100644 index 0000000..ff83edb --- /dev/null +++ b/domain/model/recipe.go @@ -0,0 +1,39 @@ +package model + +import ( + "fmt" + "owl-blogs/render" +) + +type Recipe struct { + EntryBase + meta RecipeMetaData +} + +type RecipeMetaData struct { + Title string `owl:"inputType=text"` + Yield string `owl:"inputType=text"` + Duration string `owl:"inputType=text"` + Ingredients []string `owl:"inputType=text widget=textarea"` + Content string `owl:"inputType=text widget=textarea"` +} + +func (e *Recipe) Title() string { + return e.meta.Title +} + +func (e *Recipe) Content() EntryContent { + str, err := render.RenderTemplateToString("entry/Recipe", e) + if err != nil { + fmt.Println(err) + } + return EntryContent(str) +} + +func (e *Recipe) MetaData() interface{} { + return &e.meta +} + +func (e *Recipe) SetMetaData(metaData interface{}) { + e.meta = *metaData.(*RecipeMetaData) +} diff --git a/render/templates/entry/Page.tmpl b/render/templates/entry/Page.tmpl new file mode 100644 index 0000000..bac8848 --- /dev/null +++ b/render/templates/entry/Page.tmpl @@ -0,0 +1 @@ +{{.MetaData.Content}}