/
render.go
38 lines (32 loc) · 999 Bytes
/
render.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package content
import (
"io"
"github.com/octavore/nagax/util/errors"
"github.com/ketchuphq/ketchup/proto/ketchup/models"
"github.com/ketchuphq/ketchup/server/content/content"
"github.com/ketchuphq/ketchup/server/content/context"
)
func (m *Module) render(w io.Writer, page *models.Page) error {
contents, err := m.CreateContentMap(page)
if err != nil {
return err
}
context := context.NewContext(m.Logger, page, m.DB.Backend, contents)
return m.Templates.RenderPage(w, page, context)
}
type contentMap map[string]interface{}
func (m *Module) CreateContentMap(page *models.Page) (contentMap, error) {
contents := map[string]interface{}{}
contents["title"] = page.GetTitle()
var err error
for _, c := range page.Contents {
contents[c.GetKey()], err = content.RenderContent(c)
if err != nil {
if errors.IsType(err, content.ErrUnknownContentType{}) {
m.Logger.Errorf("content: unknown type: %v", err)
}
return nil, errors.Wrap(err)
}
}
return contents, err
}