Webgate Anywhere 4.1 - Das Kompendium
Design WebTML WebTML-Optionen

4.1.5 WebTML-Optionen

WebTML-Optionen sind variabel festlegbare Werte, die in der WebTML-Programmierung wie Variablen verwendet werden können. Anders als WebTML-Variablen jedoch ist ihr Gültigkeitsbereich an die Hierarchie der WebTML-Tags gebunden.

Normalerweise werden WebTML-Optionen über den Tag <tml:option> gesetzt. Sie können über denselben Tag auch wieder ausgelesen werden wenn er ohne Inhalt oder mit dem Attribut mode="get" ausgeführt wird.
Kapitelverzeichnis einblenden

4.1.5.1 Sichtbarkeit

Die Sichtbarkeit einer WebTML-Option ist, grob beschrieben, im Code "nach und unter" seiner Definition gegeben. Technisch wird die Option als Eigenschaft des übergeordneten Tags von <tml:option> gesetzt, und stehen wie folgt zur Verfügung:

a) Allen Funktionalitäten die sich im Inhalt dieses übergeordneten Tags befinden und zum Zeitpunkt der Options-Setzung noch nicht ausgeführt wurden.
b) Eventuellen Funktionalitäten des übergeordneten Tags die erst beim End-Tag einsetzen
c) Über a) oder b) eingebundenen WebTML-Modulen

Dies mag zunächst kompliziert erscheinen, ist jedoch in den meisten Fällen pragmatisch richtig. Ein Beispiel:
<tml:range>
     <tml:item name="x"/>
    <tml:option name="theoption">thevalue</tml:option>
    <tml:item name="y"/>
    <tml:range>
        <tml:include ref="mymodule"/>
    </tml:range>
</tml:range>

<tml:item name="z"/>

In diesem Beispiel sind die Tags hervorgehoben, welche theoretisch die Möglichkeit haben auf die gesetzte Option "theoption" zuzugreifen. Dazu gehörten folgende Tags derselben Tag-Ebene (item und range), untergeordnete Tags dieser Tags (include) sowie die Tags weiterer dort eingebundener WebTML-Module (Das Modul "mymodule" und sein WebTML-Code).

Es ist auch der Endtag von <tml:range> hervorgehoben, weil durch Sichtbarkeitsregel b) selbst abschliessende Funktionalitäten des übergeordneten Tags von <tml:option> die Möglichkeit haben auf die Option zu reagieren.

Aufgrund dieser Sichtbarkeitsregel sind WebTML-Optionen besonders geeignet, per <tml:include> eingebundenen WebTML-Modulen gezielt Parameter mitzugeben, welche dann in deren Code ausgewertet werden. Der Include-Tag führt die Einbindung erst aus wenn sein End-Tag ausgewertet wird. Daher sind Optionen die in seinem Inhalt definiert wurden zu diesem Zeitpunkt bereits verfügbar.
<tml:include ref="mymodule">
    <tml:option name="color">red</tml:option>
</tml:include>

Über das Attribut scope kann die Sichtbarkeit einer WebTML-Option zusätzlich parametrisiert werden. Normalerweise setzt sich die Sichtbarkeit einer WebTML-Option "nach unten" unbegrenzt weiter fort durch eingebundene WebTML-Module und wiederum deren eingebundene Module. Dies entspricht dem Scope "global", der auch die Standardeinstellung ist.

Wird manuell ein Scope "local" bestimmt, so ändert sich dies insofern, dass die Option nur noch für ein WebTML-Modul Gültigkeit hat und zwar:

a) Entweder das aktuelle WebTML-Modul
b) Oder das WebTML-Modul welches durch ein unmittelbar übergeordnetes <tml:include> eingebunden wird

Hiermit kann verhindert werden, dass die Option tiefer in der Hierarchie eingebundene WebTML-Module beeinflusst.

Ein Attribut des <tml:include>-Tags keepoptions kann verwendet werden, wenn bewusst eigentlich lokale Optionen, die nicht für ein eingebundenes Modul gelten würden, mittransportiert werden sollten.

4.1.5.2 Optionen und WebTML-Portlets

Eine andere Eigenschaft von WebTML-Optionen ist, dass sie "wiederhergestellt" werden wenn ein WebTML-Portlet per AJAX neu geladen wird.

Dies unterscheidet sie von WebTML-Variablen. Wird ein WebTML-Portlet von einer Variable beeinflusst die außerhalb des Portlets definiert wurde, so ist diese Variable nicht mehr vorhanden wenn das Portlet per AJAX neu geladen wird.

Anders bei WebTML-Optionen. Der Stand an verfügbaren Optionen wird zu Beginn eines WebTML-Portlets "konserviert". Dieser Stand wird wiederherstellt wenn das Portlet separat per AJAX wieder geladen wird. Was WebTML-Optionen angeht ist die Ablaufumgebung von WebTML-Portlets also über AJAX-Requests hinweg konstant.

Setzt man AJAX-Portlets ein so kann man mit der gezielten Verwendung von Optionen mit "local" Scope Netzwerktraffic einsparen. Um WebTML-Optionen bei einem Neuladen des Portlets per AJAX wieder zur Verfügung zu haben müssen ihre Daten vom Browser wieder an den Server übermittelt werden. Dies erzeugt umso mehr Traffic, je größer und umfangreicher die zu übermittelnden Optionen sind und beeinflusst die Gesamt-Performance negativ.

Achtet man darauf, Optionen die nur im unmittelbar eingebunden Modul benutzt werden, auf Scope "local" zu setzen, so verringert sich unter Umständen die Anzahl der zu transportierenden Optionen für Portlets und somit auch der Traffic.

4.1.5.3 Optionen und WebTML-Elemente

WebTML-Optionen werden auch benutzt um WebTML-Elemente zu parametrisieren. Dies funktioniert identisch zur Parametrisierung von Includes dadurch, dass der End-Tag von <tml:element> erst die Element-Einbindung vornimmt und zu diesem Zeitpunkt bereits alle Optionen zur Verfügung hat die in seinem Inhalt gesetzt wurden.
<tml:element name="zip">
    <tml:option name="files"> ... <tml:option>
</tml:element>

Die Optionsnamen welche ein WebTML-Element erkennt und auswertet sind zu jedem Element in der WebTML Element-Referenz dokumentiert.


<< WebTML-Warnungen Labels >>