NewPage() moved to models
parent
2f81e5b4c3
commit
310ba5a7c7
|
@ -10,23 +10,6 @@ import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Возвращает контекст страницы по списку постов (которые на ней должны быть),
|
|
||||||
// номеру страницы, метадаты
|
|
||||||
func PageCtx(c *gin.Context, s *models.Site,
|
|
||||||
postsSublist models.Posts, pageNumber int, data string) *models.Page {
|
|
||||||
|
|
||||||
accessLvl := AccessLvl(c)
|
|
||||||
return &models.Page{
|
|
||||||
AccessLvl: accessLvl,
|
|
||||||
Title: "hikan.ru",
|
|
||||||
PostsSublist: postsSublist,
|
|
||||||
Number: pageNumber,
|
|
||||||
Data: data,
|
|
||||||
SiteCtx: s,
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Задает маршруты для страниц вида tmplname/id.html, где необходим список всех постов
|
// Задает маршруты для страниц вида tmplname/id.html, где необходим список всех постов
|
||||||
func PageByName(tmplname string, group *gin.RouterGroup, s *models.Site) {
|
func PageByName(tmplname string, group *gin.RouterGroup, s *models.Site) {
|
||||||
group.GET(fmt.Sprintf("/%s/:id", tmplname),
|
group.GET(fmt.Sprintf("/%s/:id", tmplname),
|
||||||
|
@ -34,7 +17,7 @@ func PageByName(tmplname string, group *gin.RouterGroup, s *models.Site) {
|
||||||
func(c *gin.Context) {
|
func(c *gin.Context) {
|
||||||
|
|
||||||
pageNumber, _ := c.Get("pageNumber")
|
pageNumber, _ := c.Get("pageNumber")
|
||||||
pageContext := PageCtx(c, s, s.Posts, pageNumber.(int), "")
|
pageContext := models.NewPage(s, s.Posts, pageNumber.(int), AccessLvl(c), "")
|
||||||
|
|
||||||
page, err := getPageByName(c, s, tmplname, pageNumber.(int), pageContext)
|
page, err := getPageByName(c, s, tmplname, pageNumber.(int), pageContext)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -109,7 +92,7 @@ func getSearchPage(c *gin.Context, s *models.Site, tmplname string,
|
||||||
if AccessLvl(c) != 0 { // кэширую только странички по тегам
|
if AccessLvl(c) != 0 { // кэширую только странички по тегам
|
||||||
// Для админа - рендер без кэширования
|
// Для админа - рендер без кэширования
|
||||||
posts := s.Posts.GetPostListBySubstring(searchSubstring) // посты, содержащие искомую подстроку
|
posts := s.Posts.GetPostListBySubstring(searchSubstring) // посты, содержащие искомую подстроку
|
||||||
pageContext := PageCtx(c, s, posts, pageNumber, searchSubstring)
|
pageContext := models.NewPage(s, posts, pageNumber, AccessLvl(c), searchSubstring)
|
||||||
page, err = RenderPage(pageContext, tmplname, s)
|
page, err = RenderPage(pageContext, tmplname, s)
|
||||||
} else {
|
} else {
|
||||||
key := fmt.Sprintf("%s%d%s", tmplname, pageNumber, searchSubstring)
|
key := fmt.Sprintf("%s%d%s", tmplname, pageNumber, searchSubstring)
|
||||||
|
@ -119,7 +102,7 @@ func getSearchPage(c *gin.Context, s *models.Site, tmplname string,
|
||||||
} else {
|
} else {
|
||||||
// Нет в кэше => рендерим
|
// Нет в кэше => рендерим
|
||||||
posts := s.Posts.GetPostListBySubstring(searchSubstring)
|
posts := s.Posts.GetPostListBySubstring(searchSubstring)
|
||||||
pageContext := PageCtx(c, s, posts, pageNumber, searchSubstring)
|
pageContext := models.NewPage(s, posts, pageNumber, AccessLvl(c), searchSubstring)
|
||||||
page, err = RenderPage(pageContext, tmplname, s)
|
page, err = RenderPage(pageContext, tmplname, s)
|
||||||
// если нет ошибки и список постов не пустой, то надо добавить в кэш
|
// если нет ошибки и список постов не пустой, то надо добавить в кэш
|
||||||
if err == nil && len(posts) > 0 {
|
if err == nil && len(posts) > 0 {
|
||||||
|
|
|
@ -9,3 +9,19 @@ type Page struct {
|
||||||
Data string // строка с данными (например искомая строка для поиска)
|
Data string // строка с данными (например искомая строка для поиска)
|
||||||
SiteCtx *Site
|
SiteCtx *Site
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Возвращает контекст страницы по списку постов (которые на ней должны быть),
|
||||||
|
// номеру страницы, метадаты
|
||||||
|
func NewPage(s *Site, postsSublist Posts,
|
||||||
|
pageNumber int, accessLvl int, data string) *Page {
|
||||||
|
|
||||||
|
return &Page{
|
||||||
|
AccessLvl: accessLvl,
|
||||||
|
Title: "hikan.ru",
|
||||||
|
PostsSublist: postsSublist,
|
||||||
|
Number: pageNumber,
|
||||||
|
Data: data,
|
||||||
|
SiteCtx: s,
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue