home.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. // Copyright 2014 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package routers
  5. import (
  6. "fmt"
  7. "github.com/Unknwon/paginater"
  8. "github.com/gogits/gogs/models"
  9. "github.com/gogits/gogs/modules/base"
  10. "github.com/gogits/gogs/modules/context"
  11. "github.com/gogits/gogs/modules/setting"
  12. "github.com/gogits/gogs/routers/user"
  13. )
  14. const (
  15. HOME base.TplName = "home"
  16. EXPLORE_REPOS base.TplName = "explore/repos"
  17. <<<<<<< HEAD
  18. HELP base.TplName = "help"
  19. ABOUT base.TplName = "about"
  20. TOS base.TplName = "tos"
  21. OUTAGES base.TplName = "outages"
  22. =======
  23. EXPLORE_USERS base.TplName = "explore/users"
  24. >>>>>>> upstream/master
  25. )
  26. func Home(ctx *context.Context) {
  27. if ctx.IsSigned {
  28. if !ctx.User.IsActive && setting.Service.RegisterEmailConfirm {
  29. ctx.Data["Title"] = ctx.Tr("auth.active_your_account")
  30. ctx.HTML(200, user.ACTIVATE)
  31. } else {
  32. user.Dashboard(ctx)
  33. }
  34. return
  35. }
  36. // Check auto-login.
  37. uname := ctx.GetCookie(setting.CookieUserName)
  38. if len(uname) != 0 {
  39. ctx.Redirect(setting.AppSubUrl + "/user/login")
  40. return
  41. }
  42. ctx.Data["PageIsHome"] = true
  43. ctx.HTML(200, HOME)
  44. }
  45. type RepoSearchOptions struct {
  46. Counter func() int64
  47. Ranger func(int, int) ([]*models.Repository, error)
  48. Private bool
  49. PageSize int
  50. OrderBy string
  51. TplName base.TplName
  52. }
  53. func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
  54. page := ctx.QueryInt("page")
  55. if page <= 1 {
  56. page = 1
  57. }
  58. var (
  59. repos []*models.Repository
  60. count int64
  61. err error
  62. )
  63. keyword := ctx.Query("q")
  64. if len(keyword) == 0 {
  65. repos, err = opts.Ranger(page, opts.PageSize)
  66. if err != nil {
  67. ctx.Handle(500, "opts.Ranger", err)
  68. return
  69. }
  70. count = opts.Counter()
  71. } else {
  72. repos, count, err = models.SearchRepositoryByName(&models.SearchRepoOptions{
  73. Keyword: keyword,
  74. OrderBy: opts.OrderBy,
  75. Private: opts.Private,
  76. Page: page,
  77. PageSize: opts.PageSize,
  78. })
  79. if err != nil {
  80. ctx.Handle(500, "SearchRepositoryByName", err)
  81. return
  82. }
  83. }
  84. ctx.Data["Keyword"] = keyword
  85. ctx.Data["Total"] = count
  86. ctx.Data["Page"] = paginater.New(int(count), opts.PageSize, page, 5)
  87. for _, repo := range repos {
  88. if err = repo.GetOwner(); err != nil {
  89. ctx.Handle(500, "GetOwner", fmt.Errorf("%d: %v", repo.ID, err))
  90. return
  91. }
  92. }
  93. ctx.Data["Repos"] = repos
  94. ctx.HTML(200, opts.TplName)
  95. }
  96. func ExploreRepos(ctx *context.Context) {
  97. ctx.Data["Title"] = ctx.Tr("explore")
  98. ctx.Data["PageIsExplore"] = true
  99. ctx.Data["PageIsExploreRepositories"] = true
  100. RenderRepoSearch(ctx, &RepoSearchOptions{
  101. Counter: models.CountPublicRepositories,
  102. Ranger: models.GetRecentUpdatedRepositories,
  103. PageSize: setting.ExplorePagingNum,
  104. OrderBy: "updated_unix DESC",
  105. TplName: EXPLORE_REPOS,
  106. })
  107. }
  108. type UserSearchOptions struct {
  109. Type models.UserType
  110. Counter func() int64
  111. Ranger func(int, int) ([]*models.User, error)
  112. PageSize int
  113. OrderBy string
  114. TplName base.TplName
  115. }
  116. func RenderUserSearch(ctx *context.Context, opts *UserSearchOptions) {
  117. page := ctx.QueryInt("page")
  118. if page <= 1 {
  119. page = 1
  120. }
  121. var (
  122. users []*models.User
  123. count int64
  124. err error
  125. )
  126. keyword := ctx.Query("q")
  127. if len(keyword) == 0 {
  128. users, err = opts.Ranger(page, opts.PageSize)
  129. if err != nil {
  130. ctx.Handle(500, "opts.Ranger", err)
  131. return
  132. }
  133. count = opts.Counter()
  134. } else {
  135. users, count, err = models.SearchUserByName(&models.SearchUserOptions{
  136. Keyword: keyword,
  137. Type: opts.Type,
  138. OrderBy: opts.OrderBy,
  139. Page: page,
  140. PageSize: opts.PageSize,
  141. })
  142. if err != nil {
  143. ctx.Handle(500, "SearchUserByName", err)
  144. return
  145. }
  146. }
  147. ctx.Data["Keyword"] = keyword
  148. ctx.Data["Total"] = count
  149. ctx.Data["Page"] = paginater.New(int(count), opts.PageSize, page, 5)
  150. ctx.Data["Users"] = users
  151. ctx.HTML(200, opts.TplName)
  152. }
  153. func ExploreUsers(ctx *context.Context) {
  154. ctx.Data["Title"] = ctx.Tr("explore")
  155. ctx.Data["PageIsExplore"] = true
  156. ctx.Data["PageIsExploreUsers"] = true
  157. RenderUserSearch(ctx, &UserSearchOptions{
  158. Type: models.USER_TYPE_INDIVIDUAL,
  159. Counter: models.CountUsers,
  160. Ranger: models.Users,
  161. PageSize: setting.ExplorePagingNum,
  162. OrderBy: "updated_unix DESC",
  163. TplName: EXPLORE_USERS,
  164. })
  165. }
  166. <<<<<<< HEAD
  167. func Help(ctx *middleware.Context) {
  168. ctx.Data["Title"] = ctx.Tr("help")
  169. ctx.HTML(200, HELP)
  170. }
  171. func About(ctx *middleware.Context) {
  172. ctx.Data["Title"] = ctx.Tr("about")
  173. ctx.HTML(200, ABOUT)
  174. }
  175. func Tos(ctx *middleware.Context) {
  176. ctx.Data["Title"] = ctx.Tr("tos")
  177. ctx.HTML(200, TOS)
  178. }
  179. func Outages(ctx *middleware.Context) {
  180. ctx.Data["Title"] = ctx.Tr("outages")
  181. ctx.HTML(200, OUTAGES)
  182. }
  183. func NotFound(ctx *middleware.Context) {
  184. =======
  185. func NotFound(ctx *context.Context) {
  186. >>>>>>> upstream/master
  187. ctx.Data["Title"] = "Page Not Found"
  188. ctx.Handle(404, "home.NotFound", nil)
  189. }