Im head-Teil der Homepage muss das Samera-Script geladen werden:


<script src="https://hotel.samera.at/rest/v1/script"></script>


Am Ende der Seite muss Samera initialisiert werden. Dazu wird bspw. folgender Code verwendet:


<script>
    Samera.initialize({
        'hotel': '12345678',
        'language': 'de'
    });
</script>


Parameter

Folgende Parameter können definiert werden:


hotel

Hier wird der die ID des Hotels definiert. Diese erhalten Sie von uns.


language

Mit dem Parameter language kann die aktuelle Besuchersprache an Samera übermittelt werden. Texte werden dann, wenn definiert, in dieser Sprache ausgegeben. Sprachen müssen im Backend aktiviert werden. Es wird der ISO 639-1 Code verwendet (z.B. de, en, ...).


map

Es gibt die Möglichkeit, in den Samera-Templates interne Samera-IDs auf URLs zu mappen. Diese können als JavaScript-Map angegeben werden.


Beispiel

Samera.initialize({
    'hotel': '12345678',
    'map': {
        '21': 'http://www.samera.at/beispielseite1',
        '34': 'http://www.samera.at/beispielseite2',
        '54': 'http://www.samera.at/beispielseite3'
    }
});


Im Samera-Template kann die url-Funktion aufgerufen werden, um aus IDs wieder URLs zu machen:


