mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-12 23:21:23 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
e1d71b15af
@ -211,6 +211,10 @@
|
||||
"dataRepoKeyTip1": "The data repo is used to encrypt and save data snapshots. Snapshots can be created and rolled back in the data history",
|
||||
"dataRepoKeyTip2": "All devices must use the same key, if the keys are inconsistent, the data cannot be synced to the cloud",
|
||||
"dataRepoKey": "Data repo key",
|
||||
"dataRepoPurge": "Data repo purge",
|
||||
"dataRepoPurgeTip": "Delete all unreferenced snapshots and related data objects",
|
||||
"dataRepoPurgeConfirm": "Purging the data repo will completely delete all unreferenced snapshots and related data objects, are you sure to purge?",
|
||||
"purge": "Purge",
|
||||
"plsChoose": "Please choose first",
|
||||
"clearMessage": "Read",
|
||||
"freeSub": "Free Trial Subscription",
|
||||
@ -777,7 +781,7 @@
|
||||
"about2": "Use on browser",
|
||||
"about3": "Please use the Chrome browser and keep it in the same network as the computer, port <code class='fn__code'>${port}</code>(In addition to the random port, the first started workspace will also automatically listen to <code class='fn__code'>6806</code> as a fixed port, so that it is convenient for the browser to clip extensions or other external programs to call the kernel interface), the addresses that may be connected are as follows: ",
|
||||
"about4": "Open browser",
|
||||
"about5": "Access Authorization Code",
|
||||
"about5": "Access authorization code",
|
||||
"about6": "After configuration, it will be used as the access authentication password, leave it blank to close the authentication",
|
||||
"about9": "Automatically upload error messages and diagnostic data",
|
||||
"about10": "After enabling, it will automatically upload error information and diagnostic data through the <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a> SDK, which does not involve personal privacy data so that developers can fix bugs. The application will be closed automatically after modification, please restart manually",
|
||||
@ -1109,6 +1113,9 @@
|
||||
"197": "Currently the editor is in read-only mode. If you need to edit content, please switch to edit mode",
|
||||
"198": "This is not a valid Data archive. If the archive was exported from [Doc tree], please import it from [Doc tree]",
|
||||
"199": "This is not a valid .sy.zip archive. If the archive was exported from [Settings], please import it from [Settings]",
|
||||
"200": "The response time of the global search is slow. It is recommended to adjust [Settings - Search - Number of search results displayed] to 64 or a smaller value. For more suggestions, please refer to the performance optimization chapter of the user guide"
|
||||
"200": "The response time of the global search is slow. It is recommended to adjust [Settings - Search - Number of search results displayed] to 64 or a smaller value. For more suggestions, please refer to the performance optimization chapter of the user guide",
|
||||
"201": "Failed to purge data repo: %s",
|
||||
"202": "Cleaning data repo...",
|
||||
"203": "The data repo is purged, [%d] snapshots and [%d] data objects have been deleted, and a total of [%s] disk space has been released"
|
||||
}
|
||||
}
|
||||
|
@ -211,6 +211,10 @@
|
||||
"dataRepoKeyTip1": "El repositorio de datos se utiliza para cifrar y guardar instantáneas de datos. Las instantáneas pueden crearse y revertirse en el historial de datos",
|
||||
"dataRepoKeyTip2": "Todos los dispositivos deben usar la misma clave, si las claves son inconsistentes, los datos no se pueden sincronizar con la nube",
|
||||
"dataRepoKey": "Clave del repositorio de datos",
|
||||
"dataRepoPurge": "Purga del repositorio de datos",
|
||||
"dataRepoPurgeConfirm": "La purga del repositorio de datos eliminará por completo todas las instantáneas sin referencia y los objetos de datos relacionados, ¿está seguro de purgar?",
|
||||
"purge": "Purgar",
|
||||
"dataRepoPurgeTip": "Purga todas las instantáneas sin referencia y los objetos de datos relacionados",
|
||||
"plsChoose": "Por favor, elija primero",
|
||||
"clearMessage": "Leer",
|
||||
"freeSub": "Suscripción de prueba gratuita",
|
||||
@ -1109,6 +1113,9 @@
|
||||
"197": "Actualmente, el editor se encuentra en modo de solo lectura. Si necesita editar contenido, cambie al modo de edición",
|
||||
"198": "Este no es un archivo data.zip válido. Si el archivo se exportó de [Árbol de documentos], importalo de [Árbol de documentos]",
|
||||
"199": "Este no es un archivo .sy.zip válido. Si el archivo se exportó desde [Configuración], impórtelo desde [Configuración]",
|
||||
"200": "El tiempo de respuesta de la búsqueda global es lento. Se recomienda ajustar [Configuración - Búsqueda - Número de resultados de búsqueda mostrados] a 64 o un valor menor. Para obtener más sugerencias, consulte el capítulo de optimización del rendimiento de la guía del usuario"
|
||||
"200": "El tiempo de respuesta de la búsqueda global es lento. Se recomienda ajustar [Configuración - Búsqueda - Número de resultados de búsqueda mostrados] a 64 o un valor menor. Para obtener más sugerencias, consulte el capítulo de optimización del rendimiento de la guía del usuario",
|
||||
"201": "Error al purgar el repositorio de datos: %s",
|
||||
"202": "Limpiando repositorio de datos...",
|
||||
"203": "El repositorio de datos se purgó, [%d] instantáneas y [%d] objetos de datos se eliminaron y se liberó un total de [%s] espacio en disco"
|
||||
}
|
||||
}
|
||||
|
@ -210,6 +210,10 @@
|
||||
"dataRepoKeyTip1": "Le référentiel de données est utilisé pour chiffrer et enregistrer des instantanés de données. Des instantanés peuvent être créés et restaurés dans l'historique des données",
|
||||
"dataRepoKeyTip2": "Tous les appareils doivent utiliser la même clé, si les clés sont incohérentes, les données ne peuvent pas être synchronisées avec le cloud",
|
||||
"dataRepoKey": "Clé de référentiel de données",
|
||||
"dataRepoPurge": "Purger le référentiel de données",
|
||||
"dataRepoPurgeTip": "Purger tous les instantanés non référencés et les objets de données associés",
|
||||
"dataRepoPurgeConfirm": "La purge du référentiel de données supprimera complètement tous les instantanés non référencés et les objets de données associés, êtes-vous sûr de purger ?",
|
||||
"purge": "Purger",
|
||||
"plsChoose": "Veuillez d'abord choisir",
|
||||
"clearMessage": "Lire",
|
||||
"freeSub": "Abonnement d'essai gratuit",
|
||||
@ -776,7 +780,7 @@
|
||||
"about2": "Utiliser sur le navigateur",
|
||||
"about3": "Veuillez utiliser le navigateur Chrome et le garder sur le même réseau que l'ordinateur, port <code class='fn__code'>${port}</code>(En plus du port aléatoire, le premier espace de travail démarré écoutera également automatiquement <code class='fn__code'>6806</code> en tant que port fixe, de sorte qu'il est pratique pour le navigateur de couper des extensions ou d'autres programmes externes pour appeler l'interface du noyau), les adresses pouvant être connectées sont les suivantes: ",
|
||||
"about4": "Ouvrir le navigateur",
|
||||
"about5": "Accès Code d'autorisation",
|
||||
"about5": "Accès code d'autorisation",
|
||||
"about6": "Configuré comme mot de passe d'authentification d'accès, laisser vide pour désactiver l'authentification.",
|
||||
"about9": "Télécharger automatiquement les messages d'erreur et les données de diagnostic",
|
||||
"about10": "Après l'activation, il télécharge automatiquement les informations d'erreur et les données de diagnostic via le SDK <a href=\"https://sentry.io\" target=\"_blank\">Sentry</a>, qui n'implique pas de données de confidentialité personnelles afin que les développeurs peut corriger des bogues. L'application sera fermée automatiquement après modification, veuillez la redémarrer manuellement.",
|
||||
@ -1108,6 +1112,9 @@
|
||||
"197": "Actuellement, l'éditeur est en mode lecture seule. Si vous devez modifier le contenu, veuillez passer en mode édition",
|
||||
"198": "Ceci n'est pas une archive data.zip valide. Si l'archive a été exportée depuis [Doc tree], veuillez l'importer depuis [Doc tree]",
|
||||
"199": "Ceci n'est pas une archive .sy.zip valide. Si l'archive a été exportée depuis [Paramètres], veuillez l'importer depuis [Paramètres]",
|
||||
"200": "Le temps de réponse de la recherche globale est lent. Il est recommandé d'ajuster [Paramètres - Recherche - Nombre de résultats de recherche affichés] à 64 ou à une valeur inférieure. Pour plus de suggestions, veuillez vous référer au chapitre sur l'optimisation des performances de la notice"
|
||||
"200": "Le temps de réponse de la recherche globale est lent. Il est recommandé d'ajuster [Paramètres - Recherche - Nombre de résultats de recherche affichés] à 64 ou à une valeur inférieure. Pour plus de suggestions, veuillez vous référer au chapitre sur l'optimisation des performances de la notice",
|
||||
"201": "Échec de la purge du référentiel de données : %s",
|
||||
"202": "Nettoyage du référentiel de données...",
|
||||
"203": "Le référentiel de données est purgé, [%d] instantanés et [%d] objets de données ont été supprimés, et un total de [%s] espace disque a été libéré"
|
||||
}
|
||||
}
|
||||
|
@ -211,6 +211,10 @@
|
||||
"dataRepoKeyTip1": "數據倉庫用於加密保存數據快照,可在數據歷史中可創建快照和回滾快照",
|
||||
"dataRepoKeyTip2": "所有設備必須使用相同的密鑰,如果密鑰不一致則無法雲端同步數據",
|
||||
"dataRepoKey": "數據倉庫密鑰",
|
||||
"dataRepoPurge": "數據倉庫清理",
|
||||
"dataRepoPurgeTip": "刪除所有未引用的快照和相關數據對象",
|
||||
"dataRepoPurgeConfirm": "清理數據倉庫會徹底刪除所有未引用的快照和相關數據對象,確定進行清理嗎?",
|
||||
"purge": "清理",
|
||||
"plsChoose": "請先進行選擇",
|
||||
"clearMessage": "已讀",
|
||||
"freeSub": "免費試用訂閱",
|
||||
@ -1109,6 +1113,9 @@
|
||||
"197": "目前編輯器正處於只讀模式狀態,如果需要編輯內容,請切換到編輯模式",
|
||||
"198": "這不是一個有效的 Data 壓縮包。如果該數據包是從 [文檔樹] 導出的,請從 [文檔樹] 導入",
|
||||
"199": "這不是一個有效的 .sy.zip 壓縮包。如果該數據包是從 [設置] 中導出的,請從 [設置] 中導入",
|
||||
"200": "全局搜索響應時間較慢,建議將 [設置 - 搜索 - 搜索結果顯示數] 調整為 64 或更小的值,更多建議請參考用戶指南性能優化章節"
|
||||
"200": "全局搜索響應時間較慢,建議將 [設置 - 搜索 - 搜索結果顯示數] 調整為 64 或更小的值,更多建議請參考用戶指南性能優化章節",
|
||||
"201": "清理數據倉庫失敗:%s",
|
||||
"202": "正在清理數據倉庫...",
|
||||
"203": "數據倉庫清理完畢,已刪除 [%d] 個快照和 [%d] 個數據對象,共釋放 [%s] 磁盤空間"
|
||||
}
|
||||
}
|
||||
|
@ -211,6 +211,10 @@
|
||||
"dataRepoKeyTip1": "数据仓库用于加密保存数据快照,可在数据历史中可创建快照和回滚快照",
|
||||
"dataRepoKeyTip2": "所有设备必须使用相同的密钥,如果密钥不一致则无法云端同步数据",
|
||||
"dataRepoKey": "数据仓库密钥",
|
||||
"dataRepoPurge": "数据仓库清理",
|
||||
"dataRepoPurgeTip": "删除所有未引用的快照和相关数据对象",
|
||||
"dataRepoPurgeConfirm": "清理数据仓库会彻底删除所有未引用的快照和相关数据对象,确定进行清理吗?",
|
||||
"purge": "清理",
|
||||
"plsChoose": "请先进行选择",
|
||||
"clearMessage": "已读",
|
||||
"freeSub": "免费试用订阅",
|
||||
@ -1112,6 +1116,9 @@
|
||||
"197": "目前编辑器正处于只读模式状态,如果需要编辑内容,请切换到编辑模式",
|
||||
"198": "这不是一个有效的 Data 压缩包。如果该数据包是从 [文档树] 导出的,请从 [文档树] 导入",
|
||||
"199": "这不是一个有效的 .sy.zip 压缩包。如果该数据包是从 [设置] 中导出的,请从 [设置] 中导入",
|
||||
"200": "全局搜索响应时间较慢,建议将 [设置 - 搜索 - 搜索结果显示数] 调整为 64 或更小的值,更多建议请参考用户指南性能优化章节"
|
||||
"200": "全局搜索响应时间较慢,建议将 [设置 - 搜索 - 搜索结果显示数] 调整为 64 或更小的值,更多建议请参考用户指南性能优化章节",
|
||||
"201": "清理数据仓库失败:%s",
|
||||
"202": "正在清理数据仓库...",
|
||||
"203": "数据仓库清理完毕,已删除 [%d] 个快照和 [%d] 个数据对象,共释放 [%s] 磁盘空间"
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
"id": "20200924101256-f8b1sbi",
|
||||
"title": "Ref Content Block",
|
||||
"type": "doc",
|
||||
"updated": "20230420123252"
|
||||
"updated": "20230420190018"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
@ -496,6 +496,132 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185940-emsw72v",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185940-emsw72v",
|
||||
"updated": "20230420185940"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "In the "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "code",
|
||||
"TextMarkTextContent": "(("
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " search result list:"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185940-z74ufig",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20230420185940-z74ufig",
|
||||
"updated": "20230420190018"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185940-g8mpohi",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20230420185940-g8mpohi",
|
||||
"updated": "20230420190018"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185940-ro5d977",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185940-ro5d977",
|
||||
"updated": "20230420190018"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "Direct "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Enter"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " or "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Click"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " will use dynamic anchor text"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185940-ksegxpq",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20230420185940-ksegxpq",
|
||||
"updated": "20230420190017"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185940-ajmbc76",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185940-ajmbc76",
|
||||
"updated": "20230420190017"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "Press "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Ctrl+Enter"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " or "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Ctrl+Click"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " to use static anchor text"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420123242-xsz318y",
|
||||
"Type": "NodeHeading",
|
||||
|
@ -6,7 +6,7 @@
|
||||
"id": "20200813013559-sgbzl5k",
|
||||
"title": "引用内容块",
|
||||
"type": "doc",
|
||||
"updated": "20230420123152"
|
||||
"updated": "20230420190027"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
@ -423,7 +423,7 @@
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20220623195559-r0greck",
|
||||
"updated": "20220623195906"
|
||||
"updated": "20230420185816"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
@ -543,6 +543,132 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185651-fqx6ww6",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185651-fqx6ww6",
|
||||
"updated": "20230420185832"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "在 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "code",
|
||||
"TextMarkTextContent": "(("
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 搜索结果列表中:"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185742-g0vtyx7",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20230420185742-g0vtyx7",
|
||||
"updated": "20230420190027"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185742-14djxj3",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20230420185742-14djxj3",
|
||||
"updated": "20230420190025"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185742-brqgayg",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185742-brqgayg",
|
||||
"updated": "20230420190025"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "直接 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Enter"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 或者 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Click"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 将使用动态锚文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185748-ehr9h7w",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20230420185748-ehr9h7w",
|
||||
"updated": "20230420190027"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185748-sb1thir",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185748-sb1thir",
|
||||
"updated": "20230420190027"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "按住 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Ctrl+Enter"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 或者 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Ctrl+Click"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 将使用静态锚文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420122954-zw10k6f",
|
||||
"Type": "NodeHeading",
|
||||
|
@ -5,7 +5,7 @@
|
||||
"Properties": {
|
||||
"id": "20211226120247-63nd8y5",
|
||||
"title": "引用内容塊",
|
||||
"updated": "20230420123224"
|
||||
"updated": "20230420190022"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
@ -501,6 +501,132 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185856-hoesuce",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185856-hoesuce",
|
||||
"updated": "20230420185856"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "在 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "code",
|
||||
"TextMarkTextContent": "(("
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 搜索結果列表中:"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185856-fpkt2wv",
|
||||
"Type": "NodeList",
|
||||
"ListData": {},
|
||||
"Properties": {
|
||||
"id": "20230420185856-fpkt2wv",
|
||||
"updated": "20230420190022"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185856-4v3g6nz",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20230420185856-4v3g6nz",
|
||||
"updated": "20230420190021"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185856-tnhsmet",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185856-tnhsmet",
|
||||
"updated": "20230420190021"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "直接 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Enter"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 或者 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Click"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 將使用動態錨文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420185856-jg6anpy",
|
||||
"Type": "NodeListItem",
|
||||
"ListData": {
|
||||
"BulletChar": 42,
|
||||
"Marker": "Kg=="
|
||||
},
|
||||
"Properties": {
|
||||
"id": "20230420185856-jg6anpy",
|
||||
"updated": "20230420190022"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"ID": "20230420185856-nh72xao",
|
||||
"Type": "NodeParagraph",
|
||||
"Properties": {
|
||||
"id": "20230420185856-nh72xao",
|
||||
"updated": "20230420190022"
|
||||
},
|
||||
"Children": [
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": "按住 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Ctrl+Enter"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 或者 "
|
||||
},
|
||||
{
|
||||
"Type": "NodeTextMark",
|
||||
"TextMarkType": "kbd",
|
||||
"TextMarkTextContent": "Ctrl+Click"
|
||||
},
|
||||
{
|
||||
"Type": "NodeText",
|
||||
"Data": " 將使用靜態錨文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "20230420123224-22gd6st",
|
||||
"Type": "NodeHeading",
|
||||
|
@ -108,6 +108,16 @@ export const about = {
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<label class="fn__flex b3-label config__item">
|
||||
<div class="fn__flex-1">
|
||||
${window.siyuan.languages.dataRepoPurge}
|
||||
<div class="b3-label__text">${window.siyuan.languages.dataRepoPurgeTip}</div>
|
||||
</div>
|
||||
<div class="fn__space"></div>
|
||||
<button id="purgeRepo" class="b3-button b3-button--outline fn__size200 fn__flex-center">
|
||||
<svg><use xlink:href="#iconUpload"></use></svg>${window.siyuan.languages.purge}
|
||||
</button>
|
||||
</label>
|
||||
<label class="fn__flex b3-label config__item">
|
||||
<div class="fn__flex-1">
|
||||
${window.siyuan.languages.systemLog}
|
||||
@ -305,6 +315,12 @@ export const about = {
|
||||
});
|
||||
});
|
||||
});
|
||||
about.element.querySelector("#purgeRepo").addEventListener("click", () => {
|
||||
confirmDialog("♻️ " + window.siyuan.languages.dataRepoPurge, window.siyuan.languages.dataRepoPurgeConfirm, () => {
|
||||
fetchPost("/api/repo/purgeRepo", {}, () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
const networkServeElement = about.element.querySelector("#networkServe") as HTMLInputElement;
|
||||
networkServeElement.addEventListener("change", () => {
|
||||
fetchPost("/api/system/setNetworkServe", {networkServe: networkServeElement.checked}, () => {
|
||||
|
@ -71,6 +71,14 @@ export const initAbout = () => {
|
||||
<div class="b3-label__text">${window.siyuan.languages.dataRepoKeyTip1}</div>
|
||||
<div class="b3-label__text ft__error">${window.siyuan.languages.dataRepoKeyTip2}</div>
|
||||
</div>
|
||||
<div class="b3-label${window.siyuan.config.readonly ? " fn__none" : ""}">
|
||||
${window.siyuan.languages.dataRepoPurge}
|
||||
<div class="fn__hr"></div>
|
||||
<button class="b3-button b3-button--outline fn__block" id="purgeRepo">
|
||||
<svg><use xlink:href="#iconLock"></use></svg>${window.siyuan.languages.purge}
|
||||
</button>
|
||||
<div class="b3-label__text">${window.siyuan.languages.dataRepoPurgeTip}</div>
|
||||
</div>
|
||||
<div class="b3-label${window.siyuan.config.readonly ? " fn__none" : ""}">
|
||||
${window.siyuan.languages.about13}
|
||||
<span class="b3-label__text">${window.siyuan.config.api.token}</span>
|
||||
@ -243,6 +251,14 @@ export const initAbout = () => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
break;
|
||||
} else if (target.id === "purgeRepo") {
|
||||
confirmDialog("♻️ " + window.siyuan.languages.dataRepoPurge, window.siyuan.languages.dataRepoPurgeConfirm, () => {
|
||||
fetchPost("/api/repo/purgeRepo", {}, () => {
|
||||
});
|
||||
});
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
break;
|
||||
} else if (target.id === "token") {
|
||||
showMessage(window.siyuan.languages.copied);
|
||||
writeText(window.siyuan.config.api.token);
|
||||
|
@ -349,3 +349,15 @@ func resetRepo(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func purgeRepo(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
if err := model.PurgeRepo(); nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = fmt.Sprintf(model.Conf.Language(201), err.Error())
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -296,6 +296,7 @@ func ServeAPI(ginServer *gin.Engine) {
|
||||
ginServer.Handle("POST", "/api/repo/initRepoKey", model.CheckAuth, model.CheckReadonly, initRepoKey)
|
||||
ginServer.Handle("POST", "/api/repo/initRepoKeyFromPassphrase", model.CheckAuth, model.CheckReadonly, initRepoKeyFromPassphrase)
|
||||
ginServer.Handle("POST", "/api/repo/resetRepo", model.CheckAuth, model.CheckReadonly, resetRepo)
|
||||
ginServer.Handle("POST", "/api/repo/purgeRepo", model.CheckAuth, model.CheckReadonly, purgeRepo)
|
||||
ginServer.Handle("POST", "/api/repo/importRepoKey", model.CheckAuth, model.CheckReadonly, importRepoKey)
|
||||
ginServer.Handle("POST", "/api/repo/createSnapshot", model.CheckAuth, model.CheckReadonly, createSnapshot)
|
||||
ginServer.Handle("POST", "/api/repo/tagSnapshot", model.CheckAuth, model.CheckReadonly, tagSnapshot)
|
||||
|
@ -31,7 +31,7 @@ require (
|
||||
github.com/go-ole/go-ole v1.2.6
|
||||
github.com/goccy/go-json v0.10.1
|
||||
github.com/gofrs/flock v0.8.1
|
||||
github.com/imroc/req/v3 v3.33.2
|
||||
github.com/imroc/req/v3 v3.33.1
|
||||
github.com/jinzhu/copier v0.3.5
|
||||
github.com/json-iterator/go v1.1.12
|
||||
github.com/mattn/go-sqlite3 v2.0.3+incompatible
|
||||
@ -44,7 +44,7 @@ require (
|
||||
github.com/radovskyb/watcher v1.0.7
|
||||
github.com/sashabaranov/go-gpt3 v1.4.0
|
||||
github.com/shirou/gopsutil/v3 v3.23.2
|
||||
github.com/siyuan-note/dejavu v0.0.0-20230420022535-782a2dbfb757
|
||||
github.com/siyuan-note/dejavu v0.0.0-20230420110939-9dd849c38341
|
||||
github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75
|
||||
github.com/siyuan-note/eventbus v0.0.0-20230216103454-41885eac6c2b
|
||||
github.com/siyuan-note/filelock v0.0.0-20230417044524-125ee78b5cc9
|
||||
@ -115,7 +115,7 @@ require (
|
||||
github.com/quic-go/qpack v0.4.0 // indirect
|
||||
github.com/quic-go/qtls-go1-19 v0.3.2 // indirect
|
||||
github.com/quic-go/qtls-go1-20 v0.2.2 // indirect
|
||||
github.com/quic-go/quic-go v0.33.0 // indirect
|
||||
github.com/quic-go/quic-go v0.34.0 // indirect
|
||||
github.com/restic/chunker v0.4.0 // indirect
|
||||
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect
|
||||
github.com/shopspring/decimal v1.3.1 // indirect
|
||||
|
@ -8,8 +8,6 @@ github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5 h1:8HdZozCsXS
|
||||
github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/88250/gulu v1.2.3-0.20230321113152-38c4a3d73c37 h1:7ZMvlXDbH2sqaxowoAFcLjcdRN7ncVE0U1S2ukpUgac=
|
||||
github.com/88250/gulu v1.2.3-0.20230321113152-38c4a3d73c37/go.mod h1:pTWnjt+6qUqNnP9xltswsJxgCBVu3C7eW09u48LWX0k=
|
||||
github.com/88250/lute v1.7.6-0.20230410031701-6a4620b2bb83 h1:OzqkeGCDjZ+vlgk0tTbMIhh8oVEK3Tt6lqzTsCsOqxM=
|
||||
github.com/88250/lute v1.7.6-0.20230410031701-6a4620b2bb83/go.mod h1:+wUqx/1kdFDbWtxn9LYJlaCOAeol2pjSO6w+WJTVQsg=
|
||||
github.com/88250/lute v1.7.6-0.20230420041521-254a14e6b604 h1:exMPD8kyMIcyj2BmVepsScEVokMnBjblLSrNViAFQXY=
|
||||
github.com/88250/lute v1.7.6-0.20230420041521-254a14e6b604/go.mod h1:+wUqx/1kdFDbWtxn9LYJlaCOAeol2pjSO6w+WJTVQsg=
|
||||
github.com/88250/pdfcpu v0.3.14-0.20230401044135-c7369a99720c h1:Dl/8S9iLyPMTElnWIBxmjaLiWrkI5P4a21ivwAn5pU0=
|
||||
@ -165,8 +163,8 @@ github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq
|
||||
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
|
||||
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
|
||||
github.com/imroc/req/v3 v3.33.2 h1:mqphLIo++p+IPYdjgP/Wd5rqXUjKvuEIst2U+EsLIwQ=
|
||||
github.com/imroc/req/v3 v3.33.2/go.mod h1:cZ+7C3L/AYOr4tLGG16hZF90F1WzAdAdzt1xFSlizXY=
|
||||
github.com/imroc/req/v3 v3.33.1 h1:BZnyl+K0hXcJlZBHY2CqbPgmVc1pPJDzjn6aJfB6shI=
|
||||
github.com/imroc/req/v3 v3.33.1/go.mod h1:cZ+7C3L/AYOr4tLGG16hZF90F1WzAdAdzt1xFSlizXY=
|
||||
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
|
||||
github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
|
||||
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
||||
@ -256,8 +254,8 @@ github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc8
|
||||
github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI=
|
||||
github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E=
|
||||
github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM=
|
||||
github.com/quic-go/quic-go v0.33.0 h1:ItNoTDN/Fm/zBlq769lLJc8ECe9gYaW40veHCCco7y0=
|
||||
github.com/quic-go/quic-go v0.33.0/go.mod h1:YMuhaAV9/jIu0XclDXwZPAsP/2Kgr5yMYhe9oxhhOFA=
|
||||
github.com/quic-go/quic-go v0.34.0 h1:OvOJ9LFjTySgwOTYUZmNoq0FzVicP8YujpV0kB7m2lU=
|
||||
github.com/quic-go/quic-go v0.34.0/go.mod h1:+4CVgVppm0FNjpG3UcX8Joi/frKOH7/ciD5yGcwOO1g=
|
||||
github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE=
|
||||
github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg=
|
||||
github.com/restic/chunker v0.4.0 h1:YUPYCUn70MYP7VO4yllypp2SjmsRhRJaad3xKu1QFRw=
|
||||
@ -279,8 +277,8 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g
|
||||
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||
github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d h1:lvCTyBbr36+tqMccdGMwuEU+hjux/zL6xSmf5S9ITaA=
|
||||
github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw=
|
||||
github.com/siyuan-note/dejavu v0.0.0-20230420022535-782a2dbfb757 h1:WZ0ahzQ2rLJlry4GgMbVXYyG1tJpmbU2VXsdRZAq/D4=
|
||||
github.com/siyuan-note/dejavu v0.0.0-20230420022535-782a2dbfb757/go.mod h1:ltB1VyRo4A178+ykH74f3AEUliU0UwC6Dn7Ed6tF/8Y=
|
||||
github.com/siyuan-note/dejavu v0.0.0-20230420110939-9dd849c38341 h1:blIO+U273UDKZIY//CTjIZxJwt7VVVN+z1vlZ0k4tKs=
|
||||
github.com/siyuan-note/dejavu v0.0.0-20230420110939-9dd849c38341/go.mod h1:d3IU0Q9bbX/dwALEsTn56IWMvW63FML+OM83A+XCKb4=
|
||||
github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 h1:Bi7/7f29LW+Fm0cHc0J1NO1cZqyJwljSWVmfOqVZgaE=
|
||||
github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw=
|
||||
github.com/siyuan-note/eventbus v0.0.0-20230216103454-41885eac6c2b h1:828lTUW2C0uNiolODqoACu7J8sDUzswD4Xo04mUombg=
|
||||
|
@ -423,6 +423,29 @@ func ResetRepo() (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func PurgeRepo() (err error) {
|
||||
msg := Conf.Language(202)
|
||||
util.PushEndlessProgress(msg)
|
||||
defer util.PushClearProgress()
|
||||
|
||||
repo, err := newRepository()
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
stat, err := repo.Purge()
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
deletedIndexes := stat.Indexes
|
||||
deletedObjects := stat.Objects
|
||||
deletedSize := humanize.Bytes(uint64(stat.Size))
|
||||
msg = fmt.Sprintf(Conf.Language(203), deletedIndexes, deletedObjects, deletedSize)
|
||||
util.PushMsg(msg, 5000)
|
||||
return
|
||||
}
|
||||
|
||||
func InitRepoKeyFromPassphrase(passphrase string) (err error) {
|
||||
passphrase = gulu.Str.RemoveInvisible(passphrase)
|
||||
passphrase = strings.TrimSpace(passphrase)
|
||||
|
Loading…
Reference in New Issue
Block a user