48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package models
|
||
|
||
import (
|
||
"bytes"
|
||
"fmt"
|
||
)
|
||
|
||
// Контекст страницы
|
||
type Page struct {
|
||
AccessLvl int //уровень доступа юзера
|
||
Title string // тайтл странциы
|
||
PostsSublist Posts
|
||
Number int // номер страницы
|
||
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,
|
||
}
|
||
|
||
}
|
||
|
||
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
|
||
}
|