diff --git a/mvc/controllers/page.go b/mvc/controllers/page.go index b981aa7..041db4f 100644 --- a/mvc/controllers/page.go +++ b/mvc/controllers/page.go @@ -10,23 +10,6 @@ import ( "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, где необходим список всех постов func PageByName(tmplname string, group *gin.RouterGroup, s *models.Site) { 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) { 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) if err != nil { @@ -109,7 +92,7 @@ func getSearchPage(c *gin.Context, s *models.Site, tmplname string, if AccessLvl(c) != 0 { // кэширую только странички по тегам // Для админа - рендер без кэширования 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) } else { key := fmt.Sprintf("%s%d%s", tmplname, pageNumber, searchSubstring) @@ -119,7 +102,7 @@ func getSearchPage(c *gin.Context, s *models.Site, tmplname string, } else { // Нет в кэше => рендерим 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) // если нет ошибки и список постов не пустой, то надо добавить в кэш if err == nil && len(posts) > 0 { diff --git a/mvc/models/page.go b/mvc/models/page.go index 8537d30..428452a 100644 --- a/mvc/models/page.go +++ b/mvc/models/page.go @@ -9,3 +9,19 @@ type Page struct { Data string // строка с данными (например искомая строка для поиска) 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, + } + +}