diff options
Diffstat (limited to 'routers/web/repo/projects.go')
-rw-r--r-- | routers/web/repo/projects.go | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/routers/web/repo/projects.go b/routers/web/repo/projects.go index 346132102f..a57976b4ca 100644 --- a/routers/web/repo/projects.go +++ b/routers/web/repo/projects.go @@ -39,14 +39,14 @@ const ( // MustEnableRepoProjects check if repo projects are enabled in settings func MustEnableRepoProjects(ctx *context.Context) { if unit.TypeProjects.UnitGlobalDisabled() { - ctx.NotFound("EnableRepoProjects", nil) + ctx.NotFound(nil) return } if ctx.Repo.Repository != nil { projectsUnit := ctx.Repo.Repository.MustGetUnit(ctx, unit.TypeProjects) if !ctx.Repo.CanRead(unit.TypeProjects) || !projectsUnit.ProjectsConfig().IsProjectsAllowed(repo_model.ProjectsModeRepo) { - ctx.NotFound("MustEnableRepoProjects", nil) + ctx.NotFound(nil) return } } @@ -61,10 +61,7 @@ func Projects(ctx *context.Context) { isShowClosed := strings.ToLower(ctx.FormTrim("state")) == "closed" keyword := ctx.FormTrim("q") repo := ctx.Repo.Repository - page := ctx.FormInt("page") - if page <= 1 { - page = 1 - } + page := max(ctx.FormInt("page"), 1) ctx.Data["OpenCount"] = repo.NumOpenProjects ctx.Data["ClosedCount"] = repo.NumClosedProjects @@ -92,6 +89,11 @@ func Projects(ctx *context.Context) { return } + if err := project_service.LoadIssueNumbersForProjects(ctx, projects, ctx.Doer); err != nil { + ctx.ServerError("LoadIssueNumbersForProjects", err) + return + } + for i := range projects { rctx := renderhelper.NewRenderContextRepoComment(ctx, repo) projects[i].RenderedContent, err = markdown.RenderString(rctx, projects[i].Description) @@ -189,14 +191,14 @@ func DeleteProject(ctx *context.Context) { p, err := project_model.GetProjectByID(ctx, ctx.PathParamInt64("id")) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } return } if p.RepoID != ctx.Repo.Repository.ID { - ctx.NotFound("", nil) + ctx.NotFound(nil) return } @@ -219,14 +221,14 @@ func RenderEditProject(ctx *context.Context) { p, err := project_model.GetProjectByID(ctx, ctx.PathParamInt64("id")) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } return } if p.RepoID != ctx.Repo.Repository.ID { - ctx.NotFound("", nil) + ctx.NotFound(nil) return } @@ -259,14 +261,14 @@ func EditProjectPost(ctx *context.Context) { p, err := project_model.GetProjectByID(ctx, projectID) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } return } if p.RepoID != ctx.Repo.Repository.ID { - ctx.NotFound("", nil) + ctx.NotFound(nil) return } @@ -291,14 +293,14 @@ func ViewProject(ctx *context.Context) { project, err := project_model.GetProjectByID(ctx, ctx.PathParamInt64("id")) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } return } if project.RepoID != ctx.Repo.Repository.ID { - ctx.NotFound("", nil) + ctx.NotFound(nil) return } @@ -308,18 +310,22 @@ func ViewProject(ctx *context.Context) { return } - labelIDs := issue.PrepareFilterIssueLabels(ctx, ctx.Repo.Repository.ID, ctx.Repo.Owner) + preparedLabelFilter := issue.PrepareFilterIssueLabels(ctx, ctx.Repo.Repository.ID, ctx.Repo.Owner) - assigneeID := ctx.FormInt64("assignee") // TODO: use "optional" but not 0 in the future + assigneeID := ctx.FormString("assignee") - issuesMap, err := issues_model.LoadIssuesFromColumnList(ctx, columns, &issues_model.IssuesOptions{ - LabelIDs: labelIDs, - AssigneeID: optional.Some(assigneeID), + issuesMap, err := project_service.LoadIssuesFromProject(ctx, project, &issues_model.IssuesOptions{ + RepoIDs: []int64{ctx.Repo.Repository.ID}, + LabelIDs: preparedLabelFilter.SelectedLabelIDs, + AssigneeID: assigneeID, }) if err != nil { ctx.ServerError("LoadIssuesOfColumns", err) return } + for _, column := range columns { + column.NumIssues = int64(len(issuesMap[column.ID])) + } if project.CardType != project_model.CardTypeTextOnly { issuesAttachmentMap := make(map[int64][]*repo_model.Attachment) @@ -372,8 +378,8 @@ func ViewProject(ctx *context.Context) { } // Get the exclusive scope for every label ID - labelExclusiveScopes := make([]string, 0, len(labelIDs)) - for _, labelID := range labelIDs { + labelExclusiveScopes := make([]string, 0, len(preparedLabelFilter.SelectedLabelIDs)) + for _, labelID := range preparedLabelFilter.SelectedLabelIDs { foundExclusiveScope := false for _, label := range labels { if label.ID == labelID || label.ID == -labelID { @@ -388,7 +394,7 @@ func ViewProject(ctx *context.Context) { } for _, l := range labels { - l.LoadSelectedLabelsAfterClick(labelIDs, labelExclusiveScopes) + l.LoadSelectedLabelsAfterClick(preparedLabelFilter.SelectedLabelIDs, labelExclusiveScopes) } ctx.Data["Labels"] = labels ctx.Data["NumLabels"] = len(labels) @@ -471,7 +477,7 @@ func DeleteProjectColumn(ctx *context.Context) { project, err := project_model.GetProjectByID(ctx, ctx.PathParamInt64("id")) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } @@ -518,7 +524,7 @@ func AddColumnToProjectPost(ctx *context.Context) { project, err := project_model.GetProjectForRepoByID(ctx, ctx.Repo.Repository.ID, ctx.PathParamInt64("id")) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } @@ -556,7 +562,7 @@ func checkProjectColumnChangePermissions(ctx *context.Context) (*project_model.P project, err := project_model.GetProjectByID(ctx, ctx.PathParamInt64("id")) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } @@ -642,21 +648,21 @@ func MoveIssues(ctx *context.Context) { project, err := project_model.GetProjectByID(ctx, ctx.PathParamInt64("id")) if err != nil { if project_model.IsErrProjectNotExist(err) { - ctx.NotFound("ProjectNotExist", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectByID", err) } return } if project.RepoID != ctx.Repo.Repository.ID { - ctx.NotFound("InvalidRepoID", nil) + ctx.NotFound(nil) return } column, err := project_model.GetColumn(ctx, ctx.PathParamInt64("columnID")) if err != nil { if project_model.IsErrProjectColumnNotExist(err) { - ctx.NotFound("ProjectColumnNotExist", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetProjectColumn", err) } @@ -664,7 +670,7 @@ func MoveIssues(ctx *context.Context) { } if column.ProjectID != project.ID { - ctx.NotFound("ColumnNotInProject", nil) + ctx.NotFound(nil) return } @@ -689,7 +695,7 @@ func MoveIssues(ctx *context.Context) { movedIssues, err := issues_model.GetIssuesByIDs(ctx, issueIDs) if err != nil { if issues_model.IsErrIssueNotExist(err) { - ctx.NotFound("IssueNotExisting", nil) + ctx.NotFound(nil) } else { ctx.ServerError("GetIssueByID", err) } |