change parent works

This commit is contained in:
Dan Ballard 2015-06-21 11:42:05 -07:00
parent 47d1bdadd1
commit d8f2c326a4
4 changed files with 55 additions and 17 deletions

View File

@ -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

View File

@ -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();
});
});

View File

@ -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) {

View File

@ -23,16 +23,18 @@
<a href="/categories/delete?id={{.category.Id}}">delete</a>
</div>
<div class="col-xs-3">
<select class="form-control category-change-parent" name="category-change-parent-{{.category.Id}}" >
<option value="-1" {{if not .category.Parent.Valid}} selected="true"{{end}}>-- None --</option>
{{range $category := .categories}}
{{if $.category.Parent.Valid }}
{{template "option-category" dict "category" $category "id" $.category.Parent.Value}}
{{else}}
{{template "option-category" dict "category" $category "id" -1}}
{{end}}
{{end}}
</select>
<form action="/categories/change-parent?cid={{.category.Id}}" method="POST">
<select class="form-control category-change-parent" name="parent" >
<option value="none" {{if not .category.Parent.Valid}} selected="true"{{end}}>-- None --</option>
{{range $category := .categories}}
{{if $.category.Parent.Valid }}
{{template "option-category" dict "category" $category "id" $.category.Parent.Value}}
{{else}}
{{template "option-category" dict "category" $category "id" -1}}
{{end}}
{{end}}
</select>
</form>
</div>
</div>