blob: f49c4e3b00356ffabd87e7fc8fdd82b9e15b62dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// Package editor enables users to create edit views from their content
// structs so that admins can manage content
package editor
import "bytes"
// Editable ensures data is editable
type Editable interface {
SetContentID(id int)
ContentID() int
ContentName() string
SetSlug(slug string)
Editor() *Editor
MarshalEditor() ([]byte, error)
}
// Editor is a view containing fields to manage content
type Editor struct {
ViewBuf *bytes.Buffer
}
// Field is used to create the editable view for a field
// within a particular content struct
type Field struct {
View []byte
}
// Form takes editable content and any number of Field funcs to describe the edit
// page for any content struct added by a user
func Form(post Editable, fields ...Field) ([]byte, error) {
editor := post.Editor()
editor.ViewBuf = &bytes.Buffer{}
for _, f := range fields {
addFieldToEditorView(editor, f)
}
return editor.ViewBuf.Bytes(), nil
}
func addFieldToEditorView(e *Editor, f Field) {
e.ViewBuf.Write(f.View)
}
|