Browse Source

Merge remote-tracking branch 'origin/dev' into dev

Vanessa 2 years ago
parent
commit
a385c64350

+ 2 - 2
app/appearance/langs/en_US.json

@@ -655,14 +655,14 @@
   "fileTree3": "No confirmation required when deleting documents",
   "fileTree4": "If not enabled, a confirmation box will pop up every time you delete a document",
   "fileTree5": "Ref create doc save location",
-  "fileTree6": "When using <code class='fn__code'>((</code>, the save path of the new document (for example, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>, the relative path of the current doc is used if it does not start with <code class='fn__code'>/</code>)",
+  "fileTree6": "When using <code class='fn__code'>((</code>, the save path of the new document (for example, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>)",
   "fileTree7": "Open in the current tab",
   "fileTree8": "The newly opened document tab will replace the unmodified tab",
   "fileTree9": "Close all tabs at startup",
   "fileTree10": "After enabling, the unpinned tabs that were opened the last time will be automatically closed every time the interface is started",
   "fileTree11": "New daily note",
   "fileTree12": "New document save location",
-  "fileTree13": "When using <code class='fn__code'>Ctrl+N</code>, the save path of the new document (for example, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>)",
+  "fileTree13": "When using <code class='fn__code'>Ctrl+N</code>, the save path of the new document (for example, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>, the relative path of the current doc is used if it does not start with <code class='fn__code'>/</code>)",
   "fileTree14": "Save path (support date format template variables, such as <code class='fn__code'>/Daily Notes/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "Template path (for example, <code class='fn__code'>dailynote.md</code>, the file needs to be placed under the workspace/data/templates/)",
   "fileTree16": "Maximum number to list",

+ 2 - 2
app/appearance/langs/es_ES.json

@@ -655,14 +655,14 @@
   "fileTree3": "No se requiere confirmación al borrar documentos",
   "fileTree4": "Si no se activa, aparecerá un cuadro de confirmación cada vez que se elimine un documento",
   "fileTree5": "Ref crear ubicación de guardado de documentos",
-  "fileTree6": "Al utilizar <code class='fn__code'>((</code>, la ruta de guardado del nuevo documento (por ejemplo, <code class='fn__code'>/carpeta1/{{now | date \"20060102150405\"}}/</code>, se utiliza la ruta relativa del documento actual si no empieza por <code class='fn__code'>/</code>)",
+  "fileTree6": "Al utilizar <code class='fn__code'>((</code>, la ruta de guardado del nuevo documento (por ejemplo, <code class='fn__code'>/carpeta1/{{now | date \"20060102150405\"}}/</code>)",
   "fileTree7": "Abrir en la pestaña actual",
   "fileTree8": "La pestaña del documento recién abierto sustituirá a la pestaña no modificada",
   "fileTree9": "Cerrar todas las pestañas al inicio",
   "fileTree10": "Cuando está habilitado, las pestañas no fijadas que se abrieron la última vez se cerrarán automáticamente cada vez que se inicie la interfaz",
   "fileTree11": "Nueva nota diaria",
   "fileTree12": "Nueva ubicación para guardar el documento",
-  "fileTree13": "Al usar <code class='fn__code'>Ctrl+N</code>, la ruta de guardado del nuevo documento (por ejemplo, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</código>)",
+  "fileTree13": "Al usar <code class='fn__code'>Ctrl+N</code>, la ruta de guardado del nuevo documento (por ejemplo, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>, se utiliza la ruta relativa del documento actual si no empieza por <code class='fn__code'>/</code>)",
   "fileTree14": "Ruta de guardado (admite variables de plantilla de formato de fecha, como <code class='fn__code'>/Notas del día/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "Ruta de la plantilla (por ejemplo, <code class='fn__code'>dailynote.md</code>, el archivo debe colocarse en el espacio de trabajo/data/templates/)",
   "fileTree16": "Número máximo a listar",

+ 2 - 2
app/appearance/langs/fr_FR.json

@@ -655,14 +655,14 @@
   "fileTree3": "Aucune confirmation requise lors de la suppression de documents",
   "fileTree4": "Si non activé, une boîte de confirmation apparaîtra à chaque fois que vous supprimerez un document",
   "fileTree5": "Référence créer doc enregistrer emplacement",
