Globals

Ein Globals-Objekt wird einem Anzeige-, Formular-, Update- oder E-Mail-Template in der Variablen globals übergeben.

Diese Variable ist global, d.h. sie ist auch in aufgerufenen Unter-Templates bekannt, ohne daß globals beim Aufruf an diese übergeben werden muß.

Das Globals-Objekt enthält globale Informationen und besitzt folgende Attribute:

appApp

Die App des aufgerufenen Anzeigetemplates.

recordRecord oder None

Der über die URL mitgegebene Datensatz.

versionString

Die Version der LivingAPI die zur Erzeugung sämtlicher Objekte verwendet wurde.

platformString

Der Name für die installierte Version von LivingApps. Auf http://my.living-apps.de ist dies z.B. "LivingApps", auf http://my.leadair.de "LeadAir".

hostnameString

Der Hostname des LivingApps-Server (also beispielsweise my.living-apps.de oder my.leadair.de).

userUser oder None

Der aktuell eingeloggte Benutzer. user ist None, falls ein nicht authentifizierter Nutzer ein öffentliches Template nutzt.

langString

Die zu verwendende Sprache (d.h. in dieser Sprache sollten die Ausgaben in einem Anzeige-Template erzeugt werden). Wenn ein Benutzer eingeloggt ist, ist dies die Sprache des Benutzers (ansonsten Standard-Sprache der LivingApp-Platform: "de" für Deutsch). Dieses Attribut kann geändert werden (z.B. wenn wegen eines Accept-Language-Headers eine andere Sprache verwendet werden soll).

In Formular-Templates ist globals.lang die Sprache der Formularvariante (nicht die bevorzugte Sprache des eingeloggten Benuzters).

p_<identifier>AppParameter

„Shortcut“-Attribute für die AppParameter-Objekte der App. Beispielsweise ist globals.p_beispiel äquivalent zu globals.app.p_beispiel (und dies wiederum zu globals.app.params.beispiel).

pv_<identifier>Objekt

„Shortcut“-Attribute für die Werte von AppParameter-Objekten der App. globals.pv_beispiel äquivalent zu globals.app.pv_beispiel (und im Endeffekt wiederum zu globals.app.params.beispiel.value).

templatesDictionary(String ➝ UL4-Template)

Alle internen Templates, die in der aktuellen App definiert sind. Diese Templates können unter Konfiguration ‣ Erweitert in der Interne Templates-Maske angelegt werden. Die Schlüssel des Dictionarys sind dabei der Identifizierer des Templates und die Werte die UL4-Templates selbst.

Damit ist es möglich, z.B. mehrfach benötigte Funktionalität in einem Template zu implementieren und diese Funktionalität von anderen Anzeige-Templates aus aufzurufen.

t_<identifier>UL4-Template

Die internen Templates stehen auch über diese „Shortcut“-Attribute zur Verfügung. globals.t_gurk is beispielsweise äquivalent zu globals.templates.gurk.

datasourcesDictionary(String ➝ DataSource)

Die Datenquelle des aufrufenden Templates

customObjekt

Dieses Attribut kann vom Benutzer für beliebige zusätzliche Informationen gesetzt werden.

x_<identifier>Objekt

Es werden beliebige zusätzliche Attribute unterstützt deren Namen mit x_ beginnt.

modeString

Gibt an in welchem Typ von Template man sich gerade befindet bzw. in welcher Ablaufphase dieses Templates. Mögliche Werte sind:

form/new/initFormular- und Update-Template

Der erste Aufruf eines „Neu anlegen“-Formulars.

form/new/searchFormular-Template

Ajax-Suche für applookup/choice- bzw. multipleapplookup/choice-Felder.

form/new/failedFormular-Template

Das Ausfüllen des „Neu anlegen“-Formular ist fehlgeschlagen (wegen nicht ausgefüllter Pflichtfelder etc.).

form/new/presaveFormular-Template

Das „Neu anlegen“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde noch nicht gespeichert.

form/new/postsaveFormular-Template

Das „Neu anlegen“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde bereits gespeichert.

form/new/inputUpdate-Template

Der Benutzer hat im „Neu“-Formular ein Eingabefeld geändert. Die Variable identifier enthält den Identifier des geänderten Feldes.

form/new/geoUpdate-Template

In einen „Neu“-Formular liegt Geo-Information vor über den Standort des Benutzers vor.

form/edit/initFormular- und Update-Template

Der erste Aufruf eines „Bearbeiten“-Formulars.

form/edit/searchFormular-Template

Ajax-Suche für applookup/choice- bzw. multipleapplookup/choice-Felder.

form/edit/failedFormular-Template

Das Ausfüllen des „Bearbeiten“-Formular ist fehlgeschlagen (wegen nicht ausgefüllten Pflichtfeldern etc.).

form/edit/presaveFormular-Template

Das „Bearbeiten“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde noch nicht gespeichert.

form/edit/postsaveFormular-Template

Das „Bearbeiten“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde bereits gespeichert.

form/edit/inputUpdate-Template

