diff options
Diffstat (limited to 'routers/home.go')
-rw-r--r-- | routers/home.go | 81 |
1 files changed, 19 insertions, 62 deletions
diff --git a/routers/home.go b/routers/home.go index 3c1aa6d5..b928bc60 100644 --- a/routers/home.go +++ b/routers/home.go @@ -5,8 +5,6 @@ package routers import ( - "fmt" - "github.com/Unknwon/paginater" "github.com/gogits/gogs/models" @@ -45,80 +43,39 @@ func Home(ctx *context.Context) { ctx.HTML(200, HOME) } -type RepoSearchOptions struct { - Counter func(bool) int64 - Ranger func(int, int) ([]*models.Repository, error) - Private bool - PageSize int - OrderBy string - TplName base.TplName -} +func ExploreRepos(ctx *context.Context) { + ctx.Data["Title"] = ctx.Tr("explore") + ctx.Data["PageIsExplore"] = true + ctx.Data["PageIsExploreRepositories"] = true -func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { page := ctx.QueryInt("page") if page <= 0 { page = 1 } - var ( - repos []*models.Repository - count int64 - err error - ) - keyword := ctx.Query("q") - if len(keyword) == 0 { - repos, err = opts.Ranger(page, opts.PageSize) - if err != nil { - ctx.Handle(500, "opts.Ranger", err) - return - } - count = opts.Counter(opts.Private) - } else { - var ctxUserID int64 - if ctx.IsSigned { - ctxUserID = ctx.User.ID - } - repos, count, err = models.SearchRepositoryByName(&models.SearchRepoOptions{ - Keyword: keyword, - UserID: ctxUserID, - OrderBy: opts.OrderBy, - Private: opts.Private, - Page: page, - PageSize: opts.PageSize, - }) - if err != nil { - ctx.Handle(500, "SearchRepositoryByName", err) - return - } + repos, count, err := models.SearchRepositoryByName(&models.SearchRepoOptions{ + Keyword: keyword, + UserID: ctx.UserID(), + OrderBy: "updated_unix DESC", + Page: page, + PageSize: setting.UI.ExplorePagingNum, + }) + if err != nil { + ctx.Handle(500, "SearchRepositoryByName", err) + return } ctx.Data["Keyword"] = keyword ctx.Data["Total"] = count - ctx.Data["Page"] = paginater.New(int(count), opts.PageSize, page, 5) + ctx.Data["Page"] = paginater.New(int(count), setting.UI.ExplorePagingNum, page, 5) - for _, repo := range repos { - if err = repo.GetOwner(); err != nil { - ctx.Handle(500, "GetOwner", fmt.Errorf("%d: %v", repo.ID, err)) - return - } + if err = models.RepositoryList(repos).LoadAttributes(); err != nil { + ctx.Handle(500, "LoadAttributes", err) + return } ctx.Data["Repos"] = repos - ctx.HTML(200, opts.TplName) -} - -func ExploreRepos(ctx *context.Context) { - ctx.Data["Title"] = ctx.Tr("explore") - ctx.Data["PageIsExplore"] = true - ctx.Data["PageIsExploreRepositories"] = true - - RenderRepoSearch(ctx, &RepoSearchOptions{ - Counter: models.CountRepositories, - Ranger: models.GetRecentUpdatedRepositories, - PageSize: setting.UI.ExplorePagingNum, - OrderBy: "updated_unix DESC", - TplName: EXPLORE_REPOS, - }) + ctx.HTML(200, EXPLORE_REPOS) } type UserSearchOptions struct { |