summaryrefslogtreecommitdiffstats
path: root/routers/repo/projects.go
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2021-01-15 21:29:32 +0100
committerGitHub <noreply@github.com>2021-01-15 22:29:32 +0200
commit3091600cc866bb5236be991e764ad113b8f542a1 (patch)
tree815ee7accac74290faeb8a24f9b08e5bab2f8920 /routers/repo/projects.go
parentc09e11d018c4a92dc83f58e6a6eacd6b085d3328 (diff)
downloadgitea-3091600cc866bb5236be991e764ad113b8f542a1.tar.gz
gitea-3091600cc866bb5236be991e764ad113b8f542a1.zip
KanBan: be able to set default board (#14147)
Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: zeripath <art27@cantab.net>
Diffstat (limited to 'routers/repo/projects.go')
-rw-r--r--routers/repo/projects.go58
1 files changed, 39 insertions, 19 deletions
diff --git a/routers/repo/projects.go b/routers/repo/projects.go
index 08746aad98..d3cdab6b75 100644
--- a/routers/repo/projects.go
+++ b/routers/repo/projects.go
@@ -270,23 +270,17 @@ func ViewProject(ctx *context.Context) {
return
}
- uncategorizedBoard, err := models.GetUncategorizedBoard(project.ID)
- uncategorizedBoard.Title = ctx.Tr("repo.projects.type.uncategorized")
- if err != nil {
- ctx.ServerError("GetUncategorizedBoard", err)
- return
- }
-
boards, err := models.GetProjectBoards(project.ID)
if err != nil {
ctx.ServerError("GetProjectBoards", err)
return
}
- allBoards := models.ProjectBoardList{uncategorizedBoard}
- allBoards = append(allBoards, boards...)
+ if boards[0].ID == 0 {
+ boards[0].Title = ctx.Tr("repo.projects.type.uncategorized")
+ }
- if ctx.Data["Issues"], err = allBoards.LoadIssues(); err != nil {
+ if ctx.Data["Issues"], err = boards.LoadIssues(); err != nil {
ctx.ServerError("LoadIssuesOfBoards", err)
return
}
@@ -295,7 +289,7 @@ func ViewProject(ctx *context.Context) {
ctx.Data["CanWriteProjects"] = ctx.Repo.Permission.CanWrite(models.UnitTypeProjects)
ctx.Data["Project"] = project
- ctx.Data["Boards"] = allBoards
+ ctx.Data["Boards"] = boards
ctx.Data["PageIsProjects"] = true
ctx.Data["RequiresDraggable"] = true
@@ -416,21 +410,19 @@ func AddBoardToProjectPost(ctx *context.Context, form auth.EditProjectBoardTitle
})
}
-// EditProjectBoardTitle allows a project board's title to be updated
-func EditProjectBoardTitle(ctx *context.Context, form auth.EditProjectBoardTitleForm) {
-
+func checkProjectBoardChangePermissions(ctx *context.Context) (*models.Project, *models.ProjectBoard) {
if ctx.User == nil {
ctx.JSON(403, map[string]string{
"message": "Only signed in users are allowed to perform this action.",
})
- return
+ return nil, nil
}
if !ctx.Repo.IsOwner() && !ctx.Repo.IsAdmin() && !ctx.Repo.CanAccess(models.AccessModeWrite, models.UnitTypeProjects) {
ctx.JSON(403, map[string]string{
"message": "Only authorized users are allowed to perform this action.",
})
- return
+ return nil, nil
}
project, err := models.GetProjectByID(ctx.ParamsInt64(":id"))
@@ -440,25 +432,35 @@ func EditProjectBoardTitle(ctx *context.Context, form auth.EditProjectBoardTitle
} else {
ctx.ServerError("GetProjectByID", err)
}
- return
+ return nil, nil
}
board, err := models.GetProjectBoard(ctx.ParamsInt64(":boardID"))
if err != nil {
ctx.ServerError("GetProjectBoard", err)
- return
+ return nil, nil
}
if board.ProjectID != ctx.ParamsInt64(":id") {
ctx.JSON(422, map[string]string{
"message": fmt.Sprintf("ProjectBoard[%d] is not in Project[%d] as expected", board.ID, project.ID),
})
- return
+ return nil, nil
}
if project.RepoID != ctx.Repo.Repository.ID {
ctx.JSON(422, map[string]string{
"message": fmt.Sprintf("ProjectBoard[%d] is not in Repository[%d] as expected", board.ID, ctx.Repo.Repository.ID),
})
+ return nil, nil
+ }
+ return project, board
+}
+
+// EditProjectBoardTitle allows a project board's title to be updated
+func EditProjectBoardTitle(ctx *context.Context, form auth.EditProjectBoardTitleForm) {
+
+ _, board := checkProjectBoardChangePermissions(ctx)
+ if ctx.Written() {
return
}
@@ -476,6 +478,24 @@ func EditProjectBoardTitle(ctx *context.Context, form auth.EditProjectBoardTitle
})
}
+// SetDefaultProjectBoard set default board for uncategorized issues/pulls
+func SetDefaultProjectBoard(ctx *context.Context) {
+
+ project, board := checkProjectBoardChangePermissions(ctx)
+ if ctx.Written() {
+ return
+ }
+
+ if err := models.SetDefaultBoard(project.ID, board.ID); err != nil {
+ ctx.ServerError("SetDefaultBoard", err)
+ return
+ }
+
+ ctx.JSON(200, map[string]interface{}{
+ "ok": true,
+ })
+}
+
// MoveIssueAcrossBoards move a card from one board to another in a project
func MoveIssueAcrossBoards(ctx *context.Context) {