ponzu: github.com/ponzu-cms/ponzu/management/editor Index | Files

package editor

import "github.com/ponzu-cms/ponzu/management/editor"

Package editor enables users to create edit views from their content structs so that admins can manage content

Index

Package Files

dom.go editor.go elements.go repeaters.go values.go

func Checkbox Uses

func Checkbox(fieldName string, p interface{}, attrs, options map[string]string) []byte

Checkbox returns the []byte of a set of <input type="checkbox"> HTML elements wrapped in a <div> with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func DOMElement Uses

func DOMElement(e *Element) []byte

DOMElement creates a DOM element

func DOMElementCheckbox Uses

func DOMElementCheckbox(e *Element) []byte

DOMElementCheckbox is a special DOM element which is parsed as a checkbox input tag and thus needs to be created differently

func DOMElementSelfClose Uses

func DOMElementSelfClose(e *Element) []byte

DOMElementSelfClose is a special DOM element which is parsed as a self-closing tag and thus needs to be created differently

func DOMElementWithChildrenCheckbox Uses

func DOMElementWithChildrenCheckbox(e *Element, children []*Element) []byte

func DOMElementWithChildrenSelect Uses

func DOMElementWithChildrenSelect(e *Element, children []*Element) []byte

func File Uses

func File(fieldName string, p interface{}, attrs map[string]string) []byte

File returns the []byte of a <input type="file"> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func FileRepeater Uses

func FileRepeater(fieldName string, p interface{}, attrs map[string]string) []byte

FileRepeater returns the []byte of a <input type="file"> HTML element with a label. It also includes repeat controllers (+ / -) so the element can be dynamically multiplied or reduced. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Form Uses

func Form(post Editable, fields ...Field) ([]byte, error)

Form takes editable content and any number of Field funcs to describe the edit page for any content struct added by a user

func Input Uses

func Input(fieldName string, p interface{}, attrs map[string]string) []byte

Input returns the []byte of an <input> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

type Person struct {
	item.Item
	editor editor.Editor

	Name string `json:"name"`
	//...
}

func (p *Person) MarshalEditor() ([]byte, error) {
	view, err := editor.Form(p,
		editor.Field{
			View: editor.Input("Name", p, map[string]string{
				"label":       "Name",
				"type":        "text",
				"placeholder": "Enter the Name here",
			}),
		}
	)
}

func InputRepeater Uses

func InputRepeater(fieldName string, p interface{}, attrs map[string]string) []byte

InputRepeater returns the []byte of an <input> HTML element with a label. It also includes repeat controllers (+ / -) so the element can be dynamically multiplied or reduced. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

type Person struct {
	item.Item
	editor editor.Editor

	Names []string `json:"names"`
	//...
}

func (p *Person) MarshalEditor() ([]byte, error) {
	view, err := editor.Form(p,
		editor.Field{
			View: editor.InputRepeater("Names", p, map[string]string{
				"label":       "Names",
				"type":        "text",
				"placeholder": "Enter a Name here",
			}),
		}
	)
}

func RepeatController Uses

func RepeatController(fieldName string, p interface{}, inputSelector, cloneSelector string) []byte

RepeatController generates the javascript to control any repeatable form element in an editor based on its type, field name and HTML tag name

func Richtext Uses

func Richtext(fieldName string, p interface{}, attrs map[string]string) []byte

Richtext returns the []byte of a rich text editor (provided by http://summernote.org/) with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Select Uses

func Select(fieldName string, p interface{}, attrs, options map[string]string) []byte

Select returns the []byte of a <select> HTML element plus internal <options> with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func SelectRepeater Uses

func SelectRepeater(fieldName string, p interface{}, attrs, options map[string]string) []byte

SelectRepeater returns the []byte of a <select> HTML element plus internal <options> with a label. It also includes repeat controllers (+ / -) so the element can be dynamically multiplied or reduced. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func TagNameFromStructField Uses

func TagNameFromStructField(name string, post interface{}) string

TagNameFromStructField does a lookup on the `json` struct tag for a given field of a struct

func TagNameFromStructFieldMulti Uses

func TagNameFromStructFieldMulti(name string, i int, post interface{}) string

TagNameFromStructFieldMulti calls TagNameFromStructField and formats is for use with gorilla/schema due to the format in which gorilla/schema expects form names to be when one is associated with multiple values, we need to output the name as such. Ex. 'category.0', 'category.1', 'category.2' and so on.

func Tags Uses

func Tags(fieldName string, p interface{}, attrs map[string]string) []byte

Tags returns the []byte of a tag input (in the style of Materialze 'Chips') with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Textarea Uses

func Textarea(fieldName string, p interface{}, attrs map[string]string) []byte

Textarea returns the []byte of a <textarea> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func Timestamp Uses

func Timestamp(fieldName string, p interface{}, attrs map[string]string) []byte

Timestamp returns the []byte of an <input> HTML element with a label. IMPORTANT: The `fieldName` argument will cause a panic if it is not exactly the string form of the struct field that this editor input is representing

func ValueFromStructField Uses

func ValueFromStructField(name string, post interface{}) string

ValueFromStructField returns the string value of a field in a struct

type Editable Uses

type Editable interface {
    MarshalEditor() ([]byte, error)
}

Editable ensures data is editable

type Editor Uses

type Editor struct {
    ViewBuf *bytes.Buffer
}

Editor is a view containing fields to manage content

type Element Uses

type Element struct {
    TagName string
    Attrs   map[string]string
    Name    string
    Label   string
    Data    string
    ViewBuf *bytes.Buffer
}

Element is a basic struct for representing DOM elements

func NewElement Uses

func NewElement(tagName, label, fieldName string, p interface{}, attrs map[string]string) *Element

NewElement returns an Element with Name and Data already processed from the fieldName and content interface provided

type Field Uses

type Field struct {
    View []byte
}

Field is used to create the editable view for a field within a particular content struct

type Mergeable Uses

type Mergeable interface {
    // Approve copies an external post to the internal collection and triggers
    // a re-sort of its content type posts
    Approve(http.ResponseWriter, *http.Request) error
}

Mergeable allows external post content to be approved and published through the public-facing API

Package editor imports 7 packages (graph) and is imported by 11 packages. Updated 2018-08-25. Refresh now. Tools for package owners.