Technische ID als Identität der Notizen; Pfad wird zur Eigenschaft
Bisher war der Dateipfad die Identität einer Notiz: Umbenennen brach Verweise, und der Pfad tauchte in der Oberfläche auf (Tooltips, Menüpunkte "Dateiname ändern"/"Ordnerpfad ändern"). Jede Notiz trägt jetzt eine technische ID im Frontmatter (id: <uuid>), die nie wechselt; der Systempfad ist nur noch eine Eigenschaft. - ensure_ids ergänzt fehlende IDs beim Seitenaufbau (wie ensure_node_texts); frontmatter() schreibt sie bei jedem Anlegen als erste Zeile. - Doc, WikiDocEntry, FolderNode und Suchtreffer führen die ID mit; resolve_id löst sie auf den aktuellen relpath auf. - Commands sprechen IDs: archive_read/write/set_title/delete nehmen `id`, archive_create_doc/create_folder die ID des Elternknotens plus Namen, panel_archive_cmd den Zielknoten als ID. - Frontend adressiert durchgehend über IDs: Auswahl, Klapp-Zustand, Verlauf des Zurück-Knopfs, Wikilink-Sprünge, Suchtreffer-Vormerkung und der Zielordner-Baum des Archiv-Dialogs. - Der Pfad ist aus der Oberfläche verschwunden: die Menüpunkte zum Umbenennen von Datei und Ordner samt Commands (archive_rename, archive_move, archive_move_folder) sind entfallen — es gibt nur noch den Titel, Name und Titel können nicht mehr auseinanderlaufen. Offen dadurch: Verschieben im Baum fehlt (ToDo: Drag & Drop). Archiv-Dialog nebenbei überarbeitet: modales Popup im Design der Archiv-Ansicht mit Abbrechen und zuverlässigem Escape, Zielordner über einen einklappbaren Baum statt Pfadeingabe, zusätzlicher Knopf "Auf Platte legen" (panel_save_as); Archivieren öffnet keinen Dateimanager mehr.
This commit is contained in:
+8
-11
@@ -26,10 +26,9 @@ export const wikiTab: PanelTab = {
|
||||
);
|
||||
return initWikiView(container, {
|
||||
autoStart: ctx.standalone,
|
||||
readDoc: (relpath) => invoke("archive_read", { project: ctx.project, relpath }),
|
||||
writeDoc: (relpath, text) =>
|
||||
invoke("archive_write", { project: ctx.project, relpath, text }),
|
||||
setTitle: (relpath, title) => run("archive_set_title", { relpath, title }),
|
||||
readDoc: (id) => invoke("archive_read", { project: ctx.project, id }),
|
||||
writeDoc: (id, text) => invoke("archive_write", { project: ctx.project, id, text }),
|
||||
setTitle: (id, title) => run("archive_set_title", { id, title }),
|
||||
openWiki: ctx.openWiki,
|
||||
takePending: () => {
|
||||
const p = pendingSelect;
|
||||
@@ -37,11 +36,9 @@ export const wikiTab: PanelTab = {
|
||||
return p;
|
||||
},
|
||||
actions: {
|
||||
rename: (relpath, name) => run("archive_rename", { relpath, name }),
|
||||
remove: (relpath) => run("archive_delete", { relpath }),
|
||||
moveFolder: (folder, to) => run("archive_move_folder", { folder, to }),
|
||||
createFolder: (folder) => run("archive_create_folder", { folder }),
|
||||
createDoc: (folder, name) => run("archive_create_doc", { folder, name }),
|
||||
remove: (id) => run("archive_delete", { id }),
|
||||
createFolder: (parent, name) => run("archive_create_folder", { parent, name }),
|
||||
createDoc: (parent, name) => run("archive_create_doc", { parent, name }),
|
||||
},
|
||||
});
|
||||
},
|
||||
@@ -67,8 +64,8 @@ export const searchTab: PanelTab = {
|
||||
init: (container, ctx) =>
|
||||
initSearchView(
|
||||
container,
|
||||
(_path, relpath) => {
|
||||
pendingSelect = relpath;
|
||||
(_path, _relpath, id) => {
|
||||
pendingSelect = id;
|
||||
ctx.openWiki("tag:");
|
||||
},
|
||||
(raw) => {
|
||||
|
||||
Reference in New Issue
Block a user