-  "fileTree6": "Lors de l'utilisation de <code class='fn__code'>((</code>, le chemin d'enregistrement du nouveau document (par exemple, <code class='fn__code'>/dossier1/{{now | date \"20060102150405\"}}/</code>, le chemin relatif du doc actuel est utilisé s'il ne commence pas par <code class='fn__code'>/</code>).",
+  "fileTree6": "Lors de l'utilisation de <code class='fn__code'>((</code>, le chemin d'enregistrement du nouveau document (par exemple, <code class='fn__code'>/dossier1/{{now | date \"20060102150405\"}}/</code>).",
   "fileTree7": "Ouvrir dans l'Onglet actuel",
   "fileTree8": "L'onglet du document nouvellement ouvert remplacera l'Onglet non modifié.",
   "fileTree9": "Fermer tous les onglets au démarrage",
   "fileTree10": "Lorsqu'il est activé, les onglets non épinglés qui ont été ouverts la dernière fois seront automatiquement fermés à chaque démarrage de l'interface",
   "fileTree11": "Nouvelle note quotidienne",
   "fileTree12": "Emplacement de sauvegarde du nouveau document",
-  "fileTree13": "Lorsque vous utilisez <code class='fn__code'>Ctrl+N</code>, le chemin d'enregistrement du nouveau document (par exemple, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>)",
+  "fileTree13": "Lorsque vous utilisez <code class='fn__code'>Ctrl+N</code>, le chemin d'enregistrement du nouveau document (par exemple, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>, le chemin relatif du doc actuel est utilisé s'il ne commence pas par <code class='fn__code'>/</code>)",
   "fileTree14": "Chemin d'enregistrement (prise en charge des variables de modèle de format de date, telles que <code class='fn__code'>/Notes quotidiennes/{{mais | date \"2006/01\"}}/{{mais | date \"2006-01-02\"}}</code>)",
   "fileTree15": "Chemin du modèle (par exemple, <code class='fn__code'>dailynote.md</code>, le fichier doit être placé sous \"l'espace de travail/data/templates/\")",
   "fileTree16": "Nombre maximum à lister",

+ 2 - 2
app/appearance/langs/zh_CHT.json

@@ -655,14 +655,14 @@
   "fileTree3": "刪除文檔時不需要確認",
   "fileTree4": "不啟用時每次刪除文檔都會彈出確認框",
   "fileTree5": "塊引新建文檔存放位置",
-  "fileTree6": "使用 <code class='fn__code'>((</code> 時新建文檔的存放路徑(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>,不以 <code class='fn__code'>/</code> 開頭則使用當前文檔相對路徑)",
+  "fileTree6": "使用 <code class='fn__code'>((</code> 時新建文檔的存放路徑(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>)",
   "fileTree7": "在當前分頁中打開",
   "fileTree8": "新打開的文檔分頁將會替換沒有修改過的分頁",
   "fileTree9": "啟動時關閉所有頁籤",
   "fileTree10": "啟用後每次啟動界面後都會自動關閉上次打開未釘住的頁籤",
   "fileTree11": "新建日記",
   "fileTree12": "新建文檔存放位置",
-  "fileTree13": "使用 <code class='fn__code'>Ctrl+N</code> 時新建文檔的存放路徑(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>)",
+  "fileTree13": "使用 <code class='fn__code'>Ctrl+N</code> 時新建文檔的存放路徑(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>,不以 <code class='fn__code'>/</code> 開頭則使用當前文檔相對路徑)",
   "fileTree14": "存放路徑(可使用日期格式範本變數,例如 <code class='fn__code'>/日記/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "範本路徑(例如 <code class='fn__code'>dailynote.md</code>,需要將該檔放置於工作空間/data/templates/ 下)",
   "fileTree16": "最大列出數量",

+ 2 - 2
app/appearance/langs/zh_CN.json

@@ -655,14 +655,14 @@
   "fileTree3": "删除文档时不需要确认",
   "fileTree4": "不启用时每次删除文档都会弹出确认框",
   "fileTree5": "块引新建文档存放位置",
