summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
Diffstat (limited to 'content')
-rw-r--r--content/item.go25
-rw-r--r--content/post.go15
2 files changed, 27 insertions, 13 deletions
diff --git a/content/item.go b/content/item.go
index f4a5489..0077dc6 100644
--- a/content/item.go
+++ b/content/item.go
@@ -18,7 +18,28 @@ func (i Item) Touch() int64 {
return i.Updated
}
-// ContentID partially implements the Sortable interface
-func (i Item) ContentID() int {
+// ItemID partially implements the Sortable interface
+func (i Item) ItemID() int {
return i.ID
}
+
+// SetSlug sets the item's slug for its URL
+func (i *Item) SetSlug(slug string) {
+ i.Slug = slug
+}
+
+// Sluggable makes a struct locatable by URL with it's own path
+// As an Item implementing Sluggable, slugs may overlap. If this is an issue,
+// make your content struct (or one which imbeds Item) implement Sluggable
+// and it will override the slug created by Item's SetSlug with your struct's
+type Sluggable interface {
+ SetSlug(string)
+}
+
+// Identifiable enables a struct to have its ID set. 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 Identifiable interface {
+ SetContentID(int)
+}
diff --git a/content/post.go b/content/post.go
index dcdfeff..b81bb5a 100644
--- a/content/post.go
+++ b/content/post.go
@@ -74,17 +74,10 @@ func init() {
Types["Post"] = func() interface{} { return new(Post) }
}
-// SetContentID partially implements editor.Editable
-func (p *Post) SetContentID(id int) { p.ID = id }
-
-// ContentID partially implements editor.Editable
-func (p *Post) ContentID() int { return p.ID }
-
-// ContentName partially implements editor.Editable
+// ContentName is required to set the display name for a piece of content in the editor
+// Partially implements editor.Editable
func (p *Post) ContentName() string { return p.Title }
-// SetSlug partially implements editor.Editable
-func (p *Post) SetSlug(slug string) { p.Slug = slug }
-
-// Editor partially implements editor.Editable
+// Editor is a buffer of bytes for the Form function to write input views
+// partially implements editor.Editable
func (p *Post) Editor() *editor.Editor { return &p.editor }