<script type="samera">
    {@load resource="roomcategories"}
        {#roomCategories}
            Zimmer: {name}
        {/roomCategories}
    {/load}
</script>


on

Es kann auf bestimmte Ereignisse, die von Samera ausgelöst wurden, reagiert werden. Ein Anwendungsfall ist die Integration von Trackingcode (z.B. Google Analytics), die Weiterleitung des Besuchers beim Anfrage/Buchungsprozess auf Erfolgs- bzw. Fehlerseiten und die Fehlerbehandlung bei Formulareingaben.


Dazu wird der Parameter on verwendet. Der Datentyp davon ist auch eine JavaScript-Map. Als Key wird der Name des Ereignisses verwendet (s. Tabelle unten), der Wert kann entweder ein String oder eine Function sein. Strings müssen eine gültige URL sein, auf diese wird der Benutzer weitergeleitet, sobald das damit verknüpfte Ereignis eingetreten ist. Wird stattdessen eine Function angegeben, so wird diese bei Eintreten des Ereignisses ausgeführt. Als Argument wird eine JavaScript-Map übergeben, die Detailinformationen über das Ereignis enthält.


Beispiel


Samera.initialize({
    'hotel': '12345678',
    'on': {
        'Cart.ItemAdded': 'http://www.samera.at/warenkorb.html',
        'Inquiry.Created': 'http://www.samera.at/anfrage-erfolg.html',
        'Inquiry.Error': sameraFormValidationHandler
    }
});



Die Funktion sameraFormValidationHandler kann wie folgt definiert werden:


function sameraFormValidationHandler(data) {
    var e = data.errors;
    var ge = $('#globalErrorsContainer');
    $('.has-error').removeClass('has-error');
    ge.empty().show();
    for (i = 0; i < e.length; i++) {
        var label = $('label[for=' + e[i].field +']').html();
        if (e[i].error == 'required') {
            ge.append($('<li/>').html(label +' ist ein Pflichtfeld'));
        }
        if (e[i].error == 'min') {
            ge.append($('<li/>').html(label +' ist zu kurz'));
        }
        if (e[i].error == 'max') {
            ge.append($('<li/>').html(label +' ist zu lang'));
        }
        if (e[i].error == 'wrong_email_format') {
            ge.append($('<li/>').html('Ungültiges E-Mail Format'));
        }
        if (e[i].error == 'wrong_country') {
            ge.append($('<li/>').html('Ungültiges Land'));
        }
        $('[name=' + e[i].field + ']').parents('.form-group').addClass('has-error');
    }
}


Das HTML dazu:


<ul id="globalErrorsContainer"></ul>



Ereignisse

Ereignis
Beschreibung
Overlay.Opened
Wird ausgelöst, wenn der Besucher das Overlay öffnet.
Overlay.Closed
Wird ausgelöst, wenn der Besucher das Overlay schließt.
Cart.ItemAdded
Wird ausgelöst, wenn der Besucher ein Angebot in den Warenkorb gelegt hat.
Cart.ItemUpdated
Wird ausgelöst, wenn der Besucher ein Angebot im Warenkorb aktualisiert hat.
Cart.ItemRemoved
Wird ausgelöst, wenn der Besucher ein Angebot aus dem Warenkorb entfernt hat.
Inquiry.Created
Wird ausgelöst, wenn der Besucher eine Anfrage abgesendet hat.
Inquiry.Error
Wird ausgelöst, wenn eine Anfrage nicht abgesendet werden konnte, da Eingabefehler bestehen (Pflichtfelder nicht ausgefüllt, Länge über/unterschritten, Ungültige E-Mail-Adresse, ...).
Booking.Prepared
Wird ausgelöst, wenn die Besucherdaten für eine Buchung erfolgreich validiert wurden. Danach kann z.B. auf eine Seite weitergeleitet werden, um die Buchung zu überprüfen:

Samera.initialize({
    'hotel': '123456',
    'on': {
        'Booking.Prepared': '/buchung-pruefen.html'
    }
});
Booking.Created
Wird ausgelöst, wenn der Besucher eine Buchung abgesendet hat.
Booking.Error
Wird ausgelöst, wenn eine Buchung nicht abgesendet werden konnte, da Eingabefehler bestehen (Pflichtfelder nicht ausgefüllt, Länge über/unterschritten, Ungültige E-Mail-Adresse, ...).
Booking.PayError
Wird ausgelöst, wenn die Bezahlung einer Buchung durch den Payment-Service-Provider abgelehnt wurde.
Voucher.PreviewCreated
Wird ausgelöst, wenn der Besucher die Vorschau eines Gutscheines generiert. Im Event ist die URL zum Vorschaubild enthalten. Dieses sollte dann dargestellt werden.

Beispiel:
Samera.initialize({
    'hotel': '123456',
    'on': {
        'Voucher.PreviewCreated': function(response) {
            $("#preview").attr('src', response.data.url).show();
        }
    }
});
Voucher.Created
Wird ausgelöst, wenn der Besucher einen Gutschein gekauft hat.
Voucher.Error
Wird ausgelöst, wenn ein Gutschein nicht gekauft werden konnte, da Eingabefehler bestehen (Pflichtfelder nicht ausgefüllt, Länge über/unterschritten, Ungültige E-Mail-Adresse, ...).
RenderError
Technischer Fehler, das Samera-Template ist syntaktisch ungültig und konnte daher nicht interpretiert werden. Bitte überprüfen Sie das Template auf Tippfehler.






render

Mit dem Parameter render können Functions definiert werden, die dann automatisch aufgerufen werden, wenn ein Samera-Template gerendert wurde. Das erste Argument ist eine JavaScript-Map, die die Attribute id und renderCount enthält.

Beispiel


HTML

<script type="samera" id="myTemplate">

    Ein beliebiges Template mit der id "myTemplate".

</script>

Samera-Template

Samera.initialize({

    'hotel': '12345678',

    'render': {

        'myTemplate': function(e) {

            alert('Template ' + e.id + ' wurde zum ' + e.renderCount + '. mal gerendert');

        }

    }

});


overlay


Das Overlay kann mit dem Parameter overlay für die Hotelwebseite angepasst werden.

Beispiel


Zur Zeit kann nur die Hauptfarbe angepasst werden:

Samera.initialize({

    'hotel': '12345678',

    'overlay': {

        colors: {

            main: '83197F'

        }

    }

});


keyword


Die Ausgabe von Keywords kann speziell gesteuert werden, um bspw. ein Popover darzustellen. Der Wert des Parameters keyword muss eine Function sein. Diese erhält als Argument eine JavaScript-Map mit den Attributen name, description, url. Die Rückgabe dieser Funktion ist HTML, das anstelle des Keywords ausgegeben wird.

Beispiel


 Samera.initialize({

    'hotel': '12345678',

    'keyword': function(kw) {

        return '<a href="' + kw.url + '" class="keyword">' + kw.name + '<span>' + kw.description + '</span></a>';

    }

});


source


Dieser Parameter kann befüllt werden um die Quelle eines Besuchers (z. B. Newsletter) zu setzen. Der Wert ist eine beliebige Zeichenkette mit max. 256 Zeichen. Es reicht den Parameter nur beim ersten Aufruf zu setzen, er wird in der Session des Besuchers gespeichert. Dieser Wert wird bei Buchungen/Anfrage gespeichert und ist im samera-Backoffice sowie im Buchungsmail an das Hotel ersichtlich.