Der Benutzer hat im „Bearbeiten“-Formular ein Eingabefeld geändert. Die Variable identifier enthält den Identifier des geänderten Feldes.

form/new/geoUpdate-Template

In einen „Bearbeiten“-Formular liegt Geo-Information vor über den Standort des Benutzers vor.

view/listAnzeige-Template

In einem Anzeige-Template vom Typ „Liste“.

view/detailAnzeige-Template

In einem Anzeige-Template vom Typ „Detail“.

view/supportAnzeige-Template

In einem Anzeige-Template vom Typ „Support“.

email/textE-Mail-Template

Text-Version der E-Mail.

email/htmlE-Mail-Template

HTML-Version der E-Mail.

geo(…)Methode(…) ➝ Geo

Dieser Methode gibt Geo-Objekte zurück. Sie besitzt zwei verschiedene Signaturen:

geo(lat, long)Methode(Zahl, Zahl) ➝ Geo

Übergeben wird der Breitengrad lat und der Längengrad long. Die fehlende Beschreibung des Ortes (z.B. eine Adresse) wird daraus ermittelt. Beispielsweise liefert:

<?printx globals.geo(lat=49.9552129, long=11.5901843)?>

das Geo-Objekt:

<com.livinglogic.appdd.Geo
   lat=49.9552129
   long=11.5901843
   info='Markgrafenallee 44, 95448 Bayreuth, Deutschland'
>
geo(info)Methode(String) ➝ Geo

Übergeben wird eine Beschreibung des Ortes z.B. als Adresse. Der fehlende Längen- und Breitengrad wird daraus ermittelt. Beispielsweise liefert:

<?code info = "LivingLogic AG, Markgrafenallee 44, 95448 Bayreuth"?>
<?printx globals.geo(info=info)?>

das Geo-Objekt:

<com.livinglogic.appdd.Geo
   lat=49.95559
   long=11.59011
   info='LivingLogic AG, Markgrafenallee 44, 95448 Bayreuth'
>

Bemerkung

Wenn Geo-Objekte dargestellt werden, muss Open Streetmap als Datenquelle genannt werden. Mehr Informationen zur Nennung und zur Lizenz.

current_geo()Methode() ➝ Geo

Gibt den aktuellen Standort des Benutzers zurück (nur in Update-Templates).

seq()Methode() ➝ Integer

Jeder Aufruf dieser Methode gibt eine eindeutige, fortlaufende Nummer zurück. seq benötigt keine Argumente.

dist(geo1, geo2)Methode(Geo, Geo) ➝ Zahl

Gibt die Entfernung zwischen den zwei Geo-Koordinaten geo1 und geo2 in Kilometern zurück.

scaled_url(…)Methode(…) ➝ String

Diese Methode liefert eine URL unter der die skalierte Version eines Bildes ausgeliefert wird. Zum Skalieren der Bilder wird imgproxy verwendet.

Die Methode unterstützt folgende Argumente:

imageFile oder String

Entweder die absolute URL eines Bildes oder ein File-Objekt das ein Bild anthält. Dieses Bild wird skaliert.

typeString oder None

Erlaubte Werte sind: "fit", "fill", "fill-down", "force" und "auto". Der Standardwert ist "fill".

Für mehr Information siehe die imgproxy-Dokumentation.

widthInteger oder None

Die Zielbreite des skalierten Bilder. Der Standardwert ist None.

Für mehr Information siehe die imgproxy-Dokumentation.

heightInteger oder None

Die Zielhöhe des skalierten Bildes. Der Standardwert ist None. width und height dürfen nicht beide None sein.

Für mehr Information siehe die imgproxy-Dokumentation.

enlargeBool

Soll das Bild vergrößert werden, wenn es kleiner als die angegebene Zielgröße ist? Der Standardwert ist True.

Für mehr Information siehe die imgproxy-Dokumentation.

gravityString oder None

Erlabute Werte sich "no", "so", "ea", "we", "noea", "nowe", "soea", "sowe", "ce" und "sm". Der Standardwert ist "sm".

Für mehr Information siehe die imgproxy-Dokumentation.

qualityInteger oder None

Wird dieses Argument angegeben, muß der Wert zwischen 0 und 100 liegen. Der Standardwert ist None.

Für mehr Information siehe die imgproxy-Dokumentation.

rotateInteger oder None

Rotiert das Bild. Wird dieses Argument angegeben, muß der Wert ein ganzzahliges Vielfaches von 90 sein.

Für mehr Information siehe die imgproxy-Dokumentation.

blurZahl oder None

Macht das Bild unschwarf.

Für mehr Information siehe die imgproxy-Dokumentation.

sharpenZahl oder None

Schärft das Bild.

Für mehr Information siehe die imgproxy-Dokumentation.

formatString oder None

Das Bildformat (PNG, GIF, JPEG usw.) des skalierten Bildes.

Für mehr Information siehe die imgproxy-Dokumentation.

cacheBool

Wird True gegeben, so wird eine URL zurückgeliefert, die das skalierte Bild zwischenspeichert, sodaß es bei einen erneuten Aufruf nicht nochmal skaliert werden muß. Bei False wird das Bild bei jeden Aufruf skaliert.

