[add] sui page.rename api
This commit is contained in:
parent
10126c50c2
commit
29559c926c
4 changed files with 93 additions and 8 deletions
|
|
@ -129,6 +129,12 @@ var dsl = []byte(`
|
|||
"process": "sui.Page.Duplicate",
|
||||
"in": ["$param.id", "$param.template_id", "$param.route", ":payload"],
|
||||
"out": { "status": 200, "type": "application/json" }
|
||||
},{
|
||||
"path": "/:id/page/rename/:template_id/*route",
|
||||
"method": "POST",
|
||||
"process": "sui.Page.Rename",
|
||||
"in": ["$param.id", "$param.template_id", "$param.route", ":payload"],
|
||||
"out": { "status": 200, "type": "application/json" }
|
||||
},{
|
||||
"path": "/:id/page/exist/:template_id/*route",
|
||||
"method": "GET",
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ func init() {
|
|||
"page.savetemp": PageSaveTemp,
|
||||
"page.create": PageCreate,
|
||||
"page.duplicate": PageDuplicate,
|
||||
"page.rename": PageRename,
|
||||
"page.remove": PageRemove,
|
||||
"page.exist": PageExist,
|
||||
"page.asset": PageAsset,
|
||||
|
|
@ -574,6 +575,45 @@ func PageCreate(process *process.Process) interface{} {
|
|||
return nil
|
||||
}
|
||||
|
||||
// PageRename handle the find Template request
|
||||
func PageRename(process *process.Process) interface{} {
|
||||
process.ValidateArgNums(3)
|
||||
sui := get(process)
|
||||
templateID := process.ArgsString(1)
|
||||
copyfrom := process.ArgsString(2)
|
||||
payload := process.ArgsMap(3, map[string]interface{}{})
|
||||
|
||||
tmpl, err := sui.GetTemplate(templateID)
|
||||
if err != nil {
|
||||
exception.New(err.Error(), 500).Throw()
|
||||
}
|
||||
|
||||
page, err := tmpl.Page(copyfrom)
|
||||
if err != nil {
|
||||
exception.New(err.Error(), 500).Throw()
|
||||
}
|
||||
|
||||
// Get the route from payload
|
||||
route, ok := payload["route"].(string)
|
||||
if !ok {
|
||||
exception.New("the route is required", 400).Throw()
|
||||
}
|
||||
|
||||
// Rename
|
||||
_, err = page.SaveAs(route, nil)
|
||||
if err != nil {
|
||||
exception.New(err.Error(), 500).Throw()
|
||||
}
|
||||
|
||||
// delete the old page
|
||||
err = tmpl.RemovePage(copyfrom)
|
||||
if err != nil {
|
||||
exception.New(err.Error(), 500).Throw()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// PageDuplicate handle the find Template request
|
||||
func PageDuplicate(process *process.Process) interface{} {
|
||||
process.ValidateArgNums(3)
|
||||
|
|
|
|||
|
|
@ -333,6 +333,43 @@ func TestPageCreate(t *testing.T) {
|
|||
assert.Nil(t, res)
|
||||
}
|
||||
|
||||
func TestPageRename(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
defer clean()
|
||||
defer func() {
|
||||
_, err := process.New("sui.page.remove", "demo", "tech-blue", "/unit-test-2").Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
// test demo
|
||||
p, err := process.Of("sui.page.create", "demo", "tech-blue", "/unit-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
res, err := p.Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
assert.Nil(t, res)
|
||||
|
||||
// rename
|
||||
p, err = process.Of("sui.page.rename", "demo", "tech-blue", "/unit-test", map[string]interface{}{"route": "/unit-test-2"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
res, err = p.Exec()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
assert.Nil(t, res)
|
||||
}
|
||||
|
||||
func TestPageDuplicate(t *testing.T) {
|
||||
|
||||
load(t)
|
||||
|
|
|
|||
|
|
@ -199,6 +199,15 @@ func (tmpl *Template) RemovePage(route string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Remove .tmp directory
|
||||
tmpPath := filepath.Join(tmpl.Root, route, ".tmp")
|
||||
if exist, _ := tmpl.local.fs.Exists(tmpPath); exist {
|
||||
err = tmpl.local.fs.RemoveAll(tmpPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return tmpl.removeEmptyPath(path)
|
||||
}
|
||||
|
||||
|
|
@ -208,14 +217,7 @@ func (tmpl *Template) removeEmptyPath(path string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
skipTempDirs := []string{}
|
||||
for _, dir := range dirs {
|
||||
if !strings.HasPrefix(dir, ".tmp") {
|
||||
skipTempDirs = append(skipTempDirs, dir)
|
||||
}
|
||||
}
|
||||
|
||||
if len(skipTempDirs) == 0 {
|
||||
if len(dirs) == 0 {
|
||||
err = tmpl.local.fs.RemoveAll(path)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue