jschei
I'm new here

UID eines Absatzes bestimmen

Jump to solution

Hallo zusammen,

ich suche eine Möglichkeit die UID eines Absatzes zu ermitteln. Per .getUID() erhalte ich allerdings eine UnsupportedOperationException. Vermutlich, weil die UID nur im Seitenkontext eindeutig ist. Im Eigenschafts-Tab vom Absatz-Objekt, scheint aber eine UID zu existieren (die auch bei gleichen UID's hochgezählt wird):

absatz.jpg

Gibt es eine Möglichkeit an diese UID heranzukommen?

Danke und Gruß

Jonathan

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Jonathan,

technisch gesehen haben Absätze keine eindeutigen UIDs - bzw. gar keine UIDs. Per Beanshell kann man z.B. problemlos zwei Absätze mit demselben Namen anlegen.

Der Eigenschafts-Dialog ist an dieser Stelle etwas missverständlich.

Wenn Du für einen Absatz etwas eindeutiges haben willst, geht das nur über die numerische ID.

Viele Grüße

Michael

View solution in original post

0 Kudos
6 Replies
mbergmann
Crownpeak employee

Hallo Jonathan,

technisch gesehen haben Absätze keine eindeutigen UIDs - bzw. gar keine UIDs. Per Beanshell kann man z.B. problemlos zwei Absätze mit demselben Namen anlegen.

Der Eigenschafts-Dialog ist an dieser Stelle etwas missverständlich.

Wenn Du für einen Absatz etwas eindeutiges haben willst, geht das nur über die numerische ID.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

danke für die Info, ich hatte es mir schon fast gedacht.

Ich suche quasi eine Möglichkeit die Absätze von 2 Seiten zu "matchen". Die eine Seite ist das Original, die andere eine Kopie des Originals. Sind sie "gematcht" möchte ich die Revisionen der Absätze vergleichen. Ich denke aber eine Möglichkeit gefunden zu haben, eine Kopie eines Absatzes zu finden: .compareTo().

Durch ausprobieren herausgefunden, dass die Methode beide Absätze "matcht", egal welche ID, welchen Content oder Namen sie haben. Erzeuge ich nun von dem Absatz eine neue Kopie auf der selben Seite erhält die Kopie ja im Eigenschaftsfenster einen inkrementierten Referenznamen und .compareTo() liefert beim Vergleich plötzlich nicht mehr 0 zurück!? 

Kann es also sein, dass die Methode compareTo() trotzdem den Referenznamen verwendet, der auch im Eigenschaftsfenster sichtbar ist (das ist für mich die einzig logische Erklärung)? Wenn ja wäre das für mich ideal, wenn nein: woran macht die compareTo()-Methode den Vergleich fest?

Danke und Gruß

Jonathan

0 Kudos
mbergmann
Crownpeak employee

Hallo Jonathan,

woran die Methode das fest macht weiß ich nicht, kann sein dass es der "Referenzname" ist - den bekommst Du übrigens mit getName() auf einem Absatz. Wenn das für Dich passt würde ich hier eher auf getName() gehen.

Die Frage ist allerdings, wie Du damit umgehst wenn ein Absatz "mein_absatz" von einer anderen Seite kopiert wird, die Zielseite aber schon einen anderen Absatz "mein_absatz" hat - dann bekäme die Kopie ja auch den Namen "mein_absatz_1".

Ich würde aber generell den Vergleich anhand des Namens für recht instabil halten (er ist ja auch gar nicht für so ein Szenario gedacht).

Vielleicht kannst Du kurz den Anwendungsfall erklären, wie und warum hier kopiert wird und wozu Du trotzdem die Verbindung Kopie => Original brauchst. Vielleicht kann man das ja auch als extra Funktion über ein Script einbauen und dieses Script könnte dann Metadaten setzen - erstmal nur als grobe Idee.

Viele Grüße

Michael

0 Kudos

Hi Michael,

Danke für die schnelle Antwort.

Der Anwendungsfall ist wie folgt: Es gibt eine Seite die quasi als Template fungiert. Von dieser Seite erzeuge ich mehrere Kopien. Der Redakteur soll die Möglichkeit haben die Seite um zusätzliche Absätze zu erweitern bzw. die Absätze zu ändern (Absatzreferenzen kommen also nicht in Frage 😞 ).

Wenn sich nun das Template (z.B. neue oder geänderte Absätze) ändert, sollen die Änderungen an die Kopien weitergegeben werden, ohne das die Individuellen Absätze entfernt/geändert werden. Daher muss ich durch alle Absätze laufen und den kopierten Absatz mit dem Original-Absatz vergleichen.

Ich hoffe ich habe es verständlich erklärt.

Danke und Gruß

Jonathan

0 Kudos
mbergmann
Crownpeak employee

Hallo Jonathan,

ich verstehe das jetzt so, dass wenn ein Redakteuer eine Absatz-Kopie bearbeitet hat, diese dann sozusagen "vom Original gelöst" werden soll, also bei Änderungen am Original eben nicht mehr geändert werden soll, richtig?

Mal als Idee: Man könnte dazu ein InlineEditItems-Plugin bauen, mit dem man eine Absatzreferenz in eine Kopie umwandelt. Dann könnte man initial mit Absatzreferenzen arbeiten und wenn der Redakteur was ändern will, muss er zunächst die Absatzreferenz explizit in eine Kopie umwandeln.

Hätte vielleicht den Vorteil, dass der "Status" (=ändert sich immer mit vs. Kopie) immer klar ist.

Viele Grüße

Michael

Hallo Michael,

klingt nach einem sehr guten Ansatz, der alle Probleme löst. Vielen Dank!

Danke und Gruß

Jonathan

0 Kudos