„Flash“-Meldungen werden dazu verwendet um dem Benutzer über das Ergebnis von Aktionen zu informieren, die er auf der vorhergehenden Seite durchgeführt hat. Z.B. kann es in einer Liste von Datensätzen zu jeden Datensatz einen Button geben, der über ein Formular/einen POST-Request diesen Datensatz ändert. Das UL4-Template das diese Änderung durchführt setzt dann eine Flash-Meldung und leitet den Benutzer wieder zur Listenansicht zurück. Die Listenansicht zeigt dann diese Flash-Meldung an. D.h. die Flash-Meldungen bleiben auch über Requests hinweg erhaltet.

flashes()Methode() ➝ Liste(FlashMessage)

flashes gibt eine Liste von „Flash“-Meldungen zurück. Beim Aufruf von flashes() wird diese Liste automatisch geleert (d.h. der nächste Aufruf gibt eine leere Liste zurück).

flash_info(title, message)Methode(String, String oder None) ➝ None

Erzeugt ein neues FlashMessage-Objekt von Typ info und fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parameter title muß ein String sein, message ein String oder None.

flash_notice(title, message)Methode(String, String oder None) ➝ None

Erzeugt ein neues FlashMessage-Objekt von Typ notice und fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parameter title muß ein String sein, message ein String oder None.

flash_warning(title, message)Methode(String, String oder None) ➝ None

Erzeugt ein neues FlashMessage-Objekt von Typ warning und fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parameter title muß ein String sein, message ein String oder None.

flash_error(title, message)Methode(String, String oder None) ➝ None

Erzeugt ein neues FlashMessage-Objekt von Typ error und fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parameter title muß ein String sein, message ein String oder None.

Die folgenden Methoden können dazu verwendet werden die Ausführung eines Templates zu protokollieren. Die erzeugten Meldungen sind beim jeweiligen Anzeige-Template unter Meldungen in aktueller Version zu finden.

Alle Methoden unterstützen eine beliebige Anzahl von Argumenten. Ein Argument, das nicht vom Typ String ist wird mittels der UL4-Funktion repr in einen String konvertiert.

log_debug(*args)Methode(**Objekt) ➝ None

Erzeugt eine neue Meldung vom Typ debug.

log_info(*args)Methode(**Objekt) ➝ None

Erzeugt eine neue Meldung vom Typ info.

log_notice(*args)Methode(**Objekt) ➝ None

Erzeugt eine neue Meldung vom Typ notice.

log_warning(*args)Methode(**Objekt) ➝ None

Erzeugt eine neue Meldung vom Typ warning.

log_error(*args)Methode(**Objekt) ➝ None

Erzeugt eine neue Meldung vom Typ error.

In Anzeige-Templates haben die beiden Attribute request und response folgende Bedeutung:

requestHTTPRequest

Informationen über die HTTP-Anfrage über die das Anzeige-Template aufgerufen wurde.

responseHTTPResponse

Informationen über die HTTP-Antwort über die das Anzeige-Template ausgeliefert werden wird.

Innerhalb von Email-Templates exisistieren die beiden Attribute request und response ebenfalls, haben jedoch eine andere Bedeutung:

requestNone

Wird für Email-Templates nicht benötigt und ist immer None

responseEmailResponse

Enthält den Betreff der zu versendenden E-Mail sowie die E-Mail-Adressaten. Diese Informationen können vom E-Mail-Template geändert werden.

Die folgenden Methoden geben die relativen URLs der aus der Web-Oberfläche bekannten Navigations-Links zurück.

my_apps_url()Methode() ➝ String

Gibt die relative URL zur „Meine Apps“-Seite zurück.

Beispiel:

<?print app.my_apps_url()?>

erzeugt:

/apps.htm
my_tasks_url()Methode() ➝ String

Gibt die relative URL zur „Aufgaben“-Seite zurück.

Beispiel:

<?print app.my_tasks_url()?>

erzeugt:

/xist4c/web/aufgaben_id_393_.htm
catalog_url()Methode() ➝ String

Gibt die relative URL zur „Katalog“-Seite zurück.

Beispiel:

<?print app.catalog_url()?>

erzeugt:

/katalog/home.htm
chats_url()Methode() ➝ String

Gibt die relative URL zur „Chats“-Seite zurück.

Beispiel:

<?print app.chats_url()?>

erzeugt:

/chats.htm
profile_url()Methode() ➝ String

Gibt die relative URL zur „Profil“-Seite zurück.

Beispiel:

<?print app.profile_url()?>

erzeugt:

/profil/index.htm
account_url()Methode() ➝ String

Gibt die relative URL zur „Account“-Seite zurück.

Beispiel:

<?print app.account_url()?>

erzeugt:

/account.htm
logout_url()Methode() ➝ String

Gibt die relative URL des Logout-Links zurück.

Beispiel:

<?print app.logout_url()?>

erzeugt:

/login.htm?logout=standardCug