Merge pull request #525 from trheyi/main
[add] sui preview render api and fix page build bug
This commit is contained in:
commit
0318a2e525
6 changed files with 32 additions and 29 deletions
|
|
@ -218,7 +218,7 @@ var dsl = []byte(`
|
||||||
"guard": "query-jwt",
|
"guard": "query-jwt",
|
||||||
"method": "GET",
|
"method": "GET",
|
||||||
"process": "sui.Preview.Render",
|
"process": "sui.Preview.Render",
|
||||||
"in": ["$param.id", "$param.template_id", "$param.route", "$header.Referer", "$query.r", "$query.t"],
|
"in": ["$param.id", "$param.template_id", "$param.route", "$header.Referer"],
|
||||||
"out": {"status": 200, "type": "text/html; charset=utf-8"}
|
"out": {"status": 200, "type": "text/html; charset=utf-8"}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -833,20 +833,10 @@ func PreviewRender(process *process.Process) interface{} {
|
||||||
|
|
||||||
process.ValidateArgNums(3)
|
process.ValidateArgNums(3)
|
||||||
sui := get(process)
|
sui := get(process)
|
||||||
id := process.ArgsString(0)
|
|
||||||
templateID := process.ArgsString(1)
|
templateID := process.ArgsString(1)
|
||||||
route := route(process, 2)
|
route := route(process, 2)
|
||||||
referer := process.ArgsString(3, "")
|
referer := process.ArgsString(3, "")
|
||||||
|
|
||||||
// reqData := process.ArgsString(4)
|
|
||||||
// timestamp := process.Args[4].(*timestamp.Timestamp)
|
|
||||||
|
|
||||||
req := &core.Request{
|
|
||||||
Method: "GET",
|
|
||||||
AssetRoot: fmt.Sprintf("/api/__yao/sui/v1/%s/asset/%s/@assets", id, templateID),
|
|
||||||
Referer: referer,
|
|
||||||
}
|
|
||||||
|
|
||||||
tmpl, err := sui.GetTemplate(templateID)
|
tmpl, err := sui.GetTemplate(templateID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
|
|
@ -858,7 +848,7 @@ func PreviewRender(process *process.Process) interface{} {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request data
|
// Request data
|
||||||
html, err := page.PreviewRender(req)
|
html, err := page.PreviewRender(referer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ type IPage interface {
|
||||||
EditorStyleSource() SourceData
|
EditorStyleSource() SourceData
|
||||||
EditorDataSource() SourceData
|
EditorDataSource() SourceData
|
||||||
|
|
||||||
PreviewRender(request *Request) (string, error)
|
PreviewRender(referer string) (string, error)
|
||||||
|
|
||||||
AssetScript() (*Asset, error)
|
AssetScript() (*Asset, error)
|
||||||
AssetStyle() (*Asset, error)
|
AssetStyle() (*Asset, error)
|
||||||
|
|
|
||||||
|
|
@ -5,17 +5,31 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// PreviewRender render HTML for the preview
|
// PreviewRender render HTML for the preview
|
||||||
func (page *Page) PreviewRender(request *Request) (string, error) {
|
func (page *Page) PreviewRender(referer string) (string, error) {
|
||||||
|
|
||||||
|
// get the page config
|
||||||
|
page.GetConfig()
|
||||||
|
|
||||||
|
// Render the page
|
||||||
|
request := NewRequestMock(page.Config.Mock)
|
||||||
|
if referer != "" {
|
||||||
|
request.Referer = referer
|
||||||
|
}
|
||||||
|
|
||||||
warnings := []string{}
|
warnings := []string{}
|
||||||
doc, warnings, err := page.Build(&BuildOption{
|
doc, warnings, err := page.Build(&BuildOption{
|
||||||
SSR: true,
|
SSR: true,
|
||||||
AssetRoot: request.AssetRoot,
|
AssetRoot: fmt.Sprintf("/api/__yao/sui/v1/%s/asset/%s/@assets", page.SuiID, page.TemplateID),
|
||||||
|
KeepPageTag: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
data, _, err := page.Data(request)
|
// Get the data
|
||||||
if err != nil {
|
var data Data = nil
|
||||||
warnings = append(warnings, err.Error())
|
if page.Codes.DATA.Code != "" {
|
||||||
|
data, err = page.Exec(request)
|
||||||
|
if err != nil {
|
||||||
|
warnings = append(warnings, err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add Frame Height
|
// Add Frame Height
|
||||||
|
|
@ -60,7 +74,8 @@ func (page *Page) PreviewRender(request *Request) (string, error) {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
parser := NewTemplateParser(data, nil)
|
// Parser and render
|
||||||
|
parser := NewTemplateParser(data, &ParserOption{Preview: true})
|
||||||
html, err = parser.Render(html)
|
html, err = parser.Render(html)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,12 @@ func (tmpl *Template) SyncAssets(option *core.BuildOption) error {
|
||||||
func (page *Page) Build(option *core.BuildOption) error {
|
func (page *Page) Build(option *core.BuildOption) error {
|
||||||
|
|
||||||
if option.AssetRoot == "" {
|
if option.AssetRoot == "" {
|
||||||
option.AssetRoot = filepath.Join(page.tmpl.local.DSL.Public.Root, "assets")
|
root, err := page.tmpl.local.DSL.PublicRoot()
|
||||||
|
if err != nil {
|
||||||
|
log.Error("SyncAssets: Get the public root error: %s. use %s", err.Error(), page.tmpl.local.DSL.Public.Root)
|
||||||
|
root = page.tmpl.local.DSL.Public.Root
|
||||||
|
}
|
||||||
|
option.AssetRoot = filepath.Join(root, "assets")
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Trace("Build the page %s AssetRoot: %s", page.Route, option.AssetRoot)
|
log.Trace("Build the page %s AssetRoot: %s", page.Route, option.AssetRoot)
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
package local
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/yaoapp/yao/sui/core"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPageEditorRender(t *testing.T) {
|
func TestPageEditorRender(t *testing.T) {
|
||||||
|
|
@ -60,12 +58,7 @@ func TestPagePreviewRender(t *testing.T) {
|
||||||
t.Fatalf("Page error: %v", err)
|
t.Fatalf("Page error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
r := &core.Request{
|
html, err := page.PreviewRender("")
|
||||||
Method: "GET",
|
|
||||||
AssetRoot: fmt.Sprintf("/api/__yao/sui/v1/%s/asset/%s/@assets", page.Get().SuiID, page.Get().TemplateID),
|
|
||||||
}
|
|
||||||
|
|
||||||
html, err := page.PreviewRender(r)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("PreviewRender error: %v", err)
|
t.Fatalf("PreviewRender error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue