Skip to content

Commit d171273

Browse files
committed
Show Org-level Project in Repo-projects list #33830
1 parent 6708343 commit d171273

File tree

1 file changed

+53
-3
lines changed

1 file changed

+53
-3
lines changed

routers/web/repo/projects.go

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ func Projects(ctx *context.Context) {
6262
keyword := ctx.FormTrim("q")
6363
repo := ctx.Repo.Repository
6464
page := max(ctx.FormInt("page"), 1)
65+
ownerID := repo.OwnerID
6566

6667
ctx.Data["OpenCount"] = repo.NumOpenProjects
6768
ctx.Data["ClosedCount"] = repo.NumClosedProjects
@@ -73,22 +74,71 @@ func Projects(ctx *context.Context) {
7374
total = repo.NumClosedProjects
7475
}
7576

76-
projects, count, err := db.FindAndCount[project_model.Project](ctx, project_model.SearchOptions{
77+
projects := make([]*project_model.Project, 0, total)
78+
79+
repoProjects, count, err := db.FindAndCount[project_model.Project](ctx, project_model.SearchOptions{
7780
ListOptions: db.ListOptions{
7881
PageSize: setting.UI.IssuePagingNum,
7982
Page: page,
8083
},
81-
RepoID: repo.ID,
8284
IsClosed: optional.Some(isShowClosed),
8385
OrderBy: project_model.GetSearchOrderByBySortType(sortType),
8486
Type: project_model.TypeRepository,
8587
Title: keyword,
8688
})
8789
if err != nil {
88-
ctx.ServerError("GetProjects", err)
90+
ctx.ServerError("GetRepoProjects", err)
91+
return
92+
}
93+
projects = append(projects, repoProjects...)
94+
95+
openOrgProjects, openCountForOrgProjects, err := db.FindAndCount[project_model.Project](ctx, project_model.SearchOptions{
96+
ListOptions: db.ListOptions{
97+
PageSize: setting.UI.IssuePagingNum,
98+
Page: page,
99+
},
100+
OwnerID: ownerID,
101+
IsClosed: optional.Some(false),
102+
OrderBy: project_model.GetSearchOrderByBySortType(sortType),
103+
Type: project_model.TypeOrganization,
104+
Title: keyword,
105+
})
106+
if err != nil {
107+
ctx.ServerError("GetOrgProjects", err)
108+
return
109+
}
110+
111+
closeOrgProjects, closeCountForOrgProjects, err := db.FindAndCount[project_model.Project](ctx, project_model.SearchOptions{
112+
ListOptions: db.ListOptions{
113+
PageSize: setting.UI.IssuePagingNum,
114+
Page: page,
115+
},
116+
OwnerID: ownerID,
117+
IsClosed: optional.Some(true),
118+
OrderBy: project_model.GetSearchOrderByBySortType(sortType),
119+
Type: project_model.TypeOrganization,
120+
Title: keyword,
121+
})
122+
if err != nil {
123+
ctx.ServerError("GetOrgProjects", err)
89124
return
90125
}
91126

127+
if isShowClosed {
128+
count += closeCountForOrgProjects
129+
total += int(closeCountForOrgProjects)
130+
projects = append(projects, closeOrgProjects...)
131+
} else {
132+
count += openCountForOrgProjects
133+
total += int(openCountForOrgProjects)
134+
projects = append(projects, openOrgProjects...)
135+
}
136+
137+
totalOpenCount := repo.NumOpenProjects + int(openCountForOrgProjects)
138+
totalCloseCount := repo.NumClosedProjects + int(closeCountForOrgProjects)
139+
ctx.Data["OpenCount"] = totalOpenCount
140+
ctx.Data["ClosedCount"] = totalCloseCount
141+
92142
if err := project_service.LoadIssueNumbersForProjects(ctx, projects, ctx.Doer); err != nil {
93143
ctx.ServerError("LoadIssueNumbersForProjects", err)
94144
return

0 commit comments

Comments
 (0)