diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 008ca2017..7641f359d 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -134,6 +134,7 @@ "inlineMath": "Inline-Formel", "inlineMemo": "Inline-Notiz", "blockRef": "Referenz-Ankertext", + "fileAnnotationRef": "PDF-Anmerkungsankertext", "kbd": "Tastatur", "mark": "Markierung", "s": "Durchgestrichen", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index d6ecff2f9..36a3a1c74 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -134,6 +134,7 @@ "inlineMath": "Inline formula", "inlineMemo": "Inline memo", "blockRef": "Ref anchor text", + "fileAnnotationRef": "PDF annotation anchor text", "kbd": "Keyboard", "mark": "Mark", "s": "Strikethrough", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index faf991ed3..7608d5f9f 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -133,7 +133,8 @@ "strong": "negrita", "inlineMath": "Fórmula en línea", "inlineMemo": "Nota en línea", - "blockRef": "texto de anclaje de referencia", + "blockRef": "Texto de anclaje de referencia", + "fileAnnotationRef": "Texto de anclaje de la anotación PDF", "kbd": "Teclado", "mark": "Marca", "s": "Tachado", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 5b2b90447..165fa91b1 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -133,7 +133,8 @@ "strong": "Audacieux", "inlineMath": "Formule en ligne", "inlineMemo": "Mémo en ligne", - "blockRef": "texte d'ancrage de référence", + "blockRef": "Texte d'ancrage de référence", + "fileAnnotationRef": "Texte d'ancrage de l'annotation PDF", "kbd": "Clavier", "mark": "Marquer", "s": "Barré", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 2f8470c12..70b33b9ea 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -134,6 +134,7 @@ "inlineMath": "מתמטיקה פנימית", "inlineMemo": "הערה פנימית", "blockRef": "טקסט עוגן ייחוס", + "fileAnnotationRef": "טקסט עוגן של הערת PDF", "kbd": "מקלדת", "mark": "ציון", "s": "קו מחיקה", diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index 3158bf286..c0bc7d400 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -134,6 +134,7 @@ "inlineMath": "Formula in linea", "inlineMemo": "Memo in linea", "blockRef": "Testo ancora di riferimento", + "fileAnnotationRef": "Testo di ancoraggio dell'annotazione PDF", "kbd": "Tastiera", "mark": "Evidenzia", "s": "Barrato", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 3024c1eb5..0c0bb2d76 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -134,6 +134,7 @@ "inlineMath": "インライン数式", "inlineMemo": "インラインメモ", "blockRef": "アンカーテキストを引用する", + "fileAnnotationRef": "PDF 注釈アンカーテキスト", "kbd": "キーボード", "mark": "ハイライト", "s": "取り消し線", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index 5343f6acf..a7d7f97c9 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -134,6 +134,7 @@ "inlineMath": "Formuła w linii", "inlineMemo": "Notatka w linii", "blockRef": "Tekst zakotwiczenia ref", + "fileAnnotationRef": "Odnośnik do adnotacji PDF", "kbd": "Klawiatura", "mark": "Zaznacz", "s": "Przekreślenie", diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index b436c66bd..31faf25d7 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -134,6 +134,7 @@ "inlineMath": "Встраиваемая формула", "inlineMemo": "Встраиваемая заметка", "blockRef": "Текст анкора ссылки", + "fileAnnotationRef": "Анкор текста аннотации PDF", "kbd": "Клавиатура", "mark": "Знак", "s": "Перечеркнуто", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 4f6ed44ae..84d01acd4 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -134,6 +134,7 @@ "inlineMath": "行級公式", "inlineMemo": "行級備註", "blockRef": "引用錨文本", + "fileAnnotationRef": "PDF 標註錨文本", "kbd": "鍵盤", "mark": "高亮", "s": "刪除", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 466c34ba5..07a994722 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -134,6 +134,7 @@ "inlineMath": "行级公式", "inlineMemo": "行级备注", "blockRef": "引用锚文本", + "fileAnnotationRef": "PDF 标注锚文本", "kbd": "键盘", "mark": "高亮", "s": "删除", diff --git a/app/src/constants.ts b/app/src/constants.ts index 0959536bf..2915e5c74 100644 --- a/app/src/constants.ts +++ b/app/src/constants.ts @@ -622,6 +622,7 @@ export abstract class Constants { "inlineMath": false, "inlineMemo": true, "blockRef": false, + "fileAnnotationRef": false, "kbd": true, "mark": true, "s": true, diff --git a/app/src/types/config.d.ts b/app/src/types/config.d.ts index 713b53d0a..af1d6422c 100644 --- a/app/src/types/config.d.ts +++ b/app/src/types/config.d.ts @@ -2138,6 +2138,10 @@ declare namespace Config { * @default false */ blockRef?: boolean; + /** + * Replace file annotation refs + */ + fileAnnotationRef?: boolean; /** * Replace kdb elements * @default true diff --git a/kernel/api/search.go b/kernel/api/search.go index e4b567461..bab4b9ef8 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -122,7 +122,7 @@ func findReplace(c *gin.Context) { } replaceTypes := map[string]bool{} - // text, imgText, imgTitle, imgSrc, aText, aTitle, aHref, code, em, strong, inlineMath, inlineMemo, kbd, mark, s, sub, sup, tag, u + // text, imgText, imgTitle, imgSrc, aText, aTitle, aHref, code, em, strong, inlineMath, inlineMemo, blockRef, fileAnnotationRef kbd, mark, s, sub, sup, tag, u // docTitle, codeBlock, mathBlock, htmlBlock if nil != arg["replaceTypes"] { replaceTypesArg := arg["replaceTypes"].(map[string]interface{}) diff --git a/kernel/model/search.go b/kernel/model/search.go index 05a0d37e1..0ec88bc9d 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -767,6 +767,20 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids n.TextMarkBlockRefSubtype = "s" } } + } else if n.IsTextMarkType("file-annotation-ref") { + if !replaceTypes["fileAnnotationRef"] { + return ast.WalkContinue + } + + if 0 == method { + if strings.Contains(n.TextMarkTextContent, keyword) { + n.TextMarkTextContent = strings.ReplaceAll(n.TextMarkTextContent, keyword, replacement) + } + } else if 3 == method { + if nil != r && r.MatchString(n.TextMarkTextContent) { + n.TextMarkTextContent = r.ReplaceAllString(n.TextMarkTextContent, replacement) + } + } } } return ast.WalkContinue diff --git a/kernel/model/storage.go b/kernel/model/storage.go index b69d20744..33cac1ca1 100644 --- a/kernel/model/storage.go +++ b/kernel/model/storage.go @@ -195,29 +195,31 @@ type CriterionTypes struct { } type CriterionReplaceTypes struct { - Text bool `json:"text"` - ImgText bool `json:"imgText"` - ImgTitle bool `json:"imgTitle"` - ImgSrc bool `json:"imgSrc"` - AText bool `json:"aText"` - ATitle bool `json:"aTitle"` - AHref bool `json:"aHref"` - Code bool `json:"code"` - Em bool `json:"em"` - Strong bool `json:"strong"` - InlineMath bool `json:"inlineMath"` - InlineMemo bool `json:"inlineMemo"` - Kbd bool `json:"kbd"` - Mark bool `json:"mark"` - S bool `json:"s"` - Sub bool `json:"sub"` - Sup bool `json:"sup"` - Tag bool `json:"tag"` - U bool `json:"u"` - DocTitle bool `json:"docTitle"` - CodeBlock bool `json:"codeBlock"` - MathBlock bool `json:"mathBlock"` - HtmlBlock bool `json:"htmlBlock"` + Text bool `json:"text"` + ImgText bool `json:"imgText"` + ImgTitle bool `json:"imgTitle"` + ImgSrc bool `json:"imgSrc"` + AText bool `json:"aText"` + ATitle bool `json:"aTitle"` + AHref bool `json:"aHref"` + Code bool `json:"code"` + Em bool `json:"em"` + Strong bool `json:"strong"` + InlineMath bool `json:"inlineMath"` + InlineMemo bool `json:"inlineMemo"` + BlockRef bool `json:"blockRef"` + FileAnnotationRef bool `json:"fileAnnotationRef"` + Kbd bool `json:"kbd"` + Mark bool `json:"mark"` + S bool `json:"s"` + Sub bool `json:"sub"` + Sup bool `json:"sup"` + Tag bool `json:"tag"` + U bool `json:"u"` + DocTitle bool `json:"docTitle"` + CodeBlock bool `json:"codeBlock"` + MathBlock bool `json:"mathBlock"` + HtmlBlock bool `json:"htmlBlock"` } var criteriaLock = sync.Mutex{}