diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index b0fd357f8..1abd622a5 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 قد يقوم Microsoft Defender بحذف النواة عن طريق الخطأ، وحذف البيانات وتقليل الأداء بشكل كبير. يُوصى بإضافة مسار التثبيت ومسار مساحة العمل الخاصة بـ SiYuan إلى قائمة الاستثناءات", "253": "جارٍ ضغط الملف [%s]، يرجى الانتظار...", "254": "[Region ID] معرّف المنطقة غير صحيح، يرجى الرجوع إلى وثائق مزود خدمة S3 لتكوين معرّف المنطقة", - "255": "قام الموقع المستهدف بتمكين حماية الروابط المباشرة، لذلك لا يمكن تنزيل [%d] من الموارد" + "255": "قام الموقع المستهدف بتمكين حماية الروابط المباشرة، لذلك لا يمكن تنزيل [%d] من الموارد", + "256": "المسار المحدد [%s] يحتوي على مسار مساحة عمل رئيسي [%s]" } } diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 2fbc57131..ea6c40a0d 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender kann fälschlicherweise den Kernel löschen, Daten löschen und die Leistung erheblich verringern. Es wird empfohlen, den SiYuan-Installationspfad und den Arbeitsbereichspfad zur Ausschlussliste hinzuzufügen", "253": "Datei [%s] wird komprimiert, bitte warten...", "254": "[Region ID] Falsche Regions-ID, bitte konsultieren Sie die Dokumentation des S3-Dienstanbieters zur Konfiguration der Regions-ID", - "255": "Die Zielseite hat den Hotlink-Schutz aktiviert, daher ist es nicht möglich, [%d] Ressourcen herunterzuladen" + "255": "Die Zielseite hat den Hotlink-Schutz aktiviert, daher ist es nicht möglich, [%d] Ressourcen herunterzuladen", + "256": "Der angegebene Pfad [%s] hat einen übergeordneten Arbeitsbereichspfad [%s]" } } diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 60b60479d..1464ce1d4 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender may mistakenly delete the kernel, delete data, and significantly reduce performance. It is recommended to add the SiYuan installation path and workspace path to the exclusion list", "253": "Compressing file [%s], please wait...", "254": "[Region ID] Incorrect Region ID, please refer to the S3 service provider's documentation to configure the Region ID", - "255": "The target site has enabled hotlink protection, so it is not possible to download [%d] resources" + "255": "The target site has enabled hotlink protection, so it is not possible to download [%d] resources", + "256": "The specified path [%s] has a parent workspace path [%s]" } } diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 26b249aeb..0a469da88 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender puede eliminar por error el núcleo, eliminar datos y reducir significativamente el rendimiento. Se recomienda agregar la ruta de instalación y el espacio de trabajo de SiYuan a la lista de exclusiones", "253": "Comprimiendo el archivo [%s], por favor espere...", "254": "[Region ID] ID de región incorrecto, por favor consulte la documentación del proveedor de servicios S3 para configurar el ID de región", - "255": "El sitio de destino ha activado la protección contra hotlinking, por lo que no es posible descargar [%d] recursos" + "255": "El sitio de destino ha activado la protección contra hotlinking, por lo que no es posible descargar [%d] recursos", + "256": "La ruta especificada [%s] tiene una ruta de espacio de trabajo padre [%s]" } } diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 5ad851194..ab3ac1adb 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender peut supprimer par erreur le noyau, supprimer des données et réduire considérablement les performances. Il est recommandé d'ajouter le chemin d'installation et l'espace de travail de SiYuan à la liste des exclusions", "253": "Compression du fichier [%s], veuillez patienter...", "254": "[Region ID] ID de région incorrect, veuillez consulter la documentation du fournisseur de services S3 pour configurer l'ID de région", - "255": "Le site cible a activé la protection contre le hotlinking, il est donc impossible de télécharger [%d] ressources" + "255": "Le site cible a activé la protection contre le hotlinking, il est donc impossible de télécharger [%d] ressources", + "256": "Le chemin spécifié [%s] contient un chemin d'espace de travail parent [%s]" } } diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index c41e00141..8d14bcfb0 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender עלול למחוק בטעות את הליבה, למחוק נתונים ולהפחית משמעותית את הביצועים. מומלץ להוסיף את נתיב ההתקנה ונתיב סביבת העבודה של SiYuan לרשימת החריגים", "253": "דוחס את הקובץ [%s], אנא המתן...", "254": "[Region ID] מזהה האזור שגוי, אנא עיין בתיעוד ספק שירותי S3 כדי להגדיר את מזהה האזור", - "255": "האתר היעד הפעיל הגנה על קישורים חמים, ולכן לא ניתן להוריד [%d] משאבים" + "255": "האתר היעד הפעיל הגנה על קישורים חמים, ולכן לא ניתן להוריד [%d] משאבים", + "256": "הנתיב שצוין [%s] מכיל נתיב מרחב עבודה אב [%s]" } } diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index b8d58c258..d367157d5 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender potrebbe eliminare erroneamente il kernel, eliminare i dati e ridurre significativamente le prestazioni. Si consiglia di aggiungere il percorso di installazione e lo spazio di lavoro di SiYuan all'elenco delle esclusioni", "253": "Compressione del file [%s], attendere prego...", "254": "[Region ID] ID regione non corretto, si prega di consultare la documentazione del fornitore di servizi S3 per configurare l'ID regione", - "255": "Il sito di destinazione ha abilitato la protezione hotlink, quindi non è possibile scaricare [%d] risorse" + "255": "Il sito di destinazione ha abilitato la protezione hotlink, quindi non è possibile scaricare [%d] risorse", + "256": "Il percorso specificato [%s] ha un percorso di spazio di lavoro padre [%s]" } } diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index e004f80bc..71334659b 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender は、カーネルを誤って削除したり、データを削除したり、パフォーマンスを大幅に低下させたりする可能性があります。SiYuan のインストールパスとワークスペースパスを除外リストに追加することをお勧めします", "253": "ファイル [%s] を圧縮しています、お待ちください...", "254": "[Region ID] リージョンIDが正しくありません。S3サービスプロバイダーのドキュメントを参照してリージョンIDを設定してください", - "255": "ターゲットサイトはホットリンク保護を有効にしているため、[%d] 個のリソースをダウンロードできません" + "255": "ターゲットサイトはホットリンク保護を有効にしているため、[%d] 個のリソースをダウンロードできません", + "256": "指定されたパス [%s] の親にワークスペースパス [%s] が存在します" } } diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index 8908992e7..334f58e9b 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender może błędnie usunąć jądro, usunąć dane i znacznie obniżyć wydajność. Zaleca się dodanie ścieżki instalacji i przestrzeni roboczej SiYuan do listy wykluczeń", "253": "Kompresja pliku [%s], proszę czekać...", "254": "[Region ID] Nieprawidłowy identyfikator regionu, proszę zapoznać się z dokumentacją dostawcy usług S3 w celu skonfigurowania identyfikatora regionu", - "255": "Docelowa strona włączyła ochronę przed hotlinkowaniem, [%d] zasobów nie można pobrać" + "255": "Docelowa strona włączyła ochronę przed hotlinkowaniem, [%d] zasobów nie można pobrać", + "256": "Określona ścieżka [%s] ma nadrzędną ścieżkę przestrzeni roboczej [%s]" } } diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index f1ab0f0f4..a7f391b86 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender может ошибочно удалить ядро, удалить данные и значительно снизить производительность. Рекомендуется добавить путь установки и рабочее пространство SiYuan в список исключений", "253": "Сжатие файла [%s], пожалуйста, подождите...", "254": "[Region ID] Неправильный идентификатор региона, пожалуйста, обратитесь к документации поставщика услуг S3 для настройки идентификатора региона", - "255": "Целевой сайт включил защиту от хотлинков, [%d] ресурсов невозможно скачать" + "255": "Целевой сайт включил защиту от хотлинков, [%d] ресурсов невозможно скачать", + "256": "Указанный путь [%s] имеет родительский путь рабочей области [%s]" } } diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 429bde4e5..6bd327442 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender 可能會誤殺內核、誤刪數據和嚴重降低運行性能,建議將思源安裝路徑和工作空間路徑添加到排除列表", "253": "正在壓縮文件 [%s],請稍等...", "254": "[Region ID] 不正確,請參考 S3 服務提供商的文檔配置地域 ID", - "255": "目標站點啟用了防盜鏈,[%d] 個資源無法下載" + "255": "目標站點啟用了防盜鏈,[%d] 個資源無法下載", + "256": "指定的路徑 [%s] 父級存在工作空間路徑 [%s]" } } diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index f953e7532..df14003ad 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1585,6 +1585,7 @@ "252": "\uD83D\uDEA8 Microsoft Defender 可能会误杀内核、误删数据和严重降低运行性能,建议将思源安装路径和工作空间路径添加到排除列表", "253": "正在压缩文件 [%s],请稍等...", "254": "[Region ID] 不正确,请参考 S3 服务提供商的文档配置地域 ID", - "255": "目标站点启用了防盗链,[%d] 个资源无法下载" + "255": "目标站点启用了防盗链,[%d] 个资源无法下载", + "256": "指定的路径 [%s] 父级存在工作空间路径 [%s]" } } diff --git a/kernel/api/workspace.go b/kernel/api/workspace.go index 970215f78..323019243 100644 --- a/kernel/api/workspace.go +++ b/kernel/api/workspace.go @@ -297,6 +297,19 @@ func setWorkspaceDir(c *gin.Context) { } } + // 检查路径是否在已有的工作空间路径中 + pathIsWorkspace := util.IsWorkspaceDir(path) + if !pathIsWorkspace { + for p := filepath.Dir(path); "" != p; p = filepath.Dir(p) { + if util.IsWorkspaceDir(p) { + ret.Code = -1 + ret.Msg = fmt.Sprintf(model.Conf.Language(256), path, p) + ret.Data = map[string]interface{}{"closeTimeout": 7000} + return + } + } + } + workspacePaths, err := util.ReadWorkspacePaths() if err != nil { ret.Code = -1 diff --git a/kernel/util/path.go b/kernel/util/path.go index b9f4f9f7b..6c81828f3 100644 --- a/kernel/util/path.go +++ b/kernel/util/path.go @@ -341,3 +341,13 @@ func GetAbsPathInWorkspace(relPath string) (string, error) { func IsAbsPathInWorkspace(absPath string) bool { return IsSubPath(WorkspaceDir, absPath) } + +// IsWorkspaceDir 判断指定目录是否是工作空间目录。 +func IsWorkspaceDir(dir string) bool { + conf := filepath.Join(dir, "conf", "conf.json") + data, err := os.ReadFile(conf) + if nil != err { + return false + } + return strings.Contains(string(data), "kernelVersion") +}