155 lines
3.2 KiB
Go
155 lines
3.2 KiB
Go
package main
|
|
|
|
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)
|
|
}
|