diff options
Diffstat (limited to 'management/editor/editor.go')
-rw-r--r-- | management/editor/editor.go | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/management/editor/editor.go b/management/editor/editor.go index f49c4e3..c0f2e49 100644 --- a/management/editor/editor.go +++ b/management/editor/editor.go @@ -2,7 +2,9 @@ // structs so that admins can manage content package editor -import "bytes" +import ( + "bytes" +) // Editable ensures data is editable type Editable interface { @@ -31,14 +33,52 @@ func Form(post Editable, fields ...Field) ([]byte, error) { editor := post.Editor() editor.ViewBuf = &bytes.Buffer{} + editor.ViewBuf.Write([]byte(`<table><tbody class="row"><tr class="col s8"><td>`)) for _, f := range fields { addFieldToEditorView(editor, f) } + editor.ViewBuf.Write([]byte(`</td></tr>`)) + + // content items with Item embedded have some default fields we need to render + editor.ViewBuf.Write([]byte(`<tr class="col s4"><td>`)) + addPostDefaultFieldsToEditorView(post, editor) + + submit := ` +<div class="input-field"> + <input class="right waves-effect waves-light btn green" type="submit" value="Save"/> +</div> +` + editor.ViewBuf.Write([]byte(submit + `</td></tr></tbody></table>`)) + return editor.ViewBuf.Bytes(), nil } func addFieldToEditorView(e *Editor, f Field) { e.ViewBuf.Write(f.View) } + +func addPostDefaultFieldsToEditorView(p Editable, e *Editor) { + defaults := []Field{ + Field{ + View: Input("Timestamp", p, map[string]string{ + "label": "Publish Date", + "type": "date", + }), + }, + Field{ + View: Input("Slug", p, map[string]string{ + "label": "URL Slug", + "type": "text", + "disabled": "true", + "placeholder": "Will be set automatically", + }), + }, + } + + for _, f := range defaults { + addFieldToEditorView(e, f) + } + +} |