11// Copyright 2014 The Gogs Authors. All rights reserved.
2+ // Copyright 2019 The Gitea Authors. All rights reserved.
23// Use of this source code is governed by a MIT-style
34// license that can be found in the LICENSE file.
45
@@ -374,6 +375,37 @@ func showOrgProfile(ctx *context.Context) {
374375 org := ctx .Org .Organization
375376 ctx .Data ["Title" ] = org .DisplayName ()
376377
378+ var orderBy models.SearchOrderBy
379+ ctx .Data ["SortType" ] = ctx .Query ("sort" )
380+ switch ctx .Query ("sort" ) {
381+ case "newest" :
382+ orderBy = models .SearchOrderByNewest
383+ case "oldest" :
384+ orderBy = models .SearchOrderByOldest
385+ case "recentupdate" :
386+ orderBy = models .SearchOrderByRecentUpdated
387+ case "leastupdate" :
388+ orderBy = models .SearchOrderByLeastUpdated
389+ case "reversealphabetically" :
390+ orderBy = models .SearchOrderByAlphabeticallyReverse
391+ case "alphabetically" :
392+ orderBy = models .SearchOrderByAlphabetically
393+ case "moststars" :
394+ orderBy = models .SearchOrderByStarsReverse
395+ case "feweststars" :
396+ orderBy = models .SearchOrderByStars
397+ case "mostforks" :
398+ orderBy = models .SearchOrderByForksReverse
399+ case "fewestforks" :
400+ orderBy = models .SearchOrderByForks
401+ default :
402+ ctx .Data ["SortType" ] = "recentupdate"
403+ orderBy = models .SearchOrderByRecentUpdated
404+ }
405+
406+ keyword := strings .Trim (ctx .Query ("q" ), " " )
407+ ctx .Data ["Keyword" ] = keyword
408+
377409 page := ctx .QueryInt ("page" )
378410 if page <= 0 {
379411 page = 1
@@ -390,6 +422,9 @@ func showOrgProfile(ctx *context.Context) {
390422 ctx .ServerError ("AccessibleReposEnv" , err )
391423 return
392424 }
425+ if len (keyword ) != 0 {
426+ env .AddKeyword (keyword )
427+ }
393428 repos , err = env .Repos (page , setting .UI .User .RepoPagingNum )
394429 if err != nil {
395430 ctx .ServerError ("env.Repos" , err )
@@ -400,25 +435,41 @@ func showOrgProfile(ctx *context.Context) {
400435 ctx .ServerError ("env.CountRepos" , err )
401436 return
402437 }
403- ctx .Data ["Repos" ] = repos
404438 } else {
405439 showPrivate := ctx .IsSigned && ctx .User .IsAdmin
406- repos , err = models .GetUserRepositories (org .ID , showPrivate , page , setting .UI .User .RepoPagingNum , "" )
407- if err != nil {
408- ctx .ServerError ("GetRepositories" , err )
409- return
440+ if len (keyword ) == 0 {
441+ repos , err = models .GetUserRepositories (org .ID , showPrivate , page , setting .UI .User .RepoPagingNum , orderBy .String ())
442+ if err != nil {
443+ ctx .ServerError ("GetRepositories" , err )
444+ return
445+ }
446+ count = models .CountUserRepositories (org .ID , showPrivate )
447+ } else {
448+ repos , count , err = models .SearchRepositoryByName (& models.SearchRepoOptions {
449+ Keyword : keyword ,
450+ OwnerID : org .ID ,
451+ OrderBy : orderBy ,
452+ Private : showPrivate ,
453+ Page : page ,
454+ IsProfile : true ,
455+ PageSize : setting .UI .User .RepoPagingNum ,
456+ })
457+ if err != nil {
458+ ctx .ServerError ("SearchRepositoryByName" , err )
459+ return
460+ }
410461 }
411- ctx .Data ["Repos" ] = repos
412- count = models .CountUserRepositories (org .ID , showPrivate )
413462 }
414- ctx .Data ["Page" ] = paginater .New (int (count ), setting .UI .User .RepoPagingNum , page , 5 )
415463
416464 if err := org .GetMembers (); err != nil {
417465 ctx .ServerError ("GetMembers" , err )
418466 return
419467 }
420- ctx .Data ["Members" ] = org .Members
421468
469+ ctx .Data ["Repos" ] = repos
470+ ctx .Data ["Total" ] = count
471+ ctx .Data ["Page" ] = paginater .New (int (count ), setting .UI .User .RepoPagingNum , page , 5 )
472+ ctx .Data ["Members" ] = org .Members
422473 ctx .Data ["Teams" ] = org .Teams
423474
424475 ctx .HTML (200 , tplOrgHome )
0 commit comments