package server func allSnippetHandler(ctx *Context) { ctx.Template("allSnippetHandler") ctx.Data = webData{Title: "All Snippets"} all, err := ctx.Srv.BS.GetSnippets(ctx.GetUser()) if err != nil { ctx.Data.Msg = err.Error() } ctx.Data.Data = all ctx.Exec() } func snippetNewHandler(ctx *Context) { ctx.Template("snippetNewHandler") ctx.Data = webData{Title: "New Snippet"} switch ctx.Method() { case "GET": ctx.Exec() case "POST": user := ctx.GetUser() title := ctx.Form("title") text := ctx.Form("text") perm := ctx.Form("permission") submit := ctx.Form("submit") snip := Snippet{ Title: title, MD: text, } ctx.Data.Data = art if !ctx.CheckToken() { ctx.Data.Msg = "wrong csrf token" ctx.Exec() return } iperm, err := strconv.Atoi(perm) if err != nil || submit != "Submit" { ctx.Data.Msg = "wrong inputs" ctx.Exec() return } newTitle, err := ctx.Srv.BS.CreateSnippet(user, title, text, iperm) if err != nil { ctx.Data.Msg = err.Error() ctx.Exec() return } ctx.Redirect("/users/"+user+"/"+newTitle, 302) } } func wikiHandler(ctx *Context) { if ctx.T == nil { ctx.Template("wikiHandler") } ctx.Data = webData{ Admin: ctx.GetAdmin(), } title := ctx.Var("title") art, err := ctx.Srv.Index.Get(!ctx.LoggedOn(), title) if err != nil { ctx.NotFound() return } art.LinkTitle = title ctx.Data.Data = art ctx.Data.Title = art.Title ctx.Data.BodyTitle = art.Title ctx.Exec() } func wikiMDHandler(f ctxHandler) ctxHandler { return func(ctx *Context) { ctx.Template("wikiMDHandler") f(ctx) } } func wikiEditHandler(ctx *Context) { ctx.Template("wikiEditHandler") ctx.Data = webData{} title := ctx.Var("title") switch ctx.Method() { case "GET": art, err := ctx.Srv.Index.Get(!ctx.LoggedOn(), title) if err != nil { ctx.NotFound() return } art.LinkTitle = title ctx.Data.Data = art ctx.Data.Title = art.Title ctx.Data.BodyTitle = art.Title ctx.Data.Editor = ctx.Srv.Editors.Set(title, ctx.GetUser()) ctx.Exec() case "POST": ftitle := ctx.Form("title") text := ctx.Form("text") public := ctx.Form("public") pub := false if public == "0" { pub = true } submit := ctx.Form("submit") ctx.Data.Data = Article{ Title: ftitle, LinkTitle: title, MD: text, Public: pub, } ctx.Data.Title = ftitle ctx.Data.BodyTitle = ftitle if !ctx.CheckToken() { ctx.Data.Msg = "wrong csrf token" ctx.Exec() return } if submit == "Back" { ctx.Srv.Editors.RemoveEditor(title, ctx.GetUser()) ctx.Redirect("/wiki/"+title, 302) return } if submit != "Submit" { ctx.Data.Msg = "wrong inputs" ctx.Exec() return } err := ctx.Srv.Index.Update(title, text, ctx.GetUser(), pub) if err != nil { ctx.Data.Msg = err.Error() ctx.Exec() return } ctx.Srv.Editors.Remove(title) ctx.Redirect("/wiki/"+title, 302) } } func wikiDelHandler(ctx *Context) { title := ctx.Var("title") submit := ctx.Form("submit") if !ctx.CheckToken() { ctx.Redirect("/wiki/"+title, 302) return } if submit != "Delete" { ctx.Redirect("/wiki/"+title, 302) return } if err := ctx.Srv.Index.Delete(title); err != nil { log.Println("delete:", err) ctx.Redirect("/wiki/"+title, 302) } ctx.Redirect("/wiki/Index", 302) }