diff --git a/routers/web/repo/issue_new.go b/routers/web/repo/issue_new.go index 1393f62fa5..98fb842ddf 100644 --- a/routers/web/repo/issue_new.go +++ b/routers/web/repo/issue_new.go @@ -121,11 +121,9 @@ func NewIssue(ctx *context.Context) { } pageMetaData.MilestonesData.SelectedMilestoneID = ctx.FormInt64("milestone") - pageMetaData.ProjectsData.SelectedProjectID = ctx.FormInt64("project") - if pageMetaData.ProjectsData.SelectedProjectID > 0 { - if len(ctx.Req.URL.Query().Get("project")) > 0 { - ctx.Data["redirect_after_creation"] = "project" - } + pageMetaData.ProjectsData.SelectedProjectIDs, _ = base.StringsToInt64s(strings.Split(ctx.FormString("project"), ",")) + if len(pageMetaData.ProjectsData.SelectedProjectIDs) == 1 { + ctx.Data["redirect_after_creation"] = "project" } tags, err := repo_model.GetTagNamesByRepoID(ctx, ctx.Repo.Repository.ID) @@ -273,7 +271,7 @@ func ValidateRepoMetasForNewIssue(ctx *context.Context, form forms.CreateIssueFo ctx.NotFound(nil) return ret } - pageMetaData.ProjectsData.SelectedProjectID = form.ProjectID + pageMetaData.ProjectsData.SelectedProjectIDs = util.Iif(form.ProjectID > 0, []int64{form.ProjectID}, nil) // prepare assignees candidateAssignees := toSet(pageMetaData.AssigneesData.CandidateAssignees, func(user *user_model.User) int64 { return user.ID }) diff --git a/routers/web/repo/issue_page_meta.go b/routers/web/repo/issue_page_meta.go index 680ead973a..639333ab42 100644 --- a/routers/web/repo/issue_page_meta.go +++ b/routers/web/repo/issue_page_meta.go @@ -34,8 +34,9 @@ type issueSidebarAssigneesData struct { } type issueSidebarProjectsData struct { - SelectedProjectID int64 + SelectedProjectIDs []int64 // TODO: support multiple projects in the future + // the "selected" fields are only valid when len(SelectedProjectIDs)==1 SelectedProjectColumns []*project_model.Column SelectedProjectColumn *project_model.Column @@ -171,7 +172,7 @@ func (d *IssuePageMetaData) retrieveProjectData(ctx *context.Context) { if d.Issue == nil || d.Issue.Project == nil { return } - d.ProjectsData.SelectedProjectID = d.Issue.Project.ID + d.ProjectsData.SelectedProjectIDs = []int64{d.Issue.Project.ID} columns, err := d.Issue.Project.GetColumns(ctx) if err != nil { ctx.ServerError("GetProjectColumns", err) @@ -193,7 +194,7 @@ func (d *IssuePageMetaData) retrieveProjectData(ctx *context.Context) { func (d *IssuePageMetaData) retrieveProjectsDataForIssueWriter(ctx *context.Context) { if d.Issue != nil && d.Issue.Project != nil { - d.ProjectsData.SelectedProjectID = d.Issue.Project.ID + d.ProjectsData.SelectedProjectIDs = []int64{d.Issue.Project.ID} } d.ProjectsData.OpenProjects, d.ProjectsData.ClosedProjects = retrieveProjectsInternal(ctx, ctx.Repo.Repository) } diff --git a/templates/repo/issue/sidebar/project_list.tmpl b/templates/repo/issue/sidebar/project_list.tmpl index e6aa16a8a6..e352ca34f1 100644 --- a/templates/repo/issue/sidebar/project_list.tmpl +++ b/templates/repo/issue/sidebar/project_list.tmpl @@ -5,7 +5,7 @@
-{{template "repo/issue/sidebar/project_column" $pageMeta}} +{{if eq 1 (len $data.SelectedProjectIDs)}} + {{/* the project column selection is only supported when the issue is only in one project */}} + {{template "repo/issue/sidebar/project_column" $pageMeta}} +{{end}}