Documentation ¶
Overview ¶
Package item provides the default functionality to Ponzu's content/data types, how they interact with the API, and how to override or enhance their abilities using various interfaces.
Index ¶
- Variables
- func FmtBytes(size float64) string
- func FmtTime(t int64) string
- func NormalizeString(s string) (string, error)
- func Slug(i Identifiable) (string, error)
- type FileUpload
- type Hideable
- type Hookable
- type Identifiable
- type Item
- func (i Item) AfterAPICreate(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterAPIDelete(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterAPIUpdate(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterAdminCreate(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterAdminDelete(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterAdminUpdate(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterApprove(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterDelete(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterDisable(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterEnable(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterReject(res http.ResponseWriter, req *http.Request) error
- func (i Item) AfterSave(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeAPICreate(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeAPIDelete(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeAPIUpdate(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeAdminCreate(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeAdminDelete(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeAdminUpdate(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeApprove(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeDelete(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeDisable(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeEnable(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeReject(res http.ResponseWriter, req *http.Request) error
- func (i Item) BeforeSave(res http.ResponseWriter, req *http.Request) error
- func (i Item) IndexContent() bool
- func (i Item) ItemID() int
- func (i *Item) ItemSlug() string
- func (i Item) SearchMapping() (*mapping.IndexMappingImpl, error)
- func (i *Item) SetItemID(id int)
- func (i *Item) SetSlug(slug string)
- func (i Item) String() string
- func (i Item) Time() int64
- func (i Item) Touch() int64
- func (i Item) UniqueID() uuid.UUID
- type Omittable
- type Pushable
- type Sluggable
- type Sortable
Constants ¶
This section is empty.
Variables ¶
var ( // ErrTypeNotRegistered means content type isn't registered (not found in Types map) ErrTypeNotRegistered = errors.New(typeNotRegistered) // ErrAllowHiddenItem should be used as an error to tell a caller of Hideable#Hide // that this type is hidden, but should be shown in a particular case, i.e. // if requested by a valid admin or user ErrAllowHiddenItem = errors.New(`Allow hidden item`) // Types is a map used to reference a type name to its actual Editable type // mainly for lookups in /admin route based utilities Types map[string]func() interface{} )
Functions ¶
func FmtBytes ¶
FmtBytes converts the numeric byte size value to the appropriate magnitude size in KB, MB, GB, TB, PB, or EB.
func NormalizeString ¶
NormalizeString removes and replaces illegal characters for URLs and other path entities. Useful for taking user input and converting it for keys or URLs.
func Slug ¶
func Slug(i Identifiable) (string, error)
Slug returns a URL friendly string from the title of a post item
Types ¶
type FileUpload ¶
type FileUpload struct { Item Name string `json:"name"` Path string `json:"path"` ContentLength int64 `json:"content_length"` ContentType string `json:"content_type"` }
FileUpload represents the file uploaded to the system
func (*FileUpload) MarshalEditor ¶
func (f *FileUpload) MarshalEditor() ([]byte, error)
MarshalEditor writes a buffer of html to edit a Post and partially implements editor.Editable
func (*FileUpload) Push ¶
func (f *FileUpload) Push() []string
func (*FileUpload) String ¶
func (f *FileUpload) String() string
String partially implements item.Identifiable and overrides Item's String()
type Hideable ¶
type Hideable interface {
Hide(http.ResponseWriter, *http.Request) error
}
Hideable lets a user keep items hidden
type Hookable ¶
type Hookable interface { BeforeAPICreate(http.ResponseWriter, *http.Request) error AfterAPICreate(http.ResponseWriter, *http.Request) error BeforeAPIUpdate(http.ResponseWriter, *http.Request) error AfterAPIUpdate(http.ResponseWriter, *http.Request) error BeforeAPIDelete(http.ResponseWriter, *http.Request) error AfterAPIDelete(http.ResponseWriter, *http.Request) error BeforeAdminCreate(http.ResponseWriter, *http.Request) error AfterAdminCreate(http.ResponseWriter, *http.Request) error BeforeAdminUpdate(http.ResponseWriter, *http.Request) error AfterAdminUpdate(http.ResponseWriter, *http.Request) error BeforeAdminDelete(http.ResponseWriter, *http.Request) error AfterAdminDelete(http.ResponseWriter, *http.Request) error BeforeSave(http.ResponseWriter, *http.Request) error AfterSave(http.ResponseWriter, *http.Request) error BeforeDelete(http.ResponseWriter, *http.Request) error AfterDelete(http.ResponseWriter, *http.Request) error BeforeApprove(http.ResponseWriter, *http.Request) error AfterApprove(http.ResponseWriter, *http.Request) error BeforeReject(http.ResponseWriter, *http.Request) error AfterReject(http.ResponseWriter, *http.Request) error // Enable/Disable used for addons BeforeEnable(http.ResponseWriter, *http.Request) error AfterEnable(http.ResponseWriter, *http.Request) error BeforeDisable(http.ResponseWriter, *http.Request) error AfterDisable(http.ResponseWriter, *http.Request) error }
Hookable provides our user with an easy way to intercept or add functionality to the different lifecycles/events a struct may encounter. Item implements Hookable with no-ops so our user can override only whichever ones necessary.
type Identifiable ¶
Identifiable enables a struct to have its ID set/get. Typically this is done to set an ID to -1 indicating it is new for DB inserts, since by default a newly initialized struct would have an ID of 0, the int zero-value, and BoltDB's starting key per bucket is 0, thus overwriting the first record.
type Item ¶
type Item struct { UUID uuid.UUID `json:"uuid"` ID int `json:"id"` Slug string `json:"slug"` Timestamp int64 `json:"timestamp"` Updated int64 `json:"updated"` }
Item should only be embedded into content type structs.
func (Item) AfterAPICreate ¶
AfterAPICreate is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterAPIDelete ¶
AfterAPIDelete is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterAPIUpdate ¶
AfterAPIUpdate is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterAdminCreate ¶
AfterAdminCreate is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterAdminDelete ¶
AfterAdminDelete is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterAdminUpdate ¶
AfterAdminUpdate is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterApprove ¶
AfterApprove is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterDelete ¶
AfterDelete is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterDisable ¶
AfterDisable is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterEnable ¶
AfterEnable is a no-op to ensure structs which embed Item implement Hookable
func (Item) AfterReject ¶
AfterReject is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeAPICreate ¶
BeforeAPICreate is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeAPIDelete ¶
BeforeAPIDelete is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeAPIUpdate ¶
BeforeAPIUpdate is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeAdminCreate ¶
BeforeAdminCreate is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeAdminDelete ¶
BeforeAdminDelete is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeAdminUpdate ¶
BeforeAdminUpdate is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeApprove ¶
BeforeApprove is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeDelete ¶
BeforeDelete is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeDisable ¶
BeforeDisable is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeEnable ¶
BeforeEnable is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeReject ¶
BeforeReject is a no-op to ensure structs which embed Item implement Hookable
func (Item) BeforeSave ¶
BeforeSave is a no-op to ensure structs which embed Item implement Hookable
func (Item) IndexContent ¶
IndexContent determines if a type should be indexed for searching partially implements search.Searchable
func (Item) ItemID ¶
ItemID gets the Item's ID field partially implements the Identifiable interface
func (Item) SearchMapping ¶
func (i Item) SearchMapping() (*mapping.IndexMappingImpl, error)
SearchMapping returns a default implementation of a Bleve IndexMappingImpl partially implements search.Searchable
func (*Item) SetItemID ¶
SetItemID sets the Item's ID field partially implements the Identifiable interface
type Omittable ¶
Omittable lets a user define certin fields within a content struct to remove from an API response. Helpful when you want data in the CMS, but not entirely shown or available from the content API. All items in the slice should be the json tag names of the struct fields to which they correspond.
type Pushable ¶
type Pushable interface { // the values contained by fields returned by Push must strictly be URL paths Push(http.ResponseWriter, *http.Request) ([]string, error) }
Pushable lets a user define which values of certain struct fields are 'pushed' down to a client via HTTP/2 Server Push. All items in the slice should be the json tag names of the struct fields to which they correspond.