Questions & Answers

SOLVED
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

Type a product name