func ActionMoveThread(w http.ResponseWriter, r *http.Request) { current_user := utils.GetCurrentUser(r) if current_user == nil || !current_user.CanModerate() { http.NotFound(w, r) return } thread_id_str := r.FormValue("post_id") thread_id, err := strconv.Atoi(thread_id_str) board_id_str := r.FormValue("to") board_id, err := strconv.Atoi(board_id_str) op, err := models.GetPost(thread_id) // boards, _ := models.GetBoardsfor(current_user.GroupId) boards, _ := models.GetBoards() if op == nil || err != nil { http.NotFound(w, r) return } if board_id_str != "" { db := models.GetDbSession() new_board, _ := models.GetBoard(board_id) if new_board == nil { http.NotFound(w, r) return } _, err := db.Exec("UPDATE posts SET board_id=$1 WHERE parent_id=$2", new_board.Id, op.Id) op.BoardId = new_board.Id db.Update(op) if err != nil { http.NotFound(w, r) fmt.Printf("Error moving post: %s\n", err.Error()) return } http.Redirect(w, r, fmt.Sprintf("/board/%d/%d", op.BoardId, op.Id), http.StatusFound) } board, err := models.GetBoard(int(op.BoardId)) utils.RenderTemplate(w, r, "action_move_thread.html", map[string]interface{}{ "board": board, "thread": op, "boards": boards, }, nil) }
func AdminBoards(w http.ResponseWriter, r *http.Request) { current_user := utils.GetCurrentUser(r) if current_user == nil || !current_user.IsAdmin() { http.NotFound(w, r) return } db := models.GetDbSession() // Creating a board if r.Method == "POST" && r.FormValue("create_board") != "" { name := r.FormValue("title") desc := r.FormValue("description") form_order := r.FormValue("order") var order int if form_order != "" { if len(form_order) == 0 { order = 1 } else { order, _ = strconv.Atoi(form_order) } } else { order = 1 } board := models.NewBoard(name, desc, order) db.Insert(board) } // Update the boards if r.Method == "POST" && r.FormValue("update_boards") != "" { err := r.ParseForm() // loop through the post data, entries correspond via index in the map for i := 0; i < len(r.Form["board_id"]); i++ { // basically repeat the process for inserting a board form_id, _ := strconv.Atoi(r.Form["board_id"][i]) id := int64(form_id) name := r.Form["name"][i] desc := r.Form["description"][i] form_order := r.Form["order"][i] groupidst := r.Form["groupid"][i] var order int var groupid int64 if form_order != "" { if len(form_order) == 0 { order = 1 } else { order, _ = strconv.Atoi(form_order) } } else { order = 1 } if len(groupidst) < 1 { groupid = 0 } else { groupid, _ = strconv.ParseInt(groupidst, 10, 64) } board := models.UpdateBoard(name, desc, order, id, groupid) db.Update(board) } if err != nil { http.NotFound(w, r) return } } // Delete a board if id := r.FormValue("delete"); id != "" { obj, _ := db.Get(&models.Board{}, id) if obj == nil { http.NotFound(w, r) return } board := obj.(*models.Board) board.Delete() } boards, _ := models.GetBoards() utils.RenderTemplate(w, r, "admin_boards.html", map[string]interface{}{ "boards": boards, }, nil) }