diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json
index a0c9c9d01..ed79df10d 100644
--- a/app/appearance/langs/en_US.json
+++ b/app/appearance/langs/en_US.json
@@ -1089,7 +1089,7 @@
"6": "Create notebook [%s] folder [%s] failed: %s",
"7": "Remove notebook [%s] path [%s] failed: %s",
"8": "Check update failed",
- "9": "A new version is available, please browse the release announcement %s",
+ "9": "\uD83D\uDE80 A new version is available, please browse the release announcement %s",
"10": "Is the latest version",
"11": "\uD83D\uDCE2 系統公告:%s",
"12": "Query asset failed [%s]",
diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json
index cef6684e9..7f42a4832 100644
--- a/app/appearance/langs/es_ES.json
+++ b/app/appearance/langs/es_ES.json
@@ -1089,7 +1089,7 @@
"6": "Crear cuaderno [%s] carpeta [%s] falló: %s",
"7": "Eliminar libreta [%s] ruta [%s] falló: %s",
"8": "Comprobar la actualización falló",
- "9": "Una nueva versión está disponible, por favor, busque el anuncio de lanzamiento %s",
+ "9": "\uD83D\uDE80 Una nueva versión está disponible, por favor, busque el anuncio de lanzamiento %s",
"10": "Es la última versión",
"11": "\uD83D\uDCE2 Anuncio del sistema: %s",
"12": "Fallo en la consulta de activos [%s]",
diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json
index cb8776bfa..0339c9a48 100644
--- a/app/appearance/langs/fr_FR.json
+++ b/app/appearance/langs/fr_FR.json
@@ -1089,7 +1089,7 @@
"6": "La création du dossier du carnet de notes [%s] dossier [%s] failed: %s",
"7": "La suppression du carnet de notes [%s] path [%s] a échoué : %s",
"8": "La vérification de la mise à jour a échoué",
- "9": "Une nouvelle version est disponible, veuillez consulter l'annonce de la version %s",
+ "9": "\uD83D\uDE80 Une nouvelle version est disponible, veuillez consulter l'annonce de la version %s",
"10": "C'est la dernière version",
"11": "\uD83D\uDCE2 Annonce système : %s",
"12": "Échec de la requête asset [%s]",
diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json
index fa59afbbd..97efab286 100644
--- a/app/appearance/langs/zh_CHT.json
+++ b/app/appearance/langs/zh_CHT.json
@@ -1089,7 +1089,7 @@
"6": "在筆記本 [%s] 下建立新資料夾 [%s] 失敗:%s",
"7": "在筆記本 [%s] 下刪除 [%s] 失敗:%s",
"8": "檢查更新失敗",
- "9": "有新版本可用,請瀏覽發佈公告 %s",
+ "9": "\uD83D\uDE80 有新版本可用,請瀏覽發佈公告 %s",
"10": "已是最新版",
"11": "\uD83D\uDCE2 系統公告:%s",
"12": "查詢資料檔失敗 [%s]",
diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json
index ee5122631..0cd787a4b 100644
--- a/app/appearance/langs/zh_CN.json
+++ b/app/appearance/langs/zh_CN.json
@@ -1089,7 +1089,7 @@
"6": "在笔记本 [%s] 下创建新文件夹 [%s] 失败:%s",
"7": "在笔记本 [%s] 下删除 [%s] 失败:%s",
"8": "检查更新失败",
- "9": "有新版本可用,请浏览发布公告 %s",
+ "9": "\uD83D\uDE80 有新版本可用,请浏览发布公告 %s",
"10": "已是最新版",
"11": "\uD83D\uDCE2 系统公告:%s",
"12": "查询资源文件失败 [%s]",
diff --git a/app/src/config/search.ts b/app/src/config/search.ts
index 22dab0fcc..8dfd93cc9 100644
--- a/app/src/config/search.ts
+++ b/app/src/config/search.ts
@@ -61,7 +61,8 @@ export const initConfigSearch = (element: HTMLElement, app: App) => {
// 搜索
getLang(["search", "searchLimit", "searchLimit1", "memo", "name", "alias", "keywordsLimit",
"doc", "headings", "list1", "listItem", "code", "math", "table", "quote", "superBlock", "paragraph",
- "indexAssetPath", "embedBlock", "database"]),
+ "indexAssetPath", "embedBlock", "database", "searchBackmention", "searchVirtualRef", "searchBlockAttr",
+ "searchBlockType", "searchCaseSensitive"]),
// 快捷键
getLang(["keymap", "keymapTip2"].concat(Object.keys(Constants.SIYUAN_KEYMAP.general))
diff --git a/kernel/api/export.go b/kernel/api/export.go
index 536f0806f..edf88d88c 100644
--- a/kernel/api/export.go
+++ b/kernel/api/export.go
@@ -26,6 +26,7 @@ import (
"time"
"github.com/88250/gulu"
+ "github.com/88250/lute/parse"
"github.com/gin-gonic/gin"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/model"
@@ -462,14 +463,24 @@ func exportPreviewHTML(c *gin.Context) {
if nil != arg["image"] {
image = arg["image"].(bool)
}
- name, content := model.ExportHTML(id, "", true, image, keepFold, merge)
+ name, content, node := model.ExportHTML(id, "", true, image, keepFold, merge)
// 导出 PDF 预览时点击块引转换后的脚注跳转不正确 https://github.com/siyuan-note/siyuan/issues/5894
content = strings.ReplaceAll(content, "http://"+util.LocalHost+":"+util.ServerPort+"/#", "#")
+ // Add `data-doc-type` and attribute when exporting image and PDF https://github.com/siyuan-note/siyuan/issues/9497
+ attrs := map[string]string{}
+ var typ string
+ if nil != node {
+ attrs = parse.IAL2Map(node.KramdownIAL)
+ typ = node.Type.String()
+ }
+
ret.Data = map[string]interface{}{
"id": id,
"name": name,
"content": content,
+ "attrs": attrs,
+ "type": typ,
}
}
@@ -493,7 +504,7 @@ func exportHTML(c *gin.Context) {
if nil != arg["merge"] {
merge = arg["merge"].(bool)
}
- name, content := model.ExportHTML(id, savePath, pdf, false, keepFold, merge)
+ name, content, _ := model.ExportHTML(id, savePath, pdf, false, keepFold, merge)
ret.Data = map[string]interface{}{
"id": id,
"name": name,
diff --git a/kernel/model/export.go b/kernel/model/export.go
index bcecb3990..863f26426 100644
--- a/kernel/model/export.go
+++ b/kernel/model/export.go
@@ -585,7 +585,7 @@ func ExportMarkdownHTML(id, savePath string, docx, merge bool) (name, dom string
return
}
-func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, dom string) {
+func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, dom string, node *ast.Node) {
savePath = strings.TrimSpace(savePath)
bt := treenode.GetBlockTree(id)
@@ -594,6 +594,7 @@ func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, do
}
tree := prepareExportTree(bt)
+ node = treenode.GetNodeInTree(tree, id)
if merge {
var mergeErr error