Die Samera-Templates basieren auf Dust.js und wurden um Funktionen für Samera erweitert. Die Grundlagen für Dust.js entnehmen Sie bitte der Dust.js Dokumentation.


Templates können in der Seite an beliebigen Stellen eingebunden werden. Dazu wird ein <script>-Tag mit dem Attribut type="samera" verwendet.


Mit dem rerender-Attribut kann angegeben werden, bei welchem Event das Template neu gerendert werden soll.


Beispiel:


<script type="samera" rerender="Cart.ItemAdded">
    Ausgabe Warenkorb
</script>


Somit wird der Warenkorb automatisch aktualisiert, wenn der Besucher ein Angebot dem Warenkorb hinzugefügt hat.


Es ist auch möglich auf alle Events einer Kategorie zu reagieren, dazu verwendet man bspw. Cart.* auf auf alle Events der Kategorie Cart zu reagieren.


Samera-spezifische Erweiterungen


Filter


Es wurden folgende Filter hinzugefügt:


url

Dieser Filter wird verwendet, um mit Hilfe der Konfiguration map aus einer ID eine URL zu generieren.

money

Dieser Filter stellt Geldbeträge richtig formatiert dar.

decrement

Verringert den Eingabeparameter um 1.

increment

Erhöht den Eingabeparameter um 1.

dump

Dieser Filter ist beim Entwickeln sehr nützlich und ermöglicht die Ausgabe eines Objektes im vollen Umfang.


Beispiel (der Punkt bezieht sich immer auf das aktuelle Objekt):


{@load resource="roomcategories/35"}
    {.|dump|s}
{/load}

Ausgabe:

{
    "id": 35,
    "name": "Einzelzimmer",
    "teaser": "Einzelzimmer Teaser",
    "description": "Zimmer fuer eine Person",
    "minimumOccupancy": 1,
    "maximumOccupancy": 1,
    "showInPriceListCount": 1,
    ...
}

nl

Wandelt Zeilenumbrüche (\n) in <br> um.

textile

Samera verwendet ein Subset der Markup-Sprache Textile um Texte einfach formatieren zu können. Dieser Filter wandelt Textile-Markup in HTML um.

keywords

Dieser Filter wandelt Keywords innerhalb von einem Text um.

t

Dieser Filter ist eine Kombination aus den Filtern textile und keywords und führt diese hintereinander aus.


Achtung: Um das automatische Umwandeln in HTML von Dust.js zu vermeiden (z.B. bei Verwendung von dump, textile, keywords, t, ...) muss der Filter s angehängt werden:


{.|dump|s}



Eigene Dust.js Filter und Helper


Es können eigene Dust.js Filter und Helper installiert werden. Dies erfolgt in Samera.initialize:


Samera.initialize({
    'hotel': '12345678',
    'language': 'de',
    'dust': {
        'filter': {
            'uppercase': function(v) { return v.toUpperCase(); }
        },
        'helper': {
            'customHelper': function(chunk, context, bodies, params) {
                return chunk.write('custom helper');
            }
        }
    }
});



Der Filter uppercase und der Helper customHelper können somit gleich wie native Filter bzw. Helper aufgerufen werden. Details zur Implementierung von Helpern entnehmen Sie bitte der Dust.js Dokumentation.



Ausgabe von Bildern


Bilder können mit dem Dust.js Helper @imageurl auf einfache Weise ausgegeben werden.


{@load resource="roomcategories"}
    {#roomCategories}
        {#mediums}
            <img src="{@imageurl id=id type="LT" /}" title="{name}" />
        {/mediums}
    {/roomCategories}
{/load}


Der Parameter type legt fest, welcher im Samera-Backend definierte Bildtyp verwendet werden soll.



Parameter


In den Samera-Templates sind GET-Parameter automatisch mittels {parameters.NAME} verfügbar, also bspw. {parameters.id} um bei einer Seite mit URL-Parameter '?id=42' den Wert 42 zur Verfügung zu haben.