2025-02-02 16:43:55 +03:00
|
|
|
|
package models
|
|
|
|
|
|
2025-02-03 12:11:13 +03:00
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"fmt"
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-02 16:43:55 +03:00
|
|
|
|
// Контекст страницы
|
|
|
|
|
type Page struct {
|
|
|
|
|
AccessLvl int //уровень доступа юзера
|
|
|
|
|
Title string // тайтл странциы
|
|
|
|
|
PostsSublist Posts
|
|
|
|
|
Number int // номер страницы
|
|
|
|
|
Data string // строка с данными (например искомая строка для поиска)
|
|
|
|
|
SiteCtx *Site
|
|
|
|
|
}
|
2025-02-02 19:29:59 +03:00
|
|
|
|
|
|
|
|
|
// Возвращает контекст страницы по списку постов (которые на ней должны быть),
|
|
|
|
|
// номеру страницы, метадаты
|
|
|
|
|
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,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2025-02-03 12:11:13 +03:00
|
|
|
|
|
|
|
|
|
func (p *Page) RenderPage(s *Site, tmplname string) (string, error) {
|
|
|
|
|
|
|
|
|
|
var buffer bytes.Buffer
|
|
|
|
|
|
|
|
|
|
if err := s.Tmpl.ExecuteTemplate(
|
|
|
|
|
&buffer,
|
|
|
|
|
fmt.Sprintf("%s.gohtml", tmplname),
|
|
|
|
|
p); err != nil {
|
|
|
|
|
|
|
|
|
|
return "", err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return buffer.String(), nil
|
|
|
|
|
}
|