diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index b09600018..4c6dba7e5 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -557,7 +557,7 @@ func getDocNameTemplate(c *gin.Context) { nameTemplate = model.Conf.FileTree.CreateDocNameTemplate } - name, err := model.RenderCreateDocNameTemplate(nameTemplate) + name, err := model.RenderGoTemplate(nameTemplate) if nil != err { ret.Code = -1 ret.Msg = err.Error() @@ -568,6 +568,36 @@ func getDocNameTemplate(c *gin.Context) { } } +func getRefCreateSavePath(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + notebook := arg["notebook"].(string) + box := model.Conf.Box(notebook) + refCreateSavePath := model.Conf.FileTree.RefCreateSavePath + if nil != box { + refCreateSavePath = box.GetConf().RefCreateSavePath + } + if "" == refCreateSavePath { + refCreateSavePath = model.Conf.FileTree.RefCreateSavePath + } + + p, err := model.RenderGoTemplate(refCreateSavePath) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } + ret.Data = map[string]interface{}{ + "path": p, + } +} + func changeSort(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 21407a374..9f44b8f24 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -85,6 +85,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/filetree/listDocsByPath", model.CheckAuth, listDocsByPath) ginServer.Handle("POST", "/api/filetree/getDoc", model.CheckAuth, getDoc) ginServer.Handle("POST", "/api/filetree/getDocNameTemplate", model.CheckAuth, getDocNameTemplate) + ginServer.Handle("POST", "/api/filetree/getRefCreateSavePath", model.CheckAuth, getRefCreateSavePath) ginServer.Handle("POST", "/api/filetree/changeSort", model.CheckAuth, changeSort) ginServer.Handle("POST", "/api/filetree/lockFile", model.CheckAuth, lockFile) ginServer.Handle("POST", "/api/filetree/createDocWithMd", model.CheckAuth, model.CheckReadonly, createDocWithMd) diff --git a/kernel/model/file.go b/kernel/model/file.go index 577e3d628..718589593 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1335,7 +1335,7 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) { return } - hPath, err := RenderCreateDocNameTemplate(boxConf.DailyNoteSavePath) + hPath, err := RenderGoTemplate(boxConf.DailyNoteSavePath) if nil != err { return } diff --git a/kernel/model/template.go b/kernel/model/template.go index 111916218..f129f4ac5 100644 --- a/kernel/model/template.go +++ b/kernel/model/template.go @@ -41,8 +41,8 @@ import ( "github.com/siyuan-note/siyuan/kernel/sql" ) -func RenderCreateDocNameTemplate(nameTemplate string) (ret string, err error) { - tpl, err := template.New("").Funcs(sprig.TxtFuncMap()).Parse(nameTemplate) +func RenderGoTemplate(templateContent string) (ret string, err error) { + tpl, err := template.New("").Funcs(sprig.TxtFuncMap()).Parse(templateContent) if nil != err { return "", errors.New(fmt.Sprintf(Conf.Language(44), err.Error())) }