working sections version
This commit is contained in:
parent
16ea95bf09
commit
9424084a36
28 changed files with 367 additions and 251 deletions
|
|
@ -215,7 +215,7 @@ func sectionsHandler(ctx *Context) {
|
|||
BodyTitle: "All Sections",
|
||||
Admin: ctx.Admin(),
|
||||
}
|
||||
ctx.Data.Data = ctx.Srv.DB.GetAllSections(ctx.User())
|
||||
ctx.Data.Data = ctx.Srv.DB.GetAllSections(ctx.User(), ctx.Admin())
|
||||
ctx.Exec()
|
||||
}
|
||||
|
||||
|
|
@ -228,7 +228,7 @@ func sectionHandler(ctx *Context) {
|
|||
Admin: ctx.Admin(),
|
||||
}
|
||||
var err error
|
||||
ctx.Data.Data, err = ctx.Srv.DB.GetAllSectionPages(section, ctx.User())
|
||||
ctx.Data.Data, err = ctx.Srv.DB.GetAllSectionPages(section, ctx.User(), ctx.Admin())
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
return
|
||||
|
|
@ -238,61 +238,140 @@ func sectionHandler(ctx *Context) {
|
|||
|
||||
func sectionNewHandler(ctx *Context) {
|
||||
ctx.Template("sectionNewHandler")
|
||||
section := ctx.Var("section")
|
||||
ctx.Data = webData{
|
||||
Title: section,
|
||||
BodyTitle: section,
|
||||
Admin: ctx.Admin(),
|
||||
Title: "New Section",
|
||||
BodyTitle: "New Section",
|
||||
}
|
||||
var err error
|
||||
ctx.Data.Data, err = ctx.Srv.DB.GetAllSectionPages(section, ctx.User())
|
||||
users, err := ctx.Srv.DB.GetUsers()
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
ctx.Exec()
|
||||
}
|
||||
|
||||
func sectionDelHandler(ctx *Context) {
|
||||
ctx.Template("sectionDelHandler")
|
||||
section := ctx.Var("section")
|
||||
ctx.Data = webData{
|
||||
Title: section,
|
||||
BodyTitle: section,
|
||||
Admin: ctx.Admin(),
|
||||
sd := sectionData{Members: make(map[string]bool)}
|
||||
for _, u := range users {
|
||||
sd.Members[u.Username] = false
|
||||
}
|
||||
var err error
|
||||
ctx.Data.Data, err = ctx.Srv.DB.GetAllSectionPages(section, ctx.User())
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
return
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
ctx.Data.Data = sd
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
section := ctx.Form("section")
|
||||
members := ctx.FormSlice("members")
|
||||
for _, m := range members {
|
||||
sd.Members[m] = true
|
||||
}
|
||||
ctx.Data.Data = sd
|
||||
if section == "" {
|
||||
ctx.Error("empty section")
|
||||
return
|
||||
}
|
||||
err = ctx.Srv.DB.CreateSection(section, members, false)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
log.Printf("create: section %s created by %s\n", section, ctx.User())
|
||||
ctx.Redirect(core.SectionsURI, http.StatusFound)
|
||||
}
|
||||
ctx.Exec()
|
||||
}
|
||||
|
||||
func sectionEditHandler(ctx *Context) {
|
||||
ctx.Template("sectionEditHandler")
|
||||
section := ctx.Var("section")
|
||||
ctx.Data = webData{
|
||||
Title: section,
|
||||
BodyTitle: section,
|
||||
Admin: ctx.Admin(),
|
||||
Title: "Edit Section",
|
||||
BodyTitle: "Edit Section",
|
||||
}
|
||||
var err error
|
||||
ctx.Data.Data, err = ctx.Srv.DB.GetAllSectionPages(section, ctx.User())
|
||||
users, err := ctx.Srv.DB.GetUsers()
|
||||
if err != nil {
|
||||
ctx.NotFound()
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
ctx.Exec()
|
||||
sd := sectionData{Members: make(map[string]bool)}
|
||||
for _, u := range users {
|
||||
sd.Members[u.Username] = false
|
||||
}
|
||||
s, err := ctx.Srv.DB.GetSection(ctx.Var("section"))
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
sd.Name = s.Name
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
for _, m := range s.Members {
|
||||
sd.Members[m] = true
|
||||
}
|
||||
ctx.Data.Data = sd
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
members := ctx.FormSlice("members")
|
||||
for _, m := range members {
|
||||
sd.Members[m] = true
|
||||
}
|
||||
ctx.Data.Data = sd
|
||||
err = ctx.Srv.DB.UpdateSection(s.Name, members, s.User)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
log.Printf("update: section %s updated by %s\n", s.Name, ctx.User())
|
||||
ctx.Redirect(core.SectionsURI, http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
||||
func sectionDelHandler(ctx *Context) {
|
||||
ctx.Template("sectionDelHandler")
|
||||
ctx.Data = webData{
|
||||
Title: "Delete Section",
|
||||
BodyTitle: "Delete Section",
|
||||
}
|
||||
s, err := ctx.Srv.DB.GetSection(ctx.Var("section"))
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
if s.User {
|
||||
ctx.Error("user section can not be deleted")
|
||||
return
|
||||
}
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
ctx.Data.Data = s.Name
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
return
|
||||
}
|
||||
err := ctx.Srv.DB.DeleteSection(s.Name)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
log.Printf("delete: section %s deleted by %s\n", s.Name, ctx.User())
|
||||
ctx.Redirect(core.SectionsURI, http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
||||
func pageNewHandler(ctx *Context) {
|
||||
ctx.Template("pageNewHandler")
|
||||
ctx.Data = webData{Title: "New Page"}
|
||||
user := ctx.User()
|
||||
secs, err := ctx.Srv.DB.GetUserSections(user)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
ctx.Data.Data = core.Page{Perm: core.Public}
|
||||
secs[user] = true
|
||||
ctx.Data.Data = pageData{core.Page{Perm: core.Public}, secs}
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
if !ctx.CheckXsrf() {
|
||||
|
|
@ -307,7 +386,8 @@ func pageNewHandler(ctx *Context) {
|
|||
Markdown: markdown,
|
||||
Perm: perm,
|
||||
}
|
||||
ctx.Data.Data = p
|
||||
secs[section] = true
|
||||
ctx.Data.Data = pageData{p, secs}
|
||||
if title == "" {
|
||||
ctx.Error("empty title")
|
||||
return
|
||||
|
|
@ -317,10 +397,7 @@ func pageNewHandler(ctx *Context) {
|
|||
return
|
||||
}
|
||||
|
||||
if section != core.WikiSection {
|
||||
section = ctx.User()
|
||||
}
|
||||
page, err := ctx.Srv.DB.CreatePage(title, section, markdown, ctx.User(), perm)
|
||||
page, err := ctx.Srv.DB.CreatePage(title, section, markdown, user, perm)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
|
|
@ -540,12 +617,12 @@ func pageDelHandler(ctx *Context) {
|
|||
}
|
||||
}
|
||||
|
||||
func userHandler(ctx *Context) {
|
||||
func usersHandler(ctx *Context) {
|
||||
if !ctx.LoggedOn() {
|
||||
ctx.NotFound()
|
||||
return
|
||||
}
|
||||
ctx.Template("userHandler")
|
||||
ctx.Template("usersHandler")
|
||||
ctx.Data = webData{
|
||||
Title: "Users",
|
||||
BodyTitle: "Users",
|
||||
|
|
@ -593,8 +670,8 @@ func userNewHandler(ctx *Context) {
|
|||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
log.Printf("create: %s created by %s\n", user, ctx.User())
|
||||
ctx.Redirect("/user", http.StatusFound)
|
||||
log.Printf("create: user %s created by %s\n", user, ctx.User())
|
||||
ctx.Redirect("/users", http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -635,8 +712,8 @@ func userEditHandler(ctx *Context) {
|
|||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
log.Printf("update: %s updated by %s\n", user, ctx.User())
|
||||
ctx.Redirect("/user", http.StatusFound)
|
||||
log.Printf("update: user %s updated by %s\n", user, ctx.User())
|
||||
ctx.Redirect("/users", http.StatusFound)
|
||||
return
|
||||
}
|
||||
if err := ctx.Srv.DB.UpdateUserPassword(user, password); err != nil {
|
||||
|
|
@ -724,7 +801,7 @@ func userUnlockHandler(ctx *Context) {
|
|||
log.Println("unlock:", err)
|
||||
}
|
||||
log.Printf("unlock: %s unlocked by %s\n", user, ctx.User())
|
||||
ctx.Redirect("/user", http.StatusFound)
|
||||
ctx.Redirect("/users", http.StatusFound)
|
||||
}
|
||||
|
||||
func userDelHandler(ctx *Context) {
|
||||
|
|
@ -751,12 +828,12 @@ func userDelHandler(ctx *Context) {
|
|||
if err := ctx.Srv.DB.DeleteUser(user); err != nil {
|
||||
log.Println("delete:", err)
|
||||
}
|
||||
log.Printf("delete: %s deleted by %s\n", user, self)
|
||||
log.Printf("delete: user %s deleted by %s\n", user, self)
|
||||
if user == self {
|
||||
ctx.Redirect("/logout", http.StatusFound)
|
||||
return
|
||||
}
|
||||
ctx.Redirect("/user", http.StatusFound)
|
||||
ctx.Redirect("/users", http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue