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:
appAppDie App des aufgerufenen Anzeigetemplates.
recordRecord oderNoneDer über die URL mitgegebene Datensatz.
versionStringDie Version der LivingAPI die zur Erzeugung sämtlicher Objekte verwendet wurde.
platformStringDer 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".hostnameStringDer Hostname des LivingApps-Server (also beispielsweise
my.living-apps.deodermy.leadair.de).userUser oderNoneDer aktuell eingeloggte Benutzer.
useristNone, falls ein nicht authentifizierter Nutzer ein öffentliches Template nutzt.langStringDie 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 einesAccept-Language-Headers eine andere Sprache verwendet werden soll).In Formular-Templates ist
globals.langdie Sprache der Formularvariante (nicht die bevorzugte Sprache des eingeloggten Benuzters).p_<identifier>AppParameter„Shortcut“-Attribute für die
AppParameter-Objekte der App. Beispielsweise istglobals.p_beispieläquivalent zuglobals.app.p_beispiel(und dies wiederum zuglobals.app.params.beispiel).pv_<identifier>Objekt„Shortcut“-Attribute für die Werte von
AppParameter-Objekten der App.globals.pv_beispieläquivalent zuglobals.app.pv_beispiel(und im Endeffekt wiederum zuglobals.app.params.beispiel.value).templatesDictionary(String ➝ UL4-Template)Alle internen Templates, die in der aktuellen App definiert sind. Diese Templates können unter 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-TemplateDie internen Templates stehen auch über diese „Shortcut“-Attribute zur Verfügung.
globals.t_gurkis beispielsweise äquivalent zuglobals.templates.gurk.datasourcesDictionary(String ➝ DataSource)Die Datenquelle des aufrufenden Templates
customObjektDieses Attribut kann vom Benutzer für beliebige zusätzliche Informationen gesetzt werden.
x_<identifier>ObjektEs werden beliebige zusätzliche Attribute unterstützt deren Namen mit
x_beginnt.
modeStringGibt 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-TemplateDer erste Aufruf eines „Neu anlegen“-Formulars.
form/new/searchFormular-TemplateAjax-Suche für
applookup/choice- bzw.multipleapplookup/choice-Felder.form/new/failedFormular-TemplateDas Ausfüllen des „Neu anlegen“-Formular ist fehlgeschlagen (wegen nicht ausgefüllter Pflichtfelder etc.).
form/new/presaveFormular-TemplateDas „Neu anlegen“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde noch nicht gespeichert.
form/new/postsaveFormular-TemplateDas „Neu anlegen“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde bereits gespeichert.
form/new/inputUpdate-TemplateDer Benutzer hat im „Neu“-Formular ein Eingabefeld geändert. Die Variable
identifierenthält den Identifier des geänderten Feldes.form/new/geoUpdate-TemplateIn einen „Neu“-Formular liegt Geo-Information vor über den Standort des Benutzers vor.
form/edit/initFormular- und Update-TemplateDer erste Aufruf eines „Bearbeiten“-Formulars.
form/edit/searchFormular-TemplateAjax-Suche für
applookup/choice- bzw.multipleapplookup/choice-Felder.form/edit/failedFormular-TemplateDas Ausfüllen des „Bearbeiten“-Formular ist fehlgeschlagen (wegen nicht ausgefüllten Pflichtfeldern etc.).
form/edit/presaveFormular-TemplateDas „Bearbeiten“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde noch nicht gespeichert.
form/edit/postsaveFormular-TemplateDas „Bearbeiten“-Formular wurde erfolgreich ausgefüllt. Der Datensatz wurde bereits gespeichert.
form/edit/inputUpdate-TemplateDer Benutzer hat im „Bearbeiten“-Formular ein Eingabefeld geändert. Die Variable
identifierenthält den Identifier des geänderten Feldes.form/new/geoUpdate-TemplateIn einen „Bearbeiten“-Formular liegt Geo-Information vor über den Standort des Benutzers vor.
view/listAnzeige-TemplateIn einem Anzeige-Template vom Typ „Liste“.
view/detailAnzeige-TemplateIn einem Anzeige-Template vom Typ „Detail“.
view/supportAnzeige-TemplateIn einem Anzeige-Template vom Typ „Support“.
email/textE-Mail-TemplateText-Version der E-Mail.
email/htmlE-Mail-TemplateHTML-Version der E-Mail.
formStringGibt an, ob das Formular in die LivingApps-Plattform eingebettet ist oder nicht. Kann die Werte
embeddedoderstandaloneannehmen.geo(…)Methode(…) ➝ GeoDieser Methode gibt Geo-Objekte zurück. Sie besitzt zwei verschiedene Signaturen:
geo(lat, long)Methode(Zahl, Zahl) ➝ GeoÜbergeben wird der Breitengrad
latund der Längengradlong. 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' >
current_geo()Methode() ➝ GeoGibt den aktuellen Standort des Benutzers zurück (nur in Update-Templates).
seq()Methode() ➝ IntegerJeder Aufruf dieser Methode gibt eine eindeutige, fortlaufende Nummer zurück.
seqbenötigt keine Argumente.dist(geo1, geo2)Methode(Geo, Geo) ➝ ZahlGibt die Entfernung zwischen den zwei Geo-Koordinaten
geo1undgeo2in Kilometern zurück.
scaled_url(…)Methode(…) ➝ StringDiese 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 StringEntweder die absolute URL eines Bildes oder ein File-Objekt das ein Bild anthält. Dieses Bild wird skaliert.
typeString oderNoneErlaubte Werte sind:
"fit","fill","fill-down","force"und"auto". Der Standardwert ist"fill".Für mehr Information siehe die imgproxy-Dokumentation.
widthInteger oderNoneDie Zielbreite des skalierten Bilder. Der Standardwert ist
None.Für mehr Information siehe die imgproxy-Dokumentation.
heightInteger oderNoneDie Zielhöhe des skalierten Bildes. Der Standardwert ist
None.widthundheightdürfen nicht beideNonesein.Für mehr Information siehe die imgproxy-Dokumentation.
enlargeBoolSoll 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 oderNoneErlabute 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 oderNoneWird dieses Argument angegeben, muß der Wert zwischen 0 und 100 liegen. Der Standardwert ist
None.Für mehr Information siehe die imgproxy-Dokumentation.
rotateInteger oderNoneRotiert das Bild. Wird dieses Argument angegeben, muß der Wert ein ganzzahliges Vielfaches von 90 sein.
Für mehr Information siehe die imgproxy-Dokumentation.
blurZahl oderNoneMacht das Bild unschwarf.
Für mehr Information siehe die imgproxy-Dokumentation.
sharpenZahl oderNoneSchärft das Bild.
Für mehr Information siehe die imgproxy-Dokumentation.
formatString oderNoneDas Bildformat (PNG, GIF, JPEG usw.) des skalierten Bildes.
Für mehr Information siehe die imgproxy-Dokumentation.
cacheBoolWird
Truegegeben, so wird eine URL zurückgeliefert, die das skalierte Bild zwischenspeichert, sodaß es bei einen erneuten Aufruf nicht nochmal skaliert werden muß. BeiFalsewird 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)flashesgibt eine Liste von „Flash“-Meldungen zurück. Beim Aufruf vonflashes()wird diese Liste automatisch geleert (d.h. der nächste Aufruf gibt eine leere Liste zurück).flash_info(title, message)Methode(String, String oderNone) ➝NoneErzeugt ein neues
FlashMessage-Objekt von Typinfound fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parametertitlemuß ein String sein,messageein String oderNone.flash_notice(title, message)Methode(String, String oderNone) ➝NoneErzeugt ein neues
FlashMessage-Objekt von Typnoticeund fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parametertitlemuß ein String sein,messageein String oderNone.flash_warning(title, message)Methode(String, String oderNone) ➝NoneErzeugt ein neues
FlashMessage-Objekt von Typwarningund fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parametertitlemuß ein String sein,messageein String oderNone.flash_error(title, message)Methode(String, String oderNone) ➝NoneErzeugt ein neues
FlashMessage-Objekt von Typerrorund fügt dieses zur Liste der „Flash“-Meldungen hinzu. Der Parametertitlemuß ein String sein,messageein String oderNone.
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) ➝NoneErzeugt eine neue Meldung vom Typ
debug.log_info(*args)Methode(**Objekt) ➝NoneErzeugt eine neue Meldung vom Typ
info.log_notice(*args)Methode(**Objekt) ➝NoneErzeugt eine neue Meldung vom Typ
notice.log_warning(*args)Methode(**Objekt) ➝NoneErzeugt eine neue Meldung vom Typ
warning.log_error(*args)Methode(**Objekt) ➝NoneErzeugt eine neue Meldung vom Typ
error.
In Anzeige-Templates haben die beiden Attribute request und response
folgende Bedeutung:
requestHTTPRequestInformationen über die HTTP-Anfrage über die das Anzeige-Template aufgerufen wurde.
responseHTTPResponseInformationen ü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:
requestNoneWird für Email-Templates nicht benötigt und ist immer
NoneresponseEmailResponseEnthä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() ➝ StringGibt die relative URL zur „Meine Apps“-Seite zurück.
Beispiel:
<?print app.my_apps_url()?>
erzeugt:
https://my.living-apps.de/apps.htm
my_tasks_url()Methode() ➝ StringGibt die relative URL zur „Aufgaben“-Seite zurück.
Beispiel:
<?print app.my_tasks_url()?>
erzeugt:
https://my.living-apps.de/xist4c/web/aufgaben_id_393_.htm
catalog_url()Methode() ➝ StringGibt die relative URL zur „Katalog“-Seite zurück.
Beispiel:
<?print app.catalog_url()?>
erzeugt:
https://my.living-apps.de/katalog/home.htm
chats_url()Methode() ➝ StringGibt die relative URL zur „Chats“-Seite zurück.
Beispiel:
<?print app.chats_url()?>
erzeugt:
https://my.living-apps.de/chats.htm
profile_url()Methode() ➝ StringGibt die relative URL zur „Profil“-Seite zurück.
Beispiel:
<?print app.profile_url()?>
erzeugt:
https://my.living-apps.de/profil/index.htm
account_url()Methode() ➝ StringGibt die relative URL zur „Account“-Seite zurück.
Beispiel:
<?print app.account_url()?>
erzeugt:
https://my.living-apps.de/account.htm
logout_url()Methode() ➝ StringGibt die relative URL des Logout-Links zurück.
Beispiel:
<?print app.logout_url()?>
erzeugt:
https://my.living-apps.de/login.htm?logout=standardCug