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
@@ -387,6 +388,37 @@ func showOrgProfile(ctx *context.Context) {
387388 org := ctx .Org .Organization
388389 ctx .Data ["Title" ] = org .DisplayName ()
389390
391+ var orderBy models.SearchOrderBy
392+ ctx .Data ["SortType" ] = ctx .Query ("sort" )
393+ switch ctx .Query ("sort" ) {
394+ case "newest" :
395+ orderBy = models .SearchOrderByNewest
396+ case "oldest" :
397+ orderBy = models .SearchOrderByOldest
398+ case "recentupdate" :
399+ orderBy = models .SearchOrderByRecentUpdated
400+ case "leastupdate" :
401+ orderBy = models .SearchOrderByLeastUpdated
402+ case "reversealphabetically" :
403+ orderBy = models .SearchOrderByAlphabeticallyReverse
404+ case "alphabetically" :
405+ orderBy = models .SearchOrderByAlphabetically
406+ case "moststars" :
407+ orderBy = models .SearchOrderByStarsReverse
408+ case "feweststars" :
409+ orderBy = models .SearchOrderByStars
410+ case "mostforks" :
411+ orderBy = models .SearchOrderByForksReverse
412+ case "fewestforks" :
413+ orderBy = models .SearchOrderByForks
414+ default :
415+ ctx .Data ["SortType" ] = "recentupdate"
416+ orderBy = models .SearchOrderByRecentUpdated
417+ }
418+
419+ keyword := strings .Trim (ctx .Query ("q" ), " " )
420+ ctx .Data ["Keyword" ] = keyword
421+
390422 page := ctx .QueryInt ("page" )
391423 if page <= 0 {
392424 page = 1
@@ -403,6 +435,9 @@ func showOrgProfile(ctx *context.Context) {
403435 ctx .ServerError ("AccessibleReposEnv" , err )
404436 return
405437 }
438+ if len (keyword ) != 0 {
439+ env .AddKeyword (keyword )
440+ }
406441 repos , err = env .Repos (page , setting .UI .User .RepoPagingNum )
407442 if err != nil {
408443 ctx .ServerError ("env.Repos" , err )
@@ -413,25 +448,41 @@ func showOrgProfile(ctx *context.Context) {
413448 ctx .ServerError ("env.CountRepos" , err )
414449 return
415450 }
416- ctx .Data ["Repos" ] = repos
417451 } else {
418452 showPrivate := ctx .IsSigned && ctx .User .IsAdmin
419- repos , err = models .GetUserRepositories (org .ID , showPrivate , page , setting .UI .User .RepoPagingNum , "" )
420- if err != nil {
421- ctx .ServerError ("GetRepositories" , err )
422- return
453+ if len (keyword ) == 0 {
454+ repos , err = models .GetUserRepositories (org .ID , showPrivate , page , setting .UI .User .RepoPagingNum , orderBy .String ())
455+ if err != nil {
456+ ctx .ServerError ("GetRepositories" , err )
457+ return
458+ }
459+ count = models .CountUserRepositories (org .ID , showPrivate )
460+ } else {
461+ repos , count , err = models .SearchRepositoryByName (& models.SearchRepoOptions {
462+ Keyword : keyword ,
463+ OwnerID : org .ID ,
464+ OrderBy : orderBy ,
465+ Private : showPrivate ,
466+ Page : page ,
467+ IsProfile : true ,
468+ PageSize : setting .UI .User .RepoPagingNum ,
469+ })
470+ if err != nil {
471+ ctx .ServerError ("SearchRepositoryByName" , err )
472+ return
473+ }
423474 }
424- ctx .Data ["Repos" ] = repos
425- count = models .CountUserRepositories (org .ID , showPrivate )
426475 }
427- ctx .Data ["Page" ] = paginater .New (int (count ), setting .UI .User .RepoPagingNum , page , 5 )
428476
429477 if err := org .GetMembers (); err != nil {
430478 ctx .ServerError ("GetMembers" , err )
431479 return
432480 }
433- ctx .Data ["Members" ] = org .Members
434481
482+ ctx .Data ["Repos" ] = repos
483+ ctx .Data ["Total" ] = count
484+ ctx .Data ["Page" ] = paginater .New (int (count ), setting .UI .User .RepoPagingNum , page , 5 )
485+ ctx .Data ["Members" ] = org .Members
435486 ctx .Data ["Teams" ] = org .Teams
436487
437488 ctx .HTML (200 , tplOrgHome )
0 commit comments