Skip to content

Commit dcf2ae5

Browse files
committed
Show Org-level Project in Repo-projects list
1 parent 3f1f808 commit dcf2ae5

File tree

1 file changed

+54
-5
lines changed

1 file changed

+54
-5
lines changed

routers/web/repo/projects.go

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,21 @@ func Projects(ctx *context.Context) {
6262
keyword := ctx.FormTrim("q")
6363
repo := ctx.Repo.Repository
6464
page := ctx.FormInt("page")
65+
ownerID := repo.OwnerID
6566
if page <= 1 {
6667
page = 1
6768
}
6869

69-
ctx.Data["OpenCount"] = repo.NumOpenProjects
70-
ctx.Data["ClosedCount"] = repo.NumClosedProjects
71-
7270
var total int
7371
if !isShowClosed {
7472
total = repo.NumOpenProjects
7573
} else {
7674
total = repo.NumClosedProjects
7775
}
7876

79-
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{
8080
ListOptions: db.ListOptions{
8181
PageSize: setting.UI.IssuePagingNum,
8282
Page: page,
@@ -88,10 +88,59 @@ func Projects(ctx *context.Context) {
8888
Title: keyword,
8989
})
9090
if err != nil {
91-
ctx.ServerError("GetProjects", err)
91+
ctx.ServerError("GetRepoProjects", err)
92+
return
93+
}
94+
95+
projects = append(projects, repoProjects...)
96+
97+
openOrgProjects, openCountForOrgProjects, err := db.FindAndCount[project_model.Project](ctx, project_model.SearchOptions{
98+
ListOptions: db.ListOptions{
99+
PageSize: setting.UI.IssuePagingNum,
100+
Page: page,
101+
},
102+
OwnerID: ownerID,
103+
IsClosed: optional.Some(false),
104+
OrderBy: project_model.GetSearchOrderByBySortType(sortType),
105+
Type: project_model.TypeOrganization,
106+
Title: keyword,
107+
})
108+
if err != nil {
109+
ctx.ServerError("GetOrgProjects", err)
110+
return
111+
}
112+
113+
closeOrgProjects, closeCountForOrgProjects, err := db.FindAndCount[project_model.Project](ctx, project_model.SearchOptions{
114+
ListOptions: db.ListOptions{
115+
PageSize: setting.UI.IssuePagingNum,
116+
Page: page,
117+
},
118+
OwnerID: ownerID,
119+
IsClosed: optional.Some(true),
120+
OrderBy: project_model.GetSearchOrderByBySortType(sortType),
121+
Type: project_model.TypeOrganization,
122+
Title: keyword,
123+
})
124+
if err != nil {
125+
ctx.ServerError("GetOrgProjects", err)
92126
return
93127
}
94128

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

0 commit comments

Comments
 (0)