Skip to content

Commit 9373ddb

Browse files
committed
Updated repo projects file to include other projects
1 parent c4fbccc commit 9373ddb

File tree

1 file changed

+58
-6
lines changed

1 file changed

+58
-6
lines changed

routers/web/repo/projects.go

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,11 @@ func Projects(ctx *context.Context) {
6161
isShowClosed := strings.ToLower(ctx.FormTrim("state")) == "closed"
6262
keyword := ctx.FormTrim("q")
6363
repo := ctx.Repo.Repository
64-
page := max(ctx.FormInt("page"), 1)
65-
66-
ctx.Data["OpenCount"] = repo.NumOpenProjects
67-
ctx.Data["ClosedCount"] = repo.NumClosedProjects
64+
page := ctx.FormInt("page")
65+
ownerID := repo.OwnerID
66+
if page <= 1 {
67+
page = 1
68+
}
6869

6970
var total int
7071
if !isShowClosed {
@@ -73,7 +74,9 @@ 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,
@@ -85,10 +88,59 @@ func Projects(ctx *context.Context) {
8588
Title: keyword,
8689
})
8790
if err != nil {
88-
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)
89110
return
90111
}
91112

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)
126+
return
127+
}
128+
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+
92144
if err := project_service.LoadIssueNumbersForProjects(ctx, projects, ctx.Doer); err != nil {
93145
ctx.ServerError("LoadIssueNumbersForProjects", err)
94146
return

0 commit comments

Comments
 (0)