Bläddra i källkod

:art: https://github.com/siyuan-note/siyuan/issues/10671

Vanessa 1 år sedan
förälder
incheckning
e37bfe027a
3 ändrade filer med 18 tillägg och 17 borttagningar
  1. 6 6
      app/src/protyle/hint/index.ts
  2. 3 3
      app/src/protyle/wysiwyg/keydown.ts
  3. 9 8
      app/src/util/newFile.ts

+ 6 - 6
app/src/protyle/hint/index.ts

@@ -419,11 +419,11 @@ ${genHintItemHTML(item)}
                 const realFileName = fileNames.length === 1 ? fileNames[0] : fileNames[1];
                 const realFileName = fileNames.length === 1 ? fileNames[0] : fileNames[1];
                 const newID = Lute.NewNodeID();
                 const newID = Lute.NewNodeID();
                 rowElement.dataset.id = newID;
                 rowElement.dataset.id = newID;
-                getSavePath(protyle.path, protyle.notebookId, (pathString) => {
+                getSavePath(protyle.path, protyle.notebookId, (pathString, targetNotebookId) => {
                     fetchPost("/api/filetree/createDocWithMd", {
                     fetchPost("/api/filetree/createDocWithMd", {
-                        notebook: protyle.notebookId,
+                        notebook: targetNotebookId,
                         path: pathPosix().join(pathString, realFileName),
                         path: pathPosix().join(pathString, realFileName),
-                        parentID: protyle.block.rootID,
+                        parentID: protyle.notebookId === targetNotebookId ? protyle.block.rootID : "",
                         markdown: "",
                         markdown: "",
                         id: newID,
                         id: newID,
                     }, () => {
                     }, () => {
@@ -507,11 +507,11 @@ ${genHintItemHTML(item)}
         if (Constants.BLOCK_HINT_KEYS.includes(this.splitChar) && value.startsWith("((newFile ") && value.endsWith(`${Lute.Caret}'))`)) {
         if (Constants.BLOCK_HINT_KEYS.includes(this.splitChar) && value.startsWith("((newFile ") && value.endsWith(`${Lute.Caret}'))`)) {
             const fileNames = value.substring(11, value.length - 4).split(`"${Constants.ZWSP}'`);
             const fileNames = value.substring(11, value.length - 4).split(`"${Constants.ZWSP}'`);
             const realFileName = fileNames.length === 1 ? fileNames[0] : fileNames[1];
             const realFileName = fileNames.length === 1 ? fileNames[0] : fileNames[1];
-            getSavePath(protyle.path, protyle.notebookId, (pathString) => {
+            getSavePath(protyle.path, protyle.notebookId, (pathString, targetNotebookId) => {
                 fetchPost("/api/filetree/createDocWithMd", {
                 fetchPost("/api/filetree/createDocWithMd", {
-                    notebook: protyle.notebookId,
+                    notebook: targetNotebookId,
                     path: pathPosix().join(pathString, realFileName),
                     path: pathPosix().join(pathString, realFileName),
-                    parentID: protyle.block.rootID,
+                    parentID: protyle.notebookId === targetNotebookId ? protyle.block.rootID : "",
                     markdown: ""
                     markdown: ""
                 }, response => {
                 }, response => {
                     // https://github.com/siyuan-note/siyuan/issues/10133
                     // https://github.com/siyuan-note/siyuan/issues/10133

+ 3 - 3
app/src/protyle/wysiwyg/keydown.ts

@@ -1026,11 +1026,11 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
                         notebook: protyle.notebookId,
                         notebook: protyle.notebookId,
                         path: protyle.path,
                         path: protyle.path,
                     }, (response) => {
                     }, (response) => {
-                        newFileBySelect(protyle, selectText, nodeElement, response.data);
+                        newFileBySelect(protyle, selectText, nodeElement, response.data, protyle.notebookId);
                     });
                     });
                 } else {
                 } else {
-                    getSavePath(protyle.path, protyle.notebookId, (pathString) => {
-                        newFileBySelect(protyle, selectText, nodeElement, pathString);
+                    getSavePath(protyle.path, protyle.notebookId, (pathString, targetNotebookId) => {
+                        newFileBySelect(protyle, selectText, nodeElement, pathString, targetNotebookId);
                     });
                     });
                 }
                 }
             }
             }

+ 9 - 8
app/src/util/newFile.ts

@@ -111,6 +111,7 @@ export const newFile = (optios: {
                     /// #endif
                     /// #endif
                 });
                 });
             } else {
             } else {
+                // TODO
                 fetchPost("/api/filetree/getHPathByPath", {
                 fetchPost("/api/filetree/getHPathByPath", {
                     notebook: data.data.box,
                     notebook: data.data.box,
                     path: optios.currentPath.endsWith(".sy") ? optios.currentPath : optios.currentPath + ".sy"
                     path: optios.currentPath.endsWith(".sy") ? optios.currentPath : optios.currentPath + ".sy"
@@ -160,7 +161,7 @@ export const newFile = (optios: {
     });
     });
 };
 };
 
 
-export const getSavePath = (pathString: string, notebookId: string, cb: (p: string) => void) => {
+export const getSavePath = (pathString: string, notebookId: string, cb: (p: string, notebookId: string) => void) => {
     fetchPost("/api/filetree/getRefCreateSavePath", {
     fetchPost("/api/filetree/getRefCreateSavePath", {
         notebook: notebookId
         notebook: notebookId
     }, (data) => {
     }, (data) => {
@@ -170,13 +171,13 @@ export const getSavePath = (pathString: string, notebookId: string, cb: (p: stri
         }
         }
         if (data.data.path) {
         if (data.data.path) {
             if (data.data.path.startsWith("/")) {
             if (data.data.path.startsWith("/")) {
-                cb(getDisplayName(data.data.path, false, true));
+                cb(getDisplayName(data.data.path, false, true), data.data.box);
             } else {
             } else {
                 fetchPost("/api/filetree/getHPathByPath", {
                 fetchPost("/api/filetree/getHPathByPath", {
                     notebook: data.data.box,
                     notebook: data.data.box,
                     path: targetPath
                     path: targetPath
                 }, (response) => {
                 }, (response) => {
-                    cb(getDisplayName(pathPosix().join(response.data, data.data.path), false, true));
+                    cb(getDisplayName(pathPosix().join(response.data, data.data.path), false, true), data.data.box);
                 });
                 });
             }
             }
         } else {
         } else {
@@ -184,7 +185,7 @@ export const getSavePath = (pathString: string, notebookId: string, cb: (p: stri
                 notebook: data.data.box,
                 notebook: data.data.box,
                 path: targetPath
                 path: targetPath
             }, (response) => {
             }, (response) => {
-                cb(getDisplayName(response.data, false, true));
+                cb(getDisplayName(response.data, false, true), data.data.box);
             });
             });
         }
         }
     });
     });
@@ -199,21 +200,21 @@ export const newFileByName = (app: App, value: string) => {
     });
     });
 };
 };
 
 
-export const newFileBySelect = (protyle: IProtyle, selectText: string, nodeElement: HTMLElement, pathDir: string) => {
+export const newFileBySelect = (protyle: IProtyle, selectText: string, nodeElement: HTMLElement, pathDir: string, targetNotebookId: string) => {
     const newFileName = replaceFileName(selectText.trim() ? selectText.trim() : protyle.lute.BlockDOM2Content(nodeElement.outerHTML).replace(/\n/g, "")) || window.siyuan.languages.untitled;
     const newFileName = replaceFileName(selectText.trim() ? selectText.trim() : protyle.lute.BlockDOM2Content(nodeElement.outerHTML).replace(/\n/g, "")) || window.siyuan.languages.untitled;
     const hPath = pathPosix().join(pathDir, newFileName);
     const hPath = pathPosix().join(pathDir, newFileName);
     fetchPost("/api/filetree/getIDsByHPath", {
     fetchPost("/api/filetree/getIDsByHPath", {
         path: hPath,
         path: hPath,
-        notebook: protyle.notebookId
+        notebook: targetNotebookId
     }, (idResponse) => {
     }, (idResponse) => {
         const refText = escapeHtml(newFileName.substring(0, window.siyuan.config.editor.blockRefDynamicAnchorTextMaxLen));
         const refText = escapeHtml(newFileName.substring(0, window.siyuan.config.editor.blockRefDynamicAnchorTextMaxLen));
         if (idResponse.data && idResponse.data.length > 0) {
         if (idResponse.data && idResponse.data.length > 0) {
             insertHTML(`<span data-type="block-ref" data-id="${idResponse.data[0]}" data-subtype="d">${refText}</span>`, protyle, false, true);
             insertHTML(`<span data-type="block-ref" data-id="${idResponse.data[0]}" data-subtype="d">${refText}</span>`, protyle, false, true);
         } else {
         } else {
             fetchPost("/api/filetree/createDocWithMd", {
             fetchPost("/api/filetree/createDocWithMd", {
-                notebook: protyle.notebookId,
+                notebook: targetNotebookId,
                 path: hPath,
                 path: hPath,
-                parentID: protyle.block.rootID,
+                parentID: protyle.notebookId === targetNotebookId ? protyle.block.rootID : "",
                 markdown: ""
                 markdown: ""
             }, response => {
             }, response => {
                 insertHTML(`<span data-type="block-ref" data-id="${response.data}" data-subtype="d">${refText}</span>`, protyle, false, true);
                 insertHTML(`<span data-type="block-ref" data-id="${response.data}" data-subtype="d">${refText}</span>`, protyle, false, true);