diff --git a/apps/client/src/layouts/desktop_layout.tsx b/apps/client/src/layouts/desktop_layout.tsx index 17c77f8d8c..3ea349892c 100644 --- a/apps/client/src/layouts/desktop_layout.tsx +++ b/apps/client/src/layouts/desktop_layout.tsx @@ -31,6 +31,7 @@ import ScrollingContainer from "../widgets/containers/scrolling_container.js"; import ScrollPadding from "../widgets/scroll_padding.js"; import SearchResult from "../widgets/search_result.jsx"; import SharedInfo from "../widgets/shared_info.jsx"; +import OriginInfo from "../widgets/note_origin.jsx"; import SpacerWidget from "../widgets/spacer.js"; import SplitNoteContainer from "../widgets/containers/split_note_container.js"; import SqlResults from "../widgets/sql_result.js"; @@ -138,6 +139,7 @@ export default class DesktopLayout { .filling() .child(new ContentHeader() .child() + .child() .child() ) .child(new PromotedAttributesWidget()) diff --git a/apps/client/src/translations/ar/translation.json b/apps/client/src/translations/ar/translation.json index 027431e6ad..193f600543 100644 --- a/apps/client/src/translations/ar/translation.json +++ b/apps/client/src/translations/ar/translation.json @@ -512,7 +512,7 @@ "title": "الملاحظات المعدلة" }, "note_properties": { - "info": "معلومات" + "this_note_was_originally_taken_from": "" }, "backend_log": { "refresh": "تحديث" diff --git a/apps/client/src/translations/cn/translation.json b/apps/client/src/translations/cn/translation.json index 6113d096a2..75477f98dc 100644 --- a/apps/client/src/translations/cn/translation.json +++ b/apps/client/src/translations/cn/translation.json @@ -837,8 +837,7 @@ "search": "搜索" }, "note_properties": { - "this_note_was_originally_taken_from": "笔记来源:", - "info": "信息" + "this_note_was_originally_taken_from": "笔记来源:" }, "owned_attribute_list": { "owned_attributes": "拥有的属性" diff --git a/apps/client/src/translations/de/translation.json b/apps/client/src/translations/de/translation.json index 0dbfe34a91..d2dec3620e 100644 --- a/apps/client/src/translations/de/translation.json +++ b/apps/client/src/translations/de/translation.json @@ -830,8 +830,7 @@ "search": "Suchen" }, "note_properties": { - "this_note_was_originally_taken_from": "Diese Notiz stammt ursprünglich aus:", - "info": "Info" + "this_note_was_originally_taken_from": "Diese Notiz stammt ursprünglich aus:" }, "owned_attribute_list": { "owned_attributes": "Eigene Attribute" diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index ef9605d5eb..bb16a44cf9 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -837,8 +837,7 @@ "search": "Search" }, "note_properties": { - "this_note_was_originally_taken_from": "This note was originally taken from:", - "info": "Info" + "this_note_was_originally_taken_from": "This note was originally taken from:" }, "owned_attribute_list": { "owned_attributes": "Owned Attributes" diff --git a/apps/client/src/translations/es/translation.json b/apps/client/src/translations/es/translation.json index 007ea176bb..6593da0c36 100644 --- a/apps/client/src/translations/es/translation.json +++ b/apps/client/src/translations/es/translation.json @@ -836,8 +836,7 @@ "search": "Buscar" }, "note_properties": { - "this_note_was_originally_taken_from": "Esta nota fue tomada originalmente de:", - "info": "Información" + "this_note_was_originally_taken_from": "Esta nota fue tomada originalmente de:" }, "owned_attribute_list": { "owned_attributes": "Atributos propios" diff --git a/apps/client/src/translations/fr/translation.json b/apps/client/src/translations/fr/translation.json index fe9e28ba99..7ca0025647 100644 --- a/apps/client/src/translations/fr/translation.json +++ b/apps/client/src/translations/fr/translation.json @@ -832,8 +832,7 @@ "search": "Recherche" }, "note_properties": { - "this_note_was_originally_taken_from": "Cette note est initialement extraite de :", - "info": "Infos" + "this_note_was_originally_taken_from": "Cette note est initialement extraite de :" }, "owned_attribute_list": { "owned_attributes": "Attributs propres" diff --git a/apps/client/src/translations/it/translation.json b/apps/client/src/translations/it/translation.json index 60a848e39c..a2a51a0ba4 100644 --- a/apps/client/src/translations/it/translation.json +++ b/apps/client/src/translations/it/translation.json @@ -1408,8 +1408,7 @@ "search": "Ricerca" }, "note_properties": { - "this_note_was_originally_taken_from": "Questa nota è stata originariamente tratta da:", - "info": "Informazioni" + "this_note_was_originally_taken_from": "Questa nota è stata originariamente tratta da:" }, "owned_attribute_list": { "owned_attributes": "Attributi posseduti" diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json index c33a3f8258..0ffd0fd249 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -688,7 +688,6 @@ "outside_hoisted": "このパスはホイストされたノートの外側にあるため、ホイストを解除する必要があります。" }, "note_properties": { - "info": "情報", "this_note_was_originally_taken_from": "このノートは元々以下から引用したものです:" }, "similar_notes": { diff --git a/apps/client/src/translations/pl/translation.json b/apps/client/src/translations/pl/translation.json index efaf425b32..bd88e7717a 100644 --- a/apps/client/src/translations/pl/translation.json +++ b/apps/client/src/translations/pl/translation.json @@ -448,8 +448,7 @@ "search": "Szukaj" }, "note_properties": { - "this_note_was_originally_taken_from": "Ta notatka oryginalnie została wzięta z:", - "info": "Info" + "this_note_was_originally_taken_from": "Ta notatka oryginalnie została wzięta z:" }, "owned_attribute_list": { "owned_attributes": "Posiadane atrybuty" diff --git a/apps/client/src/translations/pt/translation.json b/apps/client/src/translations/pt/translation.json index ba65215454..fb452cdf91 100644 --- a/apps/client/src/translations/pt/translation.json +++ b/apps/client/src/translations/pt/translation.json @@ -810,8 +810,7 @@ "search": "Pesquisar" }, "note_properties": { - "this_note_was_originally_taken_from": "Esta nota foi originalmente obtida de:", - "info": "Informações" + "this_note_was_originally_taken_from": "Esta nota foi originalmente obtida de:" }, "owned_attribute_list": { "owned_attributes": "Atributos próprios" diff --git a/apps/client/src/translations/pt_br/translation.json b/apps/client/src/translations/pt_br/translation.json index e8612e1bf2..7d356de185 100644 --- a/apps/client/src/translations/pt_br/translation.json +++ b/apps/client/src/translations/pt_br/translation.json @@ -1076,8 +1076,7 @@ "outside_hoisted": "Este caminho está fora de uma nota fixada e você teria que desafixar." }, "note_properties": { - "this_note_was_originally_taken_from": "Esta nota foi originalmente obtida de:", - "info": "Informações" + "this_note_was_originally_taken_from": "Esta nota foi originalmente obtida de:" }, "promoted_attributes": { "promoted_attributes": "Atributos Promovidos", diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json index 0f443bc530..2696a97612 100644 --- a/apps/client/src/translations/ro/translation.json +++ b/apps/client/src/translations/ro/translation.json @@ -897,7 +897,6 @@ "title": "Căile notiței" }, "note_properties": { - "info": "Informații", "this_note_was_originally_taken_from": "Această notiță a fost preluată original de la:" }, "note_type_chooser": { diff --git a/apps/client/src/translations/ru/translation.json b/apps/client/src/translations/ru/translation.json index 7301c56a60..2685e3764a 100644 --- a/apps/client/src/translations/ru/translation.json +++ b/apps/client/src/translations/ru/translation.json @@ -1067,7 +1067,6 @@ "archived": "Архивировано" }, "note_properties": { - "info": "Информация", "this_note_was_originally_taken_from": "Эта заметка была первоначально взята из:" }, "promoted_attributes": { diff --git a/apps/client/src/translations/tw/translation.json b/apps/client/src/translations/tw/translation.json index 037957e507..6457ea1b63 100644 --- a/apps/client/src/translations/tw/translation.json +++ b/apps/client/src/translations/tw/translation.json @@ -834,8 +834,7 @@ "search": "搜尋" }, "note_properties": { - "this_note_was_originally_taken_from": "筆記來源:", - "info": "資訊" + "this_note_was_originally_taken_from": "筆記來源:" }, "owned_attribute_list": { "owned_attributes": "自有屬性" diff --git a/apps/client/src/translations/uk/translation.json b/apps/client/src/translations/uk/translation.json index dac2f920ca..3e0e73fb3f 100644 --- a/apps/client/src/translations/uk/translation.json +++ b/apps/client/src/translations/uk/translation.json @@ -939,8 +939,7 @@ "outside_hoisted": "Цей шлях знаходиться поза межами закріпленої нотатки і вам доведеться відкріпити." }, "note_properties": { - "this_note_was_originally_taken_from": "Цю нотатку було спочатку взято з:", - "info": "Інформація" + "this_note_was_originally_taken_from": "Цю нотатку було спочатку взято з:" }, "owned_attribute_list": { "owned_attributes": "Власні Атрибути" diff --git a/apps/client/src/widgets/note_origin.tsx b/apps/client/src/widgets/note_origin.tsx new file mode 100644 index 0000000000..bf6f0ccfcf --- /dev/null +++ b/apps/client/src/widgets/note_origin.tsx @@ -0,0 +1,43 @@ +import { t } from "../services/i18n"; +import { useNoteContext, useTriliumEvent, useTriliumOption } from "./react/hooks"; +import { useEffect, useState } from "preact/hooks"; +import attributes from "../services/attributes"; +import InfoBar from "./react/InfoBar"; +import RawHtml from "./react/RawHtml"; +import FNote from "../entities/fnote"; + +export default function OriginInfo() { + const { note } = useNoteContext(); + const [link, setLink] = useState(); + + function refresh() { + if (!note) return; + const pageUrl = getPageUrl(note); + if (!pageUrl) { + setLink(undefined); + return; + } + setLink(`${pageUrl}`); + } + + useEffect(refresh, [note]); + useTriliumEvent("entitiesReloaded", ({ loadResults }) => { + if (loadResults.getAttributeRows().find((attr) => attr.type === "label" && attr.name?.toString() === "pageUrl" && attributes.isAffecting(attr, note))) { + refresh(); + } + }); + + return ( + + {link && ( + + )} + + ) +} + +function getPageUrl(note: FNote) { + return note.getOwnedLabelValue("pageUrl"); +} \ No newline at end of file diff --git a/apps/client/src/widgets/ribbon/NotePropertiesTab.tsx b/apps/client/src/widgets/ribbon/NotePropertiesTab.tsx deleted file mode 100644 index 9dc1574c72..0000000000 --- a/apps/client/src/widgets/ribbon/NotePropertiesTab.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { t } from "../../services/i18n"; -import { useNoteLabel } from "../react/hooks"; -import { TabContext } from "./ribbon-interface"; - -/** - * TODO: figure out better name or conceptualize better. - */ -export default function NotePropertiesTab({ note }: TabContext) { - const [ pageUrl ] = useNoteLabel(note, "pageUrl"); - - return ( - - { pageUrl && ( - - {t("note_properties.this_note_was_originally_taken_from")} {pageUrl} - - )} - - ) -} diff --git a/apps/client/src/widgets/ribbon/RibbonDefinition.ts b/apps/client/src/widgets/ribbon/RibbonDefinition.ts index 9f19707cbb..fbd8f15d7d 100644 --- a/apps/client/src/widgets/ribbon/RibbonDefinition.ts +++ b/apps/client/src/widgets/ribbon/RibbonDefinition.ts @@ -1,6 +1,5 @@ import ScriptTab from "./ScriptTab"; import EditedNotesTab from "./EditedNotesTab"; -import NotePropertiesTab from "./NotePropertiesTab"; import NoteInfoTab from "./NoteInfoTab"; import SimilarNotesTab from "./SimilarNotesTab"; import FilePropertiesTab from "./FilePropertiesTab"; @@ -59,13 +58,6 @@ export const RIBBON_TAB_DEFINITIONS: TabConfiguration[] = [ show: ({ note }) => note?.type === "book" || note?.type === "search", toggleCommand: "toggleRibbonTabBookProperties" }, - { - title: t("note_properties.info"), - icon: "bx bx-info-square", - content: NotePropertiesTab, - show: ({ note }) => !!note?.getLabelValue("pageUrl"), - activate: true - }, { title: t("file_properties.title"), icon: "bx bx-file",