diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index 6607a43a2..b09600018 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -257,39 +257,6 @@ func getFullHPathByID(c *gin.Context) { ret.Data = hPath } -func moveDoc(c *gin.Context) { - ret := gulu.Ret.NewResult() - defer c.JSON(http.StatusOK, ret) - - arg, ok := util.JsonArg(c, ret) - if !ok { - return - } - - fromNotebook := arg["fromNotebook"].(string) - toNotebook := arg["toNotebook"].(string) - fromPath := arg["fromPath"].(string) - toPath := arg["toPath"].(string) - - newPath, err := model.MoveDoc(fromNotebook, fromPath, toNotebook, toPath) - if nil != err { - ret.Code = -1 - ret.Msg = err.Error() - ret.Data = map[string]interface{}{"closeTimeout": 7000} - return - } - - evt := util.NewCmdResult("moveDoc", 0, util.PushModeBroadcast, util.PushModeNone) - evt.Data = map[string]interface{}{ - "fromNotebook": fromNotebook, - "toNotebook": toNotebook, - "fromPath": fromPath, - "toPath": toPath, - "newPath": newPath, - } - util.PushEvent(evt) -} - func moveDocs(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 db19690a8..351f4f9d3 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -88,7 +88,6 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/filetree/renameDoc", model.CheckAuth, model.CheckReadonly, renameDoc) ginServer.Handle("POST", "/api/filetree/removeDoc", model.CheckAuth, model.CheckReadonly, removeDoc) ginServer.Handle("POST", "/api/filetree/removeDocs", model.CheckAuth, model.CheckReadonly, removeDocs) - ginServer.Handle("POST", "/api/filetree/moveDoc", model.CheckAuth, model.CheckReadonly, moveDoc) ginServer.Handle("POST", "/api/filetree/moveDocs", model.CheckAuth, model.CheckReadonly, moveDocs) ginServer.Handle("POST", "/api/filetree/duplicateDoc", model.CheckAuth, model.CheckReadonly, duplicateDoc) ginServer.Handle("POST", "/api/filetree/getHPathByPath", model.CheckAuth, getHPathByPath) diff --git a/kernel/model/file.go b/kernel/model/file.go index 0e2aeefe7..6b87d9c0b 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1005,47 +1005,6 @@ func GetFullHPathByID(id string) (hPath string, err error) { return } -func MoveDoc(fromBoxID, fromPath, toBoxID, toPath string) (newPath string, err error) { - WaitForWritingFiles() - - if fromBoxID == toBoxID && fromPath == toPath { - return - } - - fromDir := strings.TrimSuffix(fromPath, ".sy") - if strings.HasPrefix(toPath, fromDir) { - err = errors.New(Conf.Language(87)) - return - } - - fromBox := Conf.Box(fromBoxID) - if nil == fromBox { - err = errors.New(Conf.Language(0)) - return - } - - childDepth := util.GetChildDocDepth(filepath.Join(util.DataDir, fromBoxID, fromPath)) - if depth := strings.Count(toPath, "/") + childDepth; 6 < depth && !Conf.FileTree.AllowCreateDeeper { - err = errors.New(Conf.Language(118)) - return - } - - toBox := Conf.Box(toBoxID) - if nil == toBox { - err = errors.New(Conf.Language(0)) - return - } - - newPath, err = moveDoc(fromBox, fromPath, toBox, toPath) - if nil != err { - return - } - - cache.ClearDocsIAL() - IncSync() - return -} - func MoveDocs(fromPaths []string, toBoxID, toPath string) (err error) { toBox := Conf.Box(toBoxID) if nil == toBox { @@ -1060,6 +1019,16 @@ func MoveDocs(fromPaths []string, toBoxID, toPath string) (err error) { fromPaths = util.FilterMoveDocFromPaths(fromPaths, toPath) } pathsBoxes := getBoxesByPaths(fromPaths) + + // 检查路径深度是否超过限制 + for fromPath, fromBox := range pathsBoxes { + childDepth := util.GetChildDocDepth(filepath.Join(util.DataDir, fromBox.ID, fromPath)) + if depth := strings.Count(toPath, "/") + childDepth; 6 < depth && !Conf.FileTree.AllowCreateDeeper { + err = errors.New(Conf.Language(118)) + return + } + } + needShowProgress := 32 < len(fromPaths) if needShowProgress { util.PushEndlessProgress(Conf.Language(116))