func ArticleDeleteHandler(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) user := core.AdminUser(c, w) if user == nil { return } vars := mux.Vars(r) id, err := strconv.ParseInt(vars["id"], 10, 64) if err != nil { core.HandleError(c, w, err) return } article, err := GetArticleById(c, id, false) if err != nil { core.HandleNotFound(c, w) return } err = DeleteArticle(c, article) if err != nil { core.HandleError(c, w, err) return } http.Redirect(w, r, "/", 302) }
func ArticleUpdateHandler(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) user := core.AdminUser(c, w) if user == nil { return } vars := mux.Vars(r) id, err := strconv.ParseInt(vars["id"], 10, 64) if err != nil { core.HandleError(c, w, err) return } article, err := GetArticleById(c, id, false) if err != nil { core.HandleNotFound(c, w) return } form := NewArticleForm(article) if r.Method == "POST" { if err := r.ParseForm(); err != nil { core.HandleError(c, w, err) return } if gforms.IsFormValid(form, r.Form) { err := UpdateArticle(c, article, form.Title.Value(), form.Text.Value(), form.IsPublic.Value(), ) if err != nil { core.HandleError(c, w, err) return } redirectTo, err := article.URL() if err != nil { core.HandleError(c, w, err) return } http.Redirect(w, r, redirectTo.Path, 302) } } context := map[string]interface{}{ "article": article, "form": form, } core.RenderTemplate(c, w, context, "templates/blog/articleUpdate.html", "templates/blog/articleForm.html", LAYOUT) }
func MarkdownPreviewHandler(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) user := core.AdminUser(c, w) if user == nil { return } html := string(blackfriday.MarkdownCommon([]byte(r.FormValue("text")))) core.HandleJSON(c, w, map[string]string{"html": html}) }
func ArticleCreateHandler(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) user := core.AdminUser(c, w) if user == nil { return } form := NewArticleForm(nil) if r.Method == "POST" { blobs, values, err := blobstore.ParseUpload(r) if err != nil { core.HandleError(c, w, err) return } if gaeforms.IsBlobstoreFormValid(form, blobs, values) { article, err := CreateArticle(c, form.Title.Value(), form.Text.Value(), form.IsPublic.Value(), ) if err != nil { core.HandleError(c, w, err) return } redirectTo, err := article.URL() if err != nil { core.HandleError(c, w, err) return } http.Redirect(w, r, redirectTo.Path, 302) } } context := map[string]interface{}{ "form": form, } core.RenderTemplate(c, w, context, "templates/blog/articleCreate.html", "templates/blog/articleForm.html", LAYOUT) }