summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2017-03-15 12:49:03 -0700
committerSteve Manuel <nilslice@gmail.com>2017-03-15 12:49:03 -0700
commit8684ca00eedc5799ae954f8149d4beeeb8e236bf (patch)
tree70e4f4306502171e15ccf7aafd41fa9dfadf7b4d
parent4f90b228e1f145340ae4c9a6fc83b2a2cf0a86fa (diff)
updating DeleteContent signature to remove requirement of url.Values, will instead to a lookup in content before the delete to get slug, etc
-rw-r--r--system/admin/handlers.go4
-rw-r--r--system/db/content.go23
2 files changed, 20 insertions, 7 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go
index 56efc0c..a585faa 100644
--- a/system/admin/handlers.go
+++ b/system/admin/handlers.go
@@ -1409,7 +1409,7 @@ func approveContentHandler(res http.ResponseWriter, req *http.Request) {
}
if pendingID != "" {
- err = db.DeleteContent(req.FormValue("type")+":"+pendingID, req.Form)
+ err = db.DeleteContent(req.FormValue("type") + ":" + pendingID)
if err != nil {
log.Println("Failed to remove content after approval:", err)
}
@@ -1757,7 +1757,7 @@ func deleteHandler(res http.ResponseWriter, req *http.Request) {
return
}
- err = db.DeleteContent(t+":"+id, req.Form)
+ err = db.DeleteContent(t + ":" + id)
if err != nil {
log.Println(err)
res.WriteHeader(http.StatusInternalServerError)
diff --git a/system/db/content.go b/system/db/content.go
index dd93c60..8a91828 100644
--- a/system/db/content.go
+++ b/system/db/content.go
@@ -228,11 +228,25 @@ func insert(ns string, data url.Values) (int, error) {
// DeleteContent removes an item from the database. Deleting a non-existent item
// will return a nil error.
-func DeleteContent(target string, data url.Values) error {
+func DeleteContent(target string) error {
t := strings.Split(target, ":")
ns, id := t[0], t[1]
- err := store.Update(func(tx *bolt.Tx) error {
+ b, err := Content(target)
+ if err != nil {
+ return err
+ }
+
+ // get content slug to delete from __contentIndex if it exists
+ // this way content added later can use slugs even if previously
+ // deleted content had used one
+ var itm item.Item
+ err = json.Unmarshal(b, &itm)
+ if err != nil {
+ return err
+ }
+
+ err = store.Update(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(ns))
if b == nil {
return bolt.ErrBucketNotFound
@@ -244,14 +258,13 @@ func DeleteContent(target string, data url.Values) error {
}
// if content has a slug, also delete it from __contentIndex
- slug := data.Get("slug")
- if slug != "" {
+ if itm.Slug != "" {
ci := tx.Bucket([]byte("__contentIndex"))
if ci == nil {
return bolt.ErrBucketNotFound
}
- err := ci.Delete([]byte(slug))
+ err := ci.Delete([]byte(itm.Slug))
if err != nil {
return err
}