From d8f2c326a4c6a149fee427fa2425a5da353b2896 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Sun, 21 Jun 2015 11:42:05 -0700 Subject: [PATCH] change parent works --- categories/categories.go | 14 ++++++++++++++ js/funcs.js | 6 +----- route_handlers.go | 30 ++++++++++++++++++++++++++++-- templates/pages/categories.html | 22 ++++++++++++---------- 4 files changed, 55 insertions(+), 17 deletions(-) diff --git a/categories/categories.go b/categories/categories.go index dcb40e8..432ac2c 100644 --- a/categories/categories.go +++ b/categories/categories.go @@ -48,6 +48,20 @@ func LoadCategories(db *sql.DB) { } } +func (category *Category) ChangeParent(db *sql.DB, parent *Category) error { + var err error + if parent == nil { + _, err = db.Exec("UPDATE categories SET parent_id = NULL WHERE id = $1", category.Id) + } else { + _, err = db.Exec("UPDATE categories SET parent_id = $2 WHERE id = $1", category.Id, parent.Id) + } + + if err != nil { + fmt.Println("Categories DB Error: ", err) + } + return err +} + // get the number of parents a category has func (category *Category) Depth() int { depth := 0 diff --git a/js/funcs.js b/js/funcs.js index 140c204..51c6fde 100644 --- a/js/funcs.js +++ b/js/funcs.js @@ -23,10 +23,6 @@ $(document).ready( function () { }); $(".category-change-parent").change(function (e) { - $.post("/categories/change-parent", - {target: this.name, - value: this.value}, - function(data) { alert("reload"); location.reload(); }, - "json"); + e.target.parentElement.submit(); }); }); diff --git a/route_handlers.go b/route_handlers.go index e8f7234..94c2101 100644 --- a/route_handlers.go +++ b/route_handlers.go @@ -257,11 +257,37 @@ func categoriesPostHandler(w http.ResponseWriter, r *http.Request, user *user.Us http.Redirect(w, r, "/categories", http.StatusFound) } +func categoryFromReqArg(arg string) *categories.Category { + if cid, err := strconv.Atoi(arg); err != nil { + return nil + } else if category, ok := categories.CategoriesFlat[cid]; !ok { + return nil + } else { + return category + } +} + func categoryChangeParentHandler(w http.ResponseWriter, r *http.Request, user *user.User) { - fmt.Println("categoryChangeParentHandler") session, _ := store.Get(r, "c_user") - session.AddFlash("change parent") + + categories.LoadCategories(db) + category := categoryFromReqArg(r.FormValue("cid")) + parent := categoryFromReqArg(r.FormValue("parent")) + + + if category == nil { + session.AddFlash("Invalid category", flash_err) + } else { + err := category.ChangeParent(db, parent) + if err != nil { + session.AddFlash("Error commiting to Database", flash_err) + } else { + session.AddFlash("Changed category parent", flash_info) + } + } + session.Save(r, w) + http.Redirect(w, r, "/categories", http.StatusFound) } func ServeFileHandler(res http.ResponseWriter, req *http.Request) { diff --git a/templates/pages/categories.html b/templates/pages/categories.html index e9d6d6d..003f9b7 100644 --- a/templates/pages/categories.html +++ b/templates/pages/categories.html @@ -23,16 +23,18 @@ delete
- +
+ +