Zum Hauptinhalt gehen

Techinar: Neue Eingabekomponenten und DataAccessPlugins

Kommentare

6 Kommentare

  • Zendesk API User
    Author: philippr - 9/7/2016 11:16

    Danke für die gelungene Präsentation (es ergeben sich ungeahnte Möglichkeiten :smileywink:)

    Super, dass ihr die Beispielimplementierung und das Projekt zur Verfügung stellt, das erleichtert das "onboarding" erheblich!

    Könnt ihr in etwa abschätzen, was euch der Aufbau des PoC an Aufwand gekostet hat? Es sind ja schon ein paar Klassen zu schreiben bis dann alles wie gewünscht funktioniert...

    Viele Grüße,

    Philipp

    0
  • Zendesk API User
    Author: mbergmann - 9/7/2016 11:35

    Hallo Philipp,

    es sind zwar einige Klassen, in denen steckt aber oft nicht viel Code. Es kommt natürlich auch darauf an wieviele Aspekte man implementiert und wie einfach der Zugriff auf die (Fremd-)Objekte ist - insbesondere das Suchen.

    Wenn man generell in der FS-API und Modulentwicklung fit ist und zum ersten Mal ein DAP baut würde ich mal grob 3-7 Tage veranschlagen - je nach Umfang/Komplexität.

    Im gezeigten Beispiel werden (bewusst) recht viele Aspekte benutzt, dadurch ist das dort etwas mehr Code.

    Es geht teilweise auch einiges an Zeit für den "Kleinkram" drauf wie das Designen der Buttons. Dafür habe ich übrigens mal eine Utility-Klasse "MagicIcons" gebaut (wird auch im Beispiel benutzt) - damit braucht man nur noch ein Bild pro Button und die Farbvarianten (SA/CC) werden automatisch erzeugt.

    Mit Caching wird das Ganze dann natürlich etwas aufwändiger.

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: philippr - 9/7/2016 11:38

    Danke.

    Das liegt auch in dem Bereich den ich jetzt vom ersten Draufschauen veranschlagt hätte. War bei etwa 5 Tagen und wie du schon sagst, je nach dem um was es sich bei dem Drittsystem handelt kann das beliebig komplex werden...

    0
  • Zendesk API User
    Author: mbergmann - 9/7/2016 12:31

    Hallo zusammen,

    es kam die Frage auf wie man denn im Template an die "D"-Objekte kommt. Das ist extrem einfach: 

    $CMS_FOR(d, st_myFsIndex.values())$

         $CMS_VALUE(d.someMethodDefinedInD(someParam1, someParam2, .....))$

    $CMS_END_FOR$

    Das heißt: Beim Iterieren über den FS_INDEX mit values() ist die Iterationsvariable tatsächlich ein D und man kann alle Methoden darauf aufrufen, die man definiert hat.

    Ihr seht das auch im Beispielprojekt:

    In der Variante des FS_INDEX+DatasetDataAccessPlugin ist das D ein "Dataset" aus der FS-API. Im Tagging-Beispiel ist es ein "TagEntry"-Objekt aus dem Beispielmodul - da wird im Template z.B. der Titel ausgegeben mit

    $CMS_FOR(for_tag,st_tags_v52.values())$

       $CMS_VALUE(for_tag.getName(#global.language))$

       <br />

    $CMS_END_FOR$

    Im Modul gibt es dazu im TagEntry die Methode getName(Language lang).

    Achtung: Das funktioniert so allerdings nur in dem Template in dem der FS_INDEX auch direkt definiert ist und nicht wenn man in ein FormData eines anderen Objektes "hineingreift".

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: mbergmann - 9/9/2016 13:13

    Hallo zusammen,

    im Beispielprojekt war noch ein kleiner Copy/Paste-Fehler im Absatztemplate "product_links_index" - zur Ermittlung der ID der im FS_INDEX referenzierten Datensätze muss man natürlich über die Entity gehen:

    <a href="$CMS_REF(ss_product_details, contentId:_product.getEntity().id)$">

    Einen kleinen Kommentar habe ich auch noch ergänzt - wichtig ist hier die Info, dass das DatasetDataAccessPlugin eine Implementierung von DataAccessPlugin<Dataset> ist. Die "Ds" sind also in diesem Fall Dataset-Objekte aus der FirstSpirit-API.

    Ich habe gerade nochmal ein aktualisiertes Projekt hochgeladen.

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: rrichter - 12/2/2016 7:28

    SAVE-THE-DATE für das nächste Techinar am 14.12.2016!

    https://community.e-spirit.com/community/partner/blog/2016/12/01/techinar-riso--refactoring-isolation

    0

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