Zum Hauptinhalt gehen

Unique IDs bei verschachtelten FS_CATALOG

Kommentare

5 Kommentare

  • Zendesk API User
    Author: mbergmann - 10/6/2017 16:43

    Hallo Andreas,

    das sollte sich folgendermaßen lösen lassen - ist zwar eher ein Workaround, dafür aber recht simpel:

    Definiere in den inneren Templates ein zusätzliches CMS_INPUT_DATE mit preset="created" und verstecke es per Regel. Dadurch wird es automatisch immer mit dem aktuellen Zeitstempel versehen und kann auch nicht geändert werden. Der Zeitstempel ist dabei immer der beim Hinzufügen des Elementes in den FS_CATALOG.

    Im Ausgabekanal nutzt Du dann als eindeutige ID z.B. den Hashcode oder auch die Millisekunden:

    $CMS_VALUE(st_date.hashCode)$ oder

    $CMS_VALUE(st_date.getTimeInMillis())$

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: andreas_schaedl - 10/18/2017 10:11

    Hallo Michael,

    vielen Dank für deine Antwort. Das ist tatsächlich eine recht geschickte Lösung. Ein Problem sehe ich hier aber:

    Kopiere ich jetzt eine der Umfragen  und füge sie woanders wieder ein, haben alle Fragen und Antworten die gleiche ID (gleiches Erstellungsdatum)

    Wir haben noch etwas tiefer gegraben und die Methode getIdentifiers() gefunden. (an der Stelle nochmal vielen Dank an mhenke​)

    Im Sectiontemplate einer Frage ergibt sich dann für:

    $CMS_VALUE(#this.getIdentifiers())$ <br>

    $-- #this.class = de.espirit.firstspirit.generate.IdentifiableCatalogCard$IdentifiableCatalogCardItem --$

    $CMS_FOR(answer,st_answers)$

         $-- answer.class = de.espirit.firstspirit.generate.IdentifiableCatalogCard --$

         $CMS_VALUE(answer.getIdentifiers())$ <br>

    $CMS_END_FOR$

    Der folgende Output:

    [st_questions, c3b21191-9f53-455f-b587-17205e3938ad]

    [st_questions, c3b21191-9f53-455f-b587-17205e3938ad, st_answers, 6e0cb9b2-5ec1-46f0-bf3c-82adda693168]

    [st_questions, c3b21191-9f53-455f-b587-17205e3938ad, st_answers, 0c95592b-bd69-4fcd-9b40-ac034210759b]

    [st_questions, c3b21191-9f53-455f-b587-17205e3938ad, st_answers, 6bf0a543-49d8-4b49-9464-7f84ed50a5ba]

    Somit erhält man für jedes Element eine UUID, sogar inklusive Eltern-Element (Im Fall der Antworten). Spricht etwas gegen dieses Vorgehen? Gibt es einen Grund, warum diese Methode nicht in der Dokumentation auftaucht? (oder habe ich sie nur übersehen?)

    Danke und viele Grüße,

    Andreas

    0
  • Zendesk API User
    Author: mbergmann - 10/18/2017 16:44

    Hallo Andreas,

    gegen die Verwendung von getIdentifiers() spricht, dass sie nicht in der API bzw. Doku steht und es sich somit um interne Implementierungsdetails handelt, die theoretisch jederzeit geändert werden können. Also würde ich eher davon abraten. Ich hatte vorher tatsächlich selber nach so etwas geschaut ;-)

    Zu deinem "Kopierproblem": Hier könntest Du einfach als "finalen" Identifier die Kombination aus der ID des Absatzes / Datensatzes (also des enthaltenden Elementes, je nachdem was es bei Dir ist) und der "Zeitstempel-ID" nutzen.

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: andreas_schaedl - 10/19/2017 7:40

    Hallo Michael,

    dann werde ich es mit dem Zeitstempel lösen. Vielen Danke für deine Hilfe!

    Grüße,

    Andreas

    0
  • Zendesk API User
    Author: mbergmann - 10/19/2017 19:33

    Hallo Andreas,

    gerne! Grundsätzlich finde ich Deinen Anwendungsfall jetzt zwar nicht alltäglich aber trotzdem auch nicht total exotisch.

    Von daher wäre hier bestimmt ein Feature Request unter „Ideen“ (am besten mit Verweis auf diesen Thread) sinnvoll - intern sind ja „Identifier-taugliche“ Daten anscheinend vorhanden. Es geht ja nur darum, diese Daten (oder etwas daraus abgeleitetes „eindeutiges“) per API auf CATALOG-Elementen zugreifbar zu machen, so dass solche Workarounds nicht mehr nötig sind.

    Viele Grüße

    Michael

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.