diff --git a/apps/client/src/layouts/desktop_layout.tsx b/apps/client/src/layouts/desktop_layout.tsx index 3128581a9..1e09f4f6a 100644 --- a/apps/client/src/layouts/desktop_layout.tsx +++ b/apps/client/src/layouts/desktop_layout.tsx @@ -30,6 +30,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"; @@ -139,6 +140,7 @@ export default class DesktopLayout { .filling() .child(new ContentHeader() .child() + .child() .child() ) .child() diff --git a/apps/client/src/translations/ar/translation.json b/apps/client/src/translations/ar/translation.json index 7ca6b5f07..c8c6332fd 100644 --- a/apps/client/src/translations/ar/translation.json +++ b/apps/client/src/translations/ar/translation.json @@ -515,7 +515,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 3b5ca6e2b..5770f09ae 100644 --- a/apps/client/src/translations/cn/translation.json +++ b/apps/client/src/translations/cn/translation.json @@ -840,8 +840,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 fca1a3adb..cc5b59734 100644 --- a/apps/client/src/translations/de/translation.json +++ b/apps/client/src/translations/de/translation.json @@ -837,8 +837,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 5e2934f34..ce8867392 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -841,8 +841,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 c677a3cb4..2239041c0 100644 --- a/apps/client/src/translations/es/translation.json +++ b/apps/client/src/translations/es/translation.json @@ -841,8 +841,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 a75952e43..63b84727d 100644 --- a/apps/client/src/translations/fr/translation.json +++ b/apps/client/src/translations/fr/translation.json @@ -835,8 +835,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 5abc0b210..6076cdeb5 100644 --- a/apps/client/src/translations/it/translation.json +++ b/apps/client/src/translations/it/translation.json @@ -1410,8 +1410,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 e5a96dcd1..a24c299b7 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -693,7 +693,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 6824d6bce..c53923c1a 100644 --- a/apps/client/src/translations/pl/translation.json +++ b/apps/client/src/translations/pl/translation.json @@ -447,8 +447,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 bf32931d7..90cb429e0 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 d5b011bb4..6bc121530 100644 --- a/apps/client/src/translations/pt_br/translation.json +++ b/apps/client/src/translations/pt_br/translation.json @@ -1070,8 +1070,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 0200e49bb..bc55fec3a 100644 --- a/apps/client/src/translations/ro/translation.json +++ b/apps/client/src/translations/ro/translation.json @@ -911,7 +911,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 3511e514e..ffeab0976 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 f93e87e45..ad6597b5c 100644 --- a/apps/client/src/translations/tw/translation.json +++ b/apps/client/src/translations/tw/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/uk/translation.json b/apps/client/src/translations/uk/translation.json index 7ab4ea461..855f1819e 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 000000000..bf6f0ccfc --- /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 9dc1574c7..000000000 --- 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 0eb63002a..6e03e5abe 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",