diff --git a/sui/api/api.go b/sui/api/api.go index 6b37e6f9..7dfad437 100644 --- a/sui/api/api.go +++ b/sui/api/api.go @@ -218,7 +218,7 @@ var dsl = []byte(` "guard": "query-jwt", "method": "GET", "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"} }, diff --git a/sui/api/process.go b/sui/api/process.go index 3501df0d..d1ae312a 100644 --- a/sui/api/process.go +++ b/sui/api/process.go @@ -833,20 +833,10 @@ func PreviewRender(process *process.Process) interface{} { process.ValidateArgNums(3) sui := get(process) - id := process.ArgsString(0) templateID := process.ArgsString(1) route := route(process, 2) 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) if err != nil { exception.New(err.Error(), 500).Throw() @@ -858,7 +848,7 @@ func PreviewRender(process *process.Process) interface{} { } // Request data - html, err := page.PreviewRender(req) + html, err := page.PreviewRender(referer) if err != nil { exception.New(err.Error(), 500).Throw() } diff --git a/sui/core/interfaces.go b/sui/core/interfaces.go index 7c285433..593b91ab 100644 --- a/sui/core/interfaces.go +++ b/sui/core/interfaces.go @@ -84,7 +84,7 @@ type IPage interface { EditorStyleSource() SourceData EditorDataSource() SourceData - PreviewRender(request *Request) (string, error) + PreviewRender(referer string) (string, error) AssetScript() (*Asset, error) AssetStyle() (*Asset, error) diff --git a/sui/core/preview.go b/sui/core/preview.go index c457e545..721115e9 100644 --- a/sui/core/preview.go +++ b/sui/core/preview.go @@ -5,17 +5,31 @@ import ( ) // 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{} doc, warnings, err := page.Build(&BuildOption{ - SSR: true, - AssetRoot: request.AssetRoot, + SSR: true, + AssetRoot: fmt.Sprintf("/api/__yao/sui/v1/%s/asset/%s/@assets", page.SuiID, page.TemplateID), + KeepPageTag: false, }) - data, _, err := page.Data(request) - if err != nil { - warnings = append(warnings, err.Error()) + // Get the data + var data Data = nil + if page.Codes.DATA.Code != "" { + data, err = page.Exec(request) + if err != nil { + warnings = append(warnings, err.Error()) + } } // Add Frame Height @@ -60,7 +74,8 @@ func (page *Page) PreviewRender(request *Request) (string, error) { return "", err } - parser := NewTemplateParser(data, nil) + // Parser and render + parser := NewTemplateParser(data, &ParserOption{Preview: true}) html, err = parser.Render(html) if err != nil { return "", err diff --git a/sui/storages/local/build.go b/sui/storages/local/build.go index 73a4e5c0..3a9ada42 100644 --- a/sui/storages/local/build.go +++ b/sui/storages/local/build.go @@ -81,7 +81,12 @@ func (tmpl *Template) SyncAssets(option *core.BuildOption) error { func (page *Page) Build(option *core.BuildOption) error { 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) diff --git a/sui/storages/local/page_render_test.go b/sui/storages/local/page_render_test.go index 8e4092eb..3e6506fc 100644 --- a/sui/storages/local/page_render_test.go +++ b/sui/storages/local/page_render_test.go @@ -1,11 +1,9 @@ package local import ( - "fmt" "testing" "github.com/stretchr/testify/assert" - "github.com/yaoapp/yao/sui/core" ) func TestPageEditorRender(t *testing.T) { @@ -60,12 +58,7 @@ func TestPagePreviewRender(t *testing.T) { t.Fatalf("Page error: %v", err) } - r := &core.Request{ - Method: "GET", - AssetRoot: fmt.Sprintf("/api/__yao/sui/v1/%s/asset/%s/@assets", page.Get().SuiID, page.Get().TemplateID), - } - - html, err := page.PreviewRender(r) + html, err := page.PreviewRender("") if err != nil { t.Fatalf("PreviewRender error: %v", err) }