@@ -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