parent
							
								
									7fb09f035a
								
							
						
					
					
						commit
						ba91214633
					
				| 
						 | 
					@ -620,6 +620,7 @@ type AccessibleReposEnvironment interface {
 | 
				
			||||||
	RepoIDs(page, pageSize int) ([]int64, error)
 | 
						RepoIDs(page, pageSize int) ([]int64, error)
 | 
				
			||||||
	Repos(page, pageSize int) ([]*Repository, error)
 | 
						Repos(page, pageSize int) ([]*Repository, error)
 | 
				
			||||||
	MirrorRepos() ([]*Repository, error)
 | 
						MirrorRepos() ([]*Repository, error)
 | 
				
			||||||
 | 
						AddKeyword(keyword string)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type accessibleReposEnv struct {
 | 
					type accessibleReposEnv struct {
 | 
				
			||||||
| 
						 | 
					@ -627,6 +628,7 @@ type accessibleReposEnv struct {
 | 
				
			||||||
	userID  int64
 | 
						userID  int64
 | 
				
			||||||
	teamIDs []int64
 | 
						teamIDs []int64
 | 
				
			||||||
	e       Engine
 | 
						e       Engine
 | 
				
			||||||
 | 
						keyword string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AccessibleReposEnv an AccessibleReposEnvironment for the repositories in `org`
 | 
					// AccessibleReposEnv an AccessibleReposEnvironment for the repositories in `org`
 | 
				
			||||||
| 
						 | 
					@ -656,6 +658,9 @@ func (env *accessibleReposEnv) cond() builder.Cond {
 | 
				
			||||||
	if len(env.teamIDs) > 0 {
 | 
						if len(env.teamIDs) > 0 {
 | 
				
			||||||
		cond = cond.Or(builder.In("team_repo.team_id", env.teamIDs))
 | 
							cond = cond.Or(builder.In("team_repo.team_id", env.teamIDs))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if env.keyword != "" {
 | 
				
			||||||
 | 
							cond = cond.And(builder.Like{"`repository`.lower_name", strings.ToLower(env.keyword)})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return cond
 | 
						return cond
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -731,3 +736,7 @@ func (env *accessibleReposEnv) MirrorRepos() ([]*Repository, error) {
 | 
				
			||||||
		In("`repository`.id", repoIDs).
 | 
							In("`repository`.id", repoIDs).
 | 
				
			||||||
		Find(&repos)
 | 
							Find(&repos)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (env *accessibleReposEnv) AddKeyword(keyword string) {
 | 
				
			||||||
 | 
						env.keyword = keyword
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
// Copyright 2014 The Gogs Authors. All rights reserved.
 | 
					// Copyright 2014 The Gogs Authors. All rights reserved.
 | 
				
			||||||
 | 
					// Copyright 2019 The Gitea Authors. All rights reserved.
 | 
				
			||||||
// Use of this source code is governed by a MIT-style
 | 
					// Use of this source code is governed by a MIT-style
 | 
				
			||||||
// license that can be found in the LICENSE file.
 | 
					// license that can be found in the LICENSE file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -387,6 +388,37 @@ func showOrgProfile(ctx *context.Context) {
 | 
				
			||||||
	org := ctx.Org.Organization
 | 
						org := ctx.Org.Organization
 | 
				
			||||||
	ctx.Data["Title"] = org.DisplayName()
 | 
						ctx.Data["Title"] = org.DisplayName()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var orderBy models.SearchOrderBy
 | 
				
			||||||
 | 
						ctx.Data["SortType"] = ctx.Query("sort")
 | 
				
			||||||
 | 
						switch ctx.Query("sort") {
 | 
				
			||||||
 | 
						case "newest":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByNewest
 | 
				
			||||||
 | 
						case "oldest":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByOldest
 | 
				
			||||||
 | 
						case "recentupdate":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByRecentUpdated
 | 
				
			||||||
 | 
						case "leastupdate":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByLeastUpdated
 | 
				
			||||||
 | 
						case "reversealphabetically":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByAlphabeticallyReverse
 | 
				
			||||||
 | 
						case "alphabetically":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByAlphabetically
 | 
				
			||||||
 | 
						case "moststars":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByStarsReverse
 | 
				
			||||||
 | 
						case "feweststars":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByStars
 | 
				
			||||||
 | 
						case "mostforks":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByForksReverse
 | 
				
			||||||
 | 
						case "fewestforks":
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByForks
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							ctx.Data["SortType"] = "recentupdate"
 | 
				
			||||||
 | 
							orderBy = models.SearchOrderByRecentUpdated
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						keyword := strings.Trim(ctx.Query("q"), " ")
 | 
				
			||||||
 | 
						ctx.Data["Keyword"] = keyword
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	page := ctx.QueryInt("page")
 | 
						page := ctx.QueryInt("page")
 | 
				
			||||||
	if page <= 0 {
 | 
						if page <= 0 {
 | 
				
			||||||
		page = 1
 | 
							page = 1
 | 
				
			||||||
| 
						 | 
					@ -403,6 +435,9 @@ func showOrgProfile(ctx *context.Context) {
 | 
				
			||||||
			ctx.ServerError("AccessibleReposEnv", err)
 | 
								ctx.ServerError("AccessibleReposEnv", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							if len(keyword) != 0 {
 | 
				
			||||||
 | 
								env.AddKeyword(keyword)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		repos, err = env.Repos(page, setting.UI.User.RepoPagingNum)
 | 
							repos, err = env.Repos(page, setting.UI.User.RepoPagingNum)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.ServerError("env.Repos", err)
 | 
								ctx.ServerError("env.Repos", err)
 | 
				
			||||||
| 
						 | 
					@ -413,25 +448,41 @@ func showOrgProfile(ctx *context.Context) {
 | 
				
			||||||
			ctx.ServerError("env.CountRepos", err)
 | 
								ctx.ServerError("env.CountRepos", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ctx.Data["Repos"] = repos
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		showPrivate := ctx.IsSigned && ctx.User.IsAdmin
 | 
							showPrivate := ctx.IsSigned && ctx.User.IsAdmin
 | 
				
			||||||
		repos, err = models.GetUserRepositories(org.ID, showPrivate, page, setting.UI.User.RepoPagingNum, "")
 | 
							if len(keyword) == 0 {
 | 
				
			||||||
 | 
								repos, err = models.GetUserRepositories(org.ID, showPrivate, page, setting.UI.User.RepoPagingNum, orderBy.String())
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				ctx.ServerError("GetRepositories", err)
 | 
									ctx.ServerError("GetRepositories", err)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		ctx.Data["Repos"] = repos
 | 
					 | 
				
			||||||
			count = models.CountUserRepositories(org.ID, showPrivate)
 | 
								count = models.CountUserRepositories(org.ID, showPrivate)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								repos, count, err = models.SearchRepositoryByName(&models.SearchRepoOptions{
 | 
				
			||||||
 | 
									Keyword:   keyword,
 | 
				
			||||||
 | 
									OwnerID:   org.ID,
 | 
				
			||||||
 | 
									OrderBy:   orderBy,
 | 
				
			||||||
 | 
									Private:   showPrivate,
 | 
				
			||||||
 | 
									Page:      page,
 | 
				
			||||||
 | 
									IsProfile: true,
 | 
				
			||||||
 | 
									PageSize:  setting.UI.User.RepoPagingNum,
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									ctx.ServerError("SearchRepositoryByName", err)
 | 
				
			||||||
 | 
									return
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ctx.Data["Page"] = paginater.New(int(count), setting.UI.User.RepoPagingNum, page, 5)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := org.GetMembers(); err != nil {
 | 
						if err := org.GetMembers(); err != nil {
 | 
				
			||||||
		ctx.ServerError("GetMembers", err)
 | 
							ctx.ServerError("GetMembers", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ctx.Data["Members"] = org.Members
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctx.Data["Repos"] = repos
 | 
				
			||||||
 | 
						ctx.Data["Total"] = count
 | 
				
			||||||
 | 
						ctx.Data["Page"] = paginater.New(int(count), setting.UI.User.RepoPagingNum, page, 5)
 | 
				
			||||||
 | 
						ctx.Data["Members"] = org.Members
 | 
				
			||||||
	ctx.Data["Teams"] = org.Teams
 | 
						ctx.Data["Teams"] = org.Teams
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.HTML(200, tplOrgHome)
 | 
						ctx.HTML(200, tplOrgHome)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@
 | 
				
			||||||
    <div class="ui fluid action input">
 | 
					    <div class="ui fluid action input">
 | 
				
			||||||
        <input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus>
 | 
					        <input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus>
 | 
				
			||||||
        <input type="hidden" name="tab" value="{{$.TabName}}">
 | 
					        <input type="hidden" name="tab" value="{{$.TabName}}">
 | 
				
			||||||
 | 
					        <input type="hidden" name="sort" value="{{$.SortType}}">
 | 
				
			||||||
        <button class="ui blue button">{{.i18n.Tr "explore.search"}}</button>
 | 
					        <button class="ui blue button">{{.i18n.Tr "explore.search"}}</button>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</form>
 | 
					</form>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,7 @@
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
					<div class="ui divider"></div>
 | 
										<div class="ui divider"></div>
 | 
				
			||||||
				{{end}}
 | 
									{{end}}
 | 
				
			||||||
 | 
									{{template "explore/repo_search" .}}
 | 
				
			||||||
				{{template "explore/repo_list" .}}
 | 
									{{template "explore/repo_list" .}}
 | 
				
			||||||
				{{template "base/paginate" .}}
 | 
									{{template "base/paginate" .}}
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue