prep edit

This commit is contained in:
Dan Ballard 2015-09-17 08:03:53 -07:00
parent bc7fcdde54
commit f496ca9f80
2 changed files with 61 additions and 1 deletions

View File

@ -30,6 +30,7 @@ func sessionWipe(session *sessions.Session) {
} }
func initSessionUser(r *http.Request) (*user.User, *sessions.Session) { func initSessionUser(r *http.Request) (*user.User, *sessions.Session) {
# TODO verify ssl session
session, _ := store.Get(r, "c_user") session, _ := store.Get(r, "c_user")
if session.Values["username"] == nil { if session.Values["username"] == nil {
return nil, session return nil, session
@ -196,6 +197,63 @@ func addPostHandler(w http.ResponseWriter, r *http.Request, user *user.User, ses
} }
} }
//
func editFormHandler(w http.ResponseWriter, r *http.Request, user *user.User, session *sessions.Session) {
categories.LoadCategories(db)
flashes := GetFlashes(session)
title := session.Values["title"]
delete(session.Values, "title")
link := session.Values["link"]
delete(session.Values, "link")
description := session.Values["description"]
delete(session.Values, "description")
category := session.Values["category"]
delete(session.Values, "category")
session.Save(r, w)
if link != nil {
//TODO category_id
ShowTemplate("add", w, map[string]interface{}{"user": user, "flashes": flashes, "categories": categories.CategoriesTree, "link": link, "title": title, "description": description, "popup": false, "category": category})
return
}
}
func addPostHandler(w http.ResponseWriter, r *http.Request, user *user.User, session *sessions.Session) {
var news news.News
news.Title = r.FormValue("title")
news.Notes = r.FormValue("notes")
news.Url = r.FormValue("link")
popup := r.FormValue("popup")
category_id, err := strconv.Atoi(r.FormValue("category"))
if err != nil {
category_id = -1
}
news.Category_id = category_id
err = (&news).Insert(db)
if err != nil {
session.AddFlash("Error saving news: "+err.Error(), flash_err)
session.Values["title"] = news.Title
session.Values["link"] = news.Url
session.Values["notes"] = news.Notes
session.Values["popup"] = popup
session.Save(r, w)
http.Redirect(w, r, "/add", http.StatusFound)
} else {
// TODO auto close? redirect
session.AddFlash("Added news \""+news.Title+"\"", flash_info)
session.Save(r, w)
if popup == "1" {
http.Redirect(w, r, "/added", http.StatusFound)
} else {
http.Redirect(w, r, "/", http.StatusFound)
}
}
}
func templateFormHandler(w http.ResponseWriter, r *http.Request, user *user.User, session *sessions.Session) { func templateFormHandler(w http.ResponseWriter, r *http.Request, user *user.User, session *sessions.Session) {
flashes := GetFlashes(session) flashes := GetFlashes(session)
session.Save(r, w) session.Save(r, w)
@ -371,6 +429,7 @@ func init_route_handlers() {
r := mux.NewRouter() r := mux.NewRouter()
# TODO: CSRF
r.HandleFunc("/login", getPostHandler(LoginFormHandler, LoginPostHandler)) r.HandleFunc("/login", getPostHandler(LoginFormHandler, LoginPostHandler))
r.HandleFunc("/logout", userHandler(LogoutHandler)) r.HandleFunc("/logout", userHandler(LogoutHandler))
@ -381,6 +440,7 @@ func init_route_handlers() {
r.HandleFunc("/export-commit", userHandler(exportHandler)) r.HandleFunc("/export-commit", userHandler(exportHandler))
r.HandleFunc("/added", userHandler(addedHandler)) r.HandleFunc("/added", userHandler(addedHandler))
r.HandleFunc("/delete", userHandler(deleteHandler)) r.HandleFunc("/delete", userHandler(deleteHandler))
r.HandleFunc("/edit", getPostHandler(userHandler(editFormHandler), userHandler(editPostHandler)))
r.HandleFunc("/categories", getPostHandler(userHandler(categoriesFormHandler), userHandler(categoriesPostHandler))) r.HandleFunc("/categories", getPostHandler(userHandler(categoriesFormHandler), userHandler(categoriesPostHandler)))
r.HandleFunc("/categories/change-parent", userHandler(categoryChangeParentHandler)) r.HandleFunc("/categories/change-parent", userHandler(categoryChangeParentHandler))

View File

@ -7,7 +7,7 @@
<div class="col-xs-2">Link:</div><div class="col-xs-10"><input type="text" class="form-control" name="link" placeholder="Link" value="{{.link}}"/></div> <div class="col-xs-2">Link:</div><div class="col-xs-10"><input type="text" class="form-control" name="link" placeholder="Link" value="{{.link}}"/></div>
<div class="col-xs-2">Title:</div><div class="col-xs-10"><input type="text" class="form-control" name="title" placeholder="Title" value="{{.title}}"/></div> <div class="col-xs-2">Title:</div><div class="col-xs-10"><input type="text" class="form-control" name="title" placeholder="Title" value="{{.title}}"/></div>
<div class="col-xs-2">Category:</div><div class="col-xs-10 add-category-col"> <div class="col-xs-2">Category:</div><div class="col-xs-10 add-category-col">
<select class="form-control add-category" name="category" placeholder="Tag"> <select class="form-control add-category" name="category" placeholder="Category">
<option value="-1">-- Pick a Category --</option> <option value="-1">-- Pick a Category --</option>
{{range $category := .categories}} {{range $category := .categories}}
{{template "option-category" $category}} {{template "option-category" $category}}