aboutsummaryrefslogtreecommitdiff
path: root/routes/home.go
diff options
context:
space:
mode:
Diffstat (limited to 'routes/home.go')
-rw-r--r--routes/home.go163
1 files changed, 163 insertions, 0 deletions
diff --git a/routes/home.go b/routes/home.go
new file mode 100644
index 00000000..9c713391
--- /dev/null
+++ b/routes/home.go
@@ -0,0 +1,163 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package routes
+
+import (
+ "github.com/Unknwon/paginater"
+
+ "github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/pkg/context"
+ "github.com/gogits/gogs/pkg/setting"
+ "github.com/gogits/gogs/routes/user"
+)
+
+const (
+ HOME = "home"
+ EXPLORE_REPOS = "explore/repos"
+ EXPLORE_USERS = "explore/users"
+ EXPLORE_ORGANIZATIONS = "explore/organizations"
+)
+
+func Home(c *context.Context) {
+ if c.IsLogged {
+ if !c.User.IsActive && setting.Service.RegisterEmailConfirm {
+ c.Data["Title"] = c.Tr("auth.active_your_account")
+ c.HTML(200, user.ACTIVATE)
+ } else {
+ user.Dashboard(c)
+ }
+ return
+ }
+
+ // Check auto-login.
+ uname := c.GetCookie(setting.CookieUserName)
+ if len(uname) != 0 {
+ c.Redirect(setting.AppSubURL + "/user/login")
+ return
+ }
+
+ c.Data["PageIsHome"] = true
+ c.HTML(200, HOME)
+}
+
+func ExploreRepos(c *context.Context) {
+ c.Data["Title"] = c.Tr("explore")
+ c.Data["PageIsExplore"] = true
+ c.Data["PageIsExploreRepositories"] = true
+
+ page := c.QueryInt("page")
+ if page <= 0 {
+ page = 1
+ }
+
+ keyword := c.Query("q")
+ repos, count, err := models.SearchRepositoryByName(&models.SearchRepoOptions{
+ Keyword: keyword,
+ UserID: c.UserID(),
+ OrderBy: "updated_unix DESC",
+ Page: page,
+ PageSize: setting.UI.ExplorePagingNum,
+ })
+ if err != nil {
+ c.Handle(500, "SearchRepositoryByName", err)
+ return
+ }
+ c.Data["Keyword"] = keyword
+ c.Data["Total"] = count
+ c.Data["Page"] = paginater.New(int(count), setting.UI.ExplorePagingNum, page, 5)
+
+ if err = models.RepositoryList(repos).LoadAttributes(); err != nil {
+ c.Handle(500, "LoadAttributes", err)
+ return
+ }
+ c.Data["Repos"] = repos
+
+ c.HTML(200, EXPLORE_REPOS)
+}
+
+type UserSearchOptions struct {
+ Type models.UserType
+ Counter func() int64
+ Ranger func(int, int) ([]*models.User, error)
+ PageSize int
+ OrderBy string
+ TplName string
+}
+
+func RenderUserSearch(c *context.Context, opts *UserSearchOptions) {
+ page := c.QueryInt("page")
+ if page <= 1 {
+ page = 1
+ }
+
+ var (
+ users []*models.User
+ count int64
+ err error
+ )
+
+ keyword := c.Query("q")
+ if len(keyword) == 0 {
+ users, err = opts.Ranger(page, opts.PageSize)
+ if err != nil {
+ c.Handle(500, "opts.Ranger", err)
+ return
+ }
+ count = opts.Counter()
+ } else {
+ users, count, err = models.SearchUserByName(&models.SearchUserOptions{
+ Keyword: keyword,
+ Type: opts.Type,
+ OrderBy: opts.OrderBy,
+ Page: page,
+ PageSize: opts.PageSize,
+ })
+ if err != nil {
+ c.Handle(500, "SearchUserByName", err)
+ return
+ }
+ }
+ c.Data["Keyword"] = keyword
+ c.Data["Total"] = count
+ c.Data["Page"] = paginater.New(int(count), opts.PageSize, page, 5)
+ c.Data["Users"] = users
+
+ c.HTML(200, opts.TplName)
+}
+
+func ExploreUsers(c *context.Context) {
+ c.Data["Title"] = c.Tr("explore")
+ c.Data["PageIsExplore"] = true
+ c.Data["PageIsExploreUsers"] = true
+
+ RenderUserSearch(c, &UserSearchOptions{
+ Type: models.USER_TYPE_INDIVIDUAL,
+ Counter: models.CountUsers,
+ Ranger: models.Users,
+ PageSize: setting.UI.ExplorePagingNum,
+ OrderBy: "updated_unix DESC",
+ TplName: EXPLORE_USERS,
+ })
+}
+
+func ExploreOrganizations(c *context.Context) {
+ c.Data["Title"] = c.Tr("explore")
+ c.Data["PageIsExplore"] = true
+ c.Data["PageIsExploreOrganizations"] = true
+
+ RenderUserSearch(c, &UserSearchOptions{
+ Type: models.USER_TYPE_ORGANIZATION,
+ Counter: models.CountOrganizations,
+ Ranger: models.Organizations,
+ PageSize: setting.UI.ExplorePagingNum,
+ OrderBy: "updated_unix DESC",
+ TplName: EXPLORE_ORGANIZATIONS,
+ })
+}
+
+func NotFound(c *context.Context) {
+ c.Data["Title"] = "Page Not Found"
+ c.NotFound()
+}