-  "fileTree6": "使用 <code class='fn__code'>((</code> 时新建文档的存放路径(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>,不以 <code class='fn__code'>/</code> 开头则使用当前文档相对路径)",
+  "fileTree6": "使用 <code class='fn__code'>((</code> 时新建文档的存放路径(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>)",
   "fileTree7": "在当前页签中打开",
   "fileTree8": "新打开的文档页签将会替换没有修改过的页签",
   "fileTree9": "启动时关闭所有页签",
   "fileTree10": "启用后每次启动界面后都会自动关闭上次打开未钉住的页签",
   "fileTree11": "新建日记",
   "fileTree12": "新建文档存放位置",
-  "fileTree13": "使用 <code class='fn__code'>Ctrl+N</code> 时新建文档的存放路径(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>)",
+  "fileTree13": "使用 <code class='fn__code'>Ctrl+N</code> 时新建文档的存放路径(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}</code>,不以 <code class='fn__code'>/</code> 开头则使用当前文档相对路径)",
   "fileTree14": "存放路径(可使用日期格式模板变量,例如 <code class='fn__code'>/日记/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
   "fileTree15": "模板路径(例如 <code class='fn__code'>dailynote.md</code>,需要将该文件放置于工作空间/data/templates/ 下)",
   "fileTree16": "最大列出数量",

+ 11 - 3
app/src/util/newFile.ts

@@ -22,7 +22,11 @@ export const newFile = (notebookId?: string, currentPath?: string, paths?: strin
             const currentElement = item.parent.headElement;
             if (currentElement.classList.contains("item--focus")) {
                 notebookId = item.editor.protyle.notebookId;
-                currentPath = pathPosix().dirname(item.editor.protyle.path);
+                if (useSavePath) {
+                    currentPath = item.editor.protyle.path;
+                } else {
+                    currentPath = pathPosix().dirname(item.editor.protyle.path);
+                }
                 if (hasClosestByClassName(currentElement, "layout__wnd--active")) {
                     return true;
                 }
@@ -38,7 +42,11 @@ export const newFile = (notebookId?: string, currentPath?: string, paths?: strin
                         notebookId = topElement.getAttribute("data-url");
                     }
                     const selectPath = currentElement.getAttribute("data-path");
-                    currentPath = pathPosix().dirname(selectPath);
+                    if (useSavePath) {
+                        currentPath = selectPath;
+                    } else {
+                        currentPath = pathPosix().dirname(selectPath);
+                    }
                 }
             }
         }
@@ -55,7 +63,7 @@ export const newFile = (notebookId?: string, currentPath?: string, paths?: strin
     }
     fetchPost("/api/filetree/getDocCreateSavePath", {notebook: notebookId}, (data) => {
         if (data.data.path.indexOf("/") > -1 && useSavePath) {
-            if (data.data.path.startsWith("/")) {
+            if (data.data.path.startsWith("/") || currentPath === "/") {
                 fetchPost("/api/filetree/createDocWithMd", {
                     notebook: notebookId,
                     path: data.data.path,

+ 1 - 13
kernel/api/block.go

@@ -154,19 +154,7 @@ func checkBlockFold(c *gin.Context) {
 	}
 
 	id := arg["id"].(string)
-	b, err := model.GetBlock(id, nil)
-	if errors.Is(err, filelock.ErrUnableAccessFile) {
-		ret.Code = 2
-		ret.Data = id
-		return
-	}
-	if errors.Is(err, model.ErrIndexing) {
-		ret.Code = 0
-		ret.Data = false
-		return
-	}
-
-	ret.Data = nil != b && "1" == b.IAL["fold"]
+	ret.Data = model.IsBlockFolded(id)
 }
 
 func checkBlockExist(c *gin.Context) {

+ 16 - 0
kernel/model/block.go

@@ -87,6 +87,22 @@ type Path struct {
 	Created string `json:"created"` // 创建时间
 }
 
+func IsBlockFolded(id string) bool {
+	for i := 0; i < 32; i++ {
+		b, _ := getBlock(id, nil)
+		if nil == b {
+			return true
+		}
+
+		if "1" == b.IAL["fold"] {
+			return true
+		}
+
+		id = b.ParentID
+	}
+	return false
+}
+
 func RecentUpdatedBlocks() (ret []*Block) {
 	ret = []*Block{}