Hallo, Martin & Werner!
Jetzt mal "Butter zu de Fische":
Wie könnten die Kriterien aussehen, um einen bestimmten Hyperlink
eindeutig einem Inhaltsverzeichnis zuordnen zu können? Eine direkte Verbindung über eine Property des Hyperlinks scheint es nicht zu geben. Oder liege ich da falsch?
(Dann hätte sich der Rest dieses Postings erledigt, und wir können von einem Scheinproblem ausgehen!)
Ich zähle mal auf, was mir dabei einfällt:
I. Die Notation des Namens in Abhängikeit zur ID
II. Das Ziel ist immer eine Seite
III. Die Quelle ist immer vom Typ "Text"
Allerdings reichen alle diese drei Kriterien meiner Meinung nach NICHT aus, um das wasserdicht zu bekommen.
Kriterium I scheint zunächst ein "hartes" zu sein, wird aber von der Tatsache getrübt, dass sich beliebige Hyperlinks auch umbenennen lassen.
Also besteht die Chance, dass ausgerechnet der Name eines "normalen" Hyperlinks vom Typ "Text" und Ziel "Seite" dessen ID-Zahl mit einem Punkt davor entspricht. Und wer behauptet, das könne in 99,99% aller Fälle ausgeschlossen werden, der hat zwar Recht, aber ihr wisst ja: "Shit happens!"
Eine Ausweichmöglichkeit zu den 3 oben genannten Kriterien und gleichzeitig die einzige Möglichkeit einzelne TOCs voneinander zu unterscheiden wäre:
0. Alle infrage kommenden Hyperlinks und deren IDs speichern.
1. TOC aktualisieren => Nun fehlen IDs und neue sind hinzugekommen.
2. Fehlende Hyperlink-IDs in Array speichern => werden anschließend noch gebraucht.
3. Die zum TOC zugehörige Story ermitteln
4. Über die Story kommen wir an die ID des ersten zugehörigen TextContainers
5. Dessen ID in eine Variable speichern => wird später noch gebraucht.
1.-5 rückgängig machen, da wir den bestehenden TOC erhalten wollen (ein Update würde nachträglich eingefügte Formatierungen und editierten Text etc. zerstören).
6. Identifizierung der Story über die in 5. ermittelte ID.
?? Analyse des Texts-Objekts dieser Story auf mögliche "normale" Hyperlinks und deren IDs, die die Kriterien I. - III. erfüllen. (Wie? Noch habe ich keine Ahnung! Hyperlinks sind ja dummerweise keine Eigenschaft von Texts-Objekten, sondern ausschließlich des Document-Objekts!)
7. Deren IDs vom in 2. gespeicherten Hyperlink-ID-Array abziehen
=> Somit wären alle zum TOC gehörigen Hyperlinks bzw. deren IDs eindeutig identifiziert. Praktisches Problem: Das Dokument kann mehrere TOCs enthalten, die über mehrere tocStyles abgebildet werden.
Aber: nicht alle tocStyles müssen verwendet worden sein!
Mögliche Lösung: Update aller tocStyles über die
createTOC()-Methode mit zwei Parametern und das Löschen des neuen Textrahmens, der dabei erzeugt wird, wenn der tocStyle bisher nicht benutzt wurde.
Siehe folgendes Snippet:
Dies alles bitte nur als Skizze betrachten.
Direktere Wege wären mir natürlich willkommen, aber solange das DOM über keinen Objekttyp "Toc" verfügt mit allen entsprechenden Methoden und Eigenschaften, ist das alles, so fürchte ich, nicht so einfach zu ermitteln.