From 25432c6912da2a61de70db789767348270ef84f0 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Mon, 17 Oct 2022 10:52:27 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=9F=A5=E8=AF=A2=E5=B5=8C=E5=85=A5?= =?UTF-8?q?=E5=9D=97=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=9D=A2=E5=8C=85=E5=B1=91=20https://github.?= =?UTF-8?q?com/siyuan-note/siyuan/issues/6184?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/appearance/langs/en_US.json | 1 + app/appearance/langs/es_ES.json | 1 + app/appearance/langs/fr_FR.json | 1 + app/appearance/langs/zh_CHT.json | 1 + app/appearance/langs/zh_CN.json | 1 + kernel/api/search.go | 7 ++++++- kernel/model/block.go | 13 ++++++++++--- kernel/model/search.go | 8 ++++---- 8 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 614e03184..770f6b109 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,5 @@ { + "breadcrumb": "Breadcrumb", "embedBlockBreadcrumb": "Embed Block Breadcrumb", "embedBlockBreadcrumbTip": "After enabling embed block will show breadcrumbs", "appearanceMode": "Appearance Mode", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index baa257457..88ba0f44c 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,5 @@ { + "miga de pan": "Miga de pan", "embedBlockBreadcrumb": "Incrustar migas de pan de bloque", "embedBlockBreadcrumbTip": "Después de habilitar el bloque incrustado, se mostrarán migas de pan", "appearanceMode": "Modo de apariencia", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 241466434..2d149807f 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,5 @@ { + "fil d'Ariane": "Fil d'Ariane", "embedBlockBreadcrumb": "Intégrer le fil d'Ariane du bloc", "embedBlockBreadcrumbTip": "Après avoir activé le bloc d'intégration, le fil d'Ariane s'affichera", "appearanceMode": "Mode d'apparence", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 6203ef89e..b777385b5 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,5 @@ { + "breadcrumb": "麵包屑", "embedBlockBreadcrumb": "嵌入塊麵包屑", "embedBlockBreadcrumbTip": "啟用後嵌入塊將顯示麵包屑", "appearanceMode": "外觀模式", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index cc83749fa..92fb27ff3 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,5 @@ { + "breadcrumb": "面包屑", "embedBlockBreadcrumb": "嵌入块面包屑", "embedBlockBreadcrumbTip": "启用后嵌入块将显示面包屑", "appearanceMode": "外观模式", diff --git a/kernel/api/search.go b/kernel/api/search.go index dc39a3d6e..ee2750d86 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -138,8 +138,13 @@ func searchEmbedBlock(c *gin.Context) { if nil != headingModeArg { headingMode = int(headingModeArg.(float64)) } + breadcrumb := false + breadcrumbArg := arg["breadcrumb"] + if nil != breadcrumbArg { + breadcrumb = breadcrumbArg.(bool) + } - blocks := model.SearchEmbedBlock(stmt, excludeIDs, headingMode) + blocks := model.SearchEmbedBlock(stmt, excludeIDs, headingMode, breadcrumb) ret.Data = map[string]interface{}{ "blocks": blocks, } diff --git a/kernel/model/block.go b/kernel/model/block.go index b1da7e96d..6d618a72e 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -381,7 +381,7 @@ func getBlock(id string) (ret *Block, err error) { return } -func getEmbeddedBlock(trees map[string]*parse.Tree, sqlBlock *sql.Block, headingMode int) (block *Block, blockPaths []*BlockPath) { +func getEmbeddedBlock(trees map[string]*parse.Tree, sqlBlock *sql.Block, headingMode int, breadcrumb bool) (block *Block, blockPaths []*BlockPath) { tree, _ := trees[sqlBlock.RootID] if nil == tree { tree, _ = loadTreeByBlockID(sqlBlock.RootID) @@ -434,8 +434,15 @@ func getEmbeddedBlock(trees map[string]*parse.Tree, sqlBlock *sql.Block, heading luteEngine.RenderOptions.ProtyleContenteditable = false // 不可编辑 dom := renderBlockDOMByNodes(nodes, luteEngine) block = &Block{Box: def.Box, Path: def.Path, HPath: b.HPath, ID: def.ID, Type: def.Type.String(), Content: dom} - if Conf.Editor.EmbedBlockBreadcrumb { - blockPaths = buildBlockBreadcrumb(def) + defBreadCrumb := def.IALAttr("breadcrumb") + if "" != defBreadCrumb { + if "true" == defBreadCrumb { + blockPaths = buildBlockBreadcrumb(def) + } + } else { + if Conf.Editor.EmbedBlockBreadcrumb { + blockPaths = buildBlockBreadcrumb(def) + } } if 1 > len(blockPaths) { blockPaths = []*BlockPath{} diff --git a/kernel/model/search.go b/kernel/model/search.go index a1775e329..2b3430c6b 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -43,12 +43,12 @@ type EmbedBlock struct { BlockPaths []*BlockPath `json:"blockPaths"` } -func SearchEmbedBlock(stmt string, excludeIDs []string, headingMode int) (ret []*EmbedBlock) { +func SearchEmbedBlock(stmt string, excludeIDs []string, headingMode int, breadcrumb bool) (ret []*EmbedBlock) { WaitForWritingFiles() - return searchEmbedBlock(stmt, excludeIDs, headingMode) + return searchEmbedBlock(stmt, excludeIDs, headingMode, breadcrumb) } -func searchEmbedBlock(stmt string, excludeIDs []string, headingMode int) (ret []*EmbedBlock) { +func searchEmbedBlock(stmt string, excludeIDs []string, headingMode int, breadcrumb bool) (ret []*EmbedBlock) { sqlBlocks := sql.SelectBlocksRawStmtNoParse(stmt, Conf.Search.Limit) var tmp []*sql.Block for _, b := range sqlBlocks { @@ -76,7 +76,7 @@ func searchEmbedBlock(stmt string, excludeIDs []string, headingMode int) (ret [] } for _, sb := range sqlBlocks { - block, blockPaths := getEmbeddedBlock(trees, sb, headingMode) + block, blockPaths := getEmbeddedBlock(trees, sb, headingMode, breadcrumb) if nil == block { continue }