HomeController.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package controllers
  2. import (
  3. "math"
  4. "net/url"
  5. "github.com/beego/beego/v2/core/logs"
  6. "github.com/mindoc-org/mindoc/conf"
  7. "github.com/mindoc-org/mindoc/models"
  8. "github.com/mindoc-org/mindoc/utils/pagination"
  9. )
  10. type HomeController struct {
  11. BaseController
  12. }
  13. func (c *HomeController) Prepare() {
  14. c.BaseController.Prepare()
  15. //如果没有开启匿名访问,则跳转到登录页面
  16. if !c.EnableAnonymous && c.Member == nil {
  17. c.Redirect(conf.URLFor("AccountController.Login")+"?url="+url.PathEscape(conf.BaseUrl+c.Ctx.Request.URL.RequestURI()), 302)
  18. }
  19. }
  20. func (c *HomeController) Index() {
  21. c.Prepare()
  22. c.TplName = "home/index.tpl"
  23. pageIndex, _ := c.GetInt("page", 1)
  24. pageSize := 18
  25. memberId := 0
  26. if c.Member != nil {
  27. memberId = c.Member.MemberId
  28. }
  29. books, totalCount, err := models.NewBook().FindForHomeToPager(pageIndex, pageSize, memberId)
  30. if err != nil {
  31. logs.Error(err)
  32. c.Abort("500")
  33. }
  34. if totalCount > 0 {
  35. pager := pagination.NewPagination(c.Ctx.Request, totalCount, pageSize, c.BaseUrl())
  36. c.Data["PageHtml"] = pager.HtmlPages()
  37. } else {
  38. c.Data["PageHtml"] = ""
  39. }
  40. c.Data["TotalPages"] = int(math.Ceil(float64(totalCount) / float64(pageSize)))
  41. c.Data["Lists"] = books
  42. }