diff --git a/admin.go b/admin.go index 47ead93..fa8bf05 100644 --- a/admin.go +++ b/admin.go @@ -34,7 +34,11 @@ func deleteHandler(w http.ResponseWriter, r *http.Request) { db.RemoveBook(id) sess.Notify("Removed book!", "The book '"+book.Title+"' it's completly removed", "success") sess.Save(w, r) - http.Redirect(w, r, "/", 307) //FIXME: if new return to /new/ + if book.Active { + http.Redirect(w, r, "/", 307) + } else { + http.Redirect(w, r, "/new/", 307) + } } func editHandler(w http.ResponseWriter, r *http.Request) { @@ -102,7 +106,11 @@ func saveHandler(w http.ResponseWriter, r *http.Request) { sess.Notify("Book Modified!", "", "success") sess.Save(w, r) - http.Redirect(w, r, "/book/"+idStr, 307) + if db.BookActive(id) { + http.Redirect(w, r, "/book/"+idStr, 307) + } else { + http.Redirect(w, r, "/new/", 307) + } } type newBook struct { diff --git a/database.go b/database.go index f4b9459..679efc4 100644 --- a/database.go +++ b/database.go @@ -127,6 +127,15 @@ func (d *DB) GetNewBooks()(books []Book, num int, err error) { return } +func (d *DB) BookActive(id bson.ObjectId) bool { + var book Book + err := d.books.Find(bson.M{"_id": id}).One(&book) + if err != nil { + return false + } + return book.Active +} + type tagsList []struct { Subject string "_id" Count int "value"