diff options
author | 6543 <6543@obermui.de> | 2021-01-15 21:29:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-15 22:29:32 +0200 |
commit | 3091600cc866bb5236be991e764ad113b8f542a1 (patch) | |
tree | 815ee7accac74290faeb8a24f9b08e5bab2f8920 /routers/repo/projects.go | |
parent | c09e11d018c4a92dc83f58e6a6eacd6b085d3328 (diff) | |
download | gitea-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.go | 58 |
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) { |