ELEMENT form (description?, grant*, fieldset*, event*) ATTRIBUTE name string table string template string title string
Attribut | Typ | Pflicht | Default | Beschreibung |
---|---|---|---|---|
name | string | yes | n/a | Ein eindeutiger Name welcher dieses Formular identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein. |
table | string | - | n/a | Name einer Quelltabelle oder eines Views. Beachten Sie, dass der View updatable sein sollte. Andernfalls sollte das Formular nicht editierbar sein. |
template | string | - | n/a | Das Attribut template kann einen beliebigen Text enthalten. Die Implementierung zur Generierung des Formulars kann eine Liste gültiger Werte für dieses Attribut festlegen. Das Template sollte alle erforderlichen Informationen liefern, welche die Implementierung zur Darstellung des Formulars benötigt. |
title | string | - | n/a | Title ist ein Beschriftungstext, der in der Nutzeroberfläche angezeigt werden sollte wenn das Objekt anzeigt wird. |
Formulare sind benannte Objekte, welche als Eingabe für Formular- und Oberflächengeneratoren benutzt werden. Sie müssen mindestens eine Basistabelle und ein Template festlegen. Die Basistabelle darf natürlich auch ein (updatable) View sein.
Formulare sind kein Feature der Datenbank. Sie müssen für alle bekannten DBMS durch Software generiert werden. Der Inhalt des Formulars basiert jedoch auf dem Datenbankschema, welches in der XDDL-Datei definiert ist. Basierend auf diesen Informationen sollte die Implementierung Select-, Update-, Insert- oder Delete-Anweisungen selbstständig generieren.
In einer Ausgabe als HTML, sollten Formulare als Form-Elemente angezeigt werden. Die Darstellung des Formulars muss im mit dem Form-Element verbundenen Template definiert sein.
ELEMENT fieldset (description?, grant*, input+) ATTRIBUTE name string title string
Attribut | Typ | Pflicht | Default | Beschreibung |
---|---|---|---|---|
name | string | - | default | Ein eindeutiger Name welcher diesen Formularabschnitt identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein. |
title | string | - | n/a | Title ist ein Beschriftungstext, der in der Nutzeroberfläche angezeigt werden sollte wenn das Objekt anzeigt wird. |
Formularabschnitte dienen dem Zweck, Formularfelder zu gruppieren. Wenn ein Abschnitt nicht benannt ist, so wird standardmäßig der Name "default" vergeben. Achten Sie folglich darauf, dass lediglich 1 unbenannter Abschnitt in einem Formular vorkommen darf. Der Name eines Abschnitts muss für das Formular eindeutig sein.
In HTML sollten Formularabschnitte Durch Verwendung des Tags "fieldset" dargestellt werden. Das Attribut title kann als Wert für ein "legend"-Element des Tags verwendet werden.
ELEMENT input (description?, grant*, action*) ATTRIBUTE name string label string hidden bool readonly bool cssclass string tabindex integer
Attribut | Typ | Pflicht | Default | Beschreibung |
---|---|---|---|---|
name | string | yes | n/a | Ein eindeutiger Name welcher das Formularfeld identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein. |
label | string | - | n/a | Das Attribut label ist ein Beschriftung welche Informationen zum Inhalt des Formularfelds liefert. |
hidden | bool | - | no | Das Formularfeld darf in der Nutzeroberfläche nicht sichtbar sein, wenn der Wert dieses Attributs auf "yes" gesetzt wird. Andernfalls soll das Attribut ignoriert werden. |
readonly | bool | - | no | Sie können das Formularfeld auf schreibgeschützt setzen, um zu verhindern dass Änderungen vorgenommen werden. Ein Formularfeld, welches schreibgeschützt ist, kann nicht editiert werden. |
cssclass | string | - | n/a | Eine HTML-basierte Nutzeroberfläche sollte Id-Attribute und CSS-Klassen für Formularfelder automatisch bereitstellen. Zusätzlich kann dieses Attribut verwendet werden um eine nutzerdefinierte CSS-Klasse hinzuzufügen. |
tabindex | integer | - | 0 | Eine HTML-basierte Nutzeroberfläche sollte den Tab-Index für Formularfelder automatisch erstellen. Alternativ kann dieses Attribut verwendet werden um einen nutzerdefinierten Wert festzulegen. Der Tab-Index definiert die Reihenfolge, in welcher Formularfelder den Eingabefokus erhalten, wenn der Nutzer die Tabulatortaste des Keyboards drückt. |
Das Input-Element bezeichnet ein einzelnes Formularfeld in einem Fieldset.
Eine HTML-basierte Nutzeroberfläche sollte dies darstellen als "input"-Element oder etwas vergleichbares, abhängig vom Typ der zugrundeliegenden Spalte. Wenn das Attribute "readonly" auf "yes" gesetzt ist, sollte das Element nicht editierbar sein. Die Implementierung sollte CSS Class- und/oder Id-Attribute für jedes Formularfeld automatisch erzeugen. Zusätzlich muss, wenn das Attribut "cssclass" gesetzt wird, dieser Wert zum Attribut Class des Tags hinzugefügt werden. Wenn das Attribut "tabindex" angegeben ist, muss es in die Attributliste des Steuerelements kopiert werden. Falls das "input"-Element durch mehr als ein HTML-Element umgesetzt wird, so muss das Attribut tabindex auf das erste editierbare Feld gesetzt werden.
ELEMENT action (#PCDATA) ATTRIBUTE name string language string title string label string icon image
Attribut | Typ | Pflicht | Default | Beschreibung |
---|---|---|---|---|
name | string | yes | n/a | Ein eindeutiger Name welcher die Aktion identifiziert. Sollte kleingeschrieben und ein gültiger Funktionsname sein. |
language | string | - | n/a | Die Programmiersprache in welcher die Aktion implementiert ist. Kann eine beliebige Zeichenkette sein. Falls diese Option nicht angegeben ist, kann die Implementierung selbst festlegen, wie die Aktion zu behandeln ist. Das Yana Framework wird in die Aktion in diesem Fall als Namen der Aktion eines Plugins interpretieren. |
title | string | - | n/a | Attribut title zur Verwendung in anklickbaren Links. |
label | string | - | n/a | Beschriftung von anklickbaren Links. |
icon | image | - | n/a | Grafikdatei zur Verwendung als Icon für anklickbare Links. |
Das Action-Element soll ausgelöst werden wenn der Nutzer das Formularfeld anklickt.
Die Darstellung des Elements hängt von den Attributen language und name ab.
Für die Sprache PHP, oder wenn das Attribut language leer ist, wird empfohlen zur Darstellung einen "A"-Tag neben dem Formularfeld zu verwenden. Der Inhalt des HTML-Tags besteht aus dem Attribut label und/oder einem Image-Tag, dessen Attribut "src" aus dem Attribut "icon" übernommen wird. Das Attribute "href" des HTML-Tags sollte eine Referenz auf PHP_SELF und den Namen der Aktion als Parameter beinhalten, in der Form "action={name}". Als Wert des Feldes sollte als zweiter Parameter "target[{primärschlüssel}]={wert}" angegeben werden.
Beispiel:
<action name="foo" label="klick mich" icon="common_files/icon.png"/> <a href="?action=foo&target[12]=bar"> klick mich <img src="common_files/icon.png"/> </a>
Für die Sprache JavaScript, muss das Attribut name eine gültige Bezeichnung für ein Ereignis in JavaScript sein, und der Abschnitt PCDATA muss gültigen JavaScript-Code enthalten.
Beispiel:
<action name="onchange" language="javascript">validate(this)</action> <input ... onchange="validate(this)"/>
Wenn ein "label" oder "icon" angegeben sind, soll die Aktion ausgeführt werden wenn das "label" und/oder "icon" angeklickt worden sind.
Beispiel:
<action name="onchange" label="prüfen" icon="common_files/validate.png" language="javascript">validate('foo')</action> <input ... onchange="validate('foo')" /> <a onclick="validate('foo')"> prüfen <img src="common_files/validate.png"/> </a>
ELEMENT event (#PCDATA) ATTRIBUTE name string
Attribut | Typ | Pflicht | Default | Beschreibung |
---|---|---|---|---|
name | string | yes | n/a | Name des Ereignisses welches ausgelöst werden soll (definiert vom gewählten Template) |
Das Ereignis wird ausgelöst, wenn der Benutzer im angezeigten Formular eine bestimmte Aktion auslöst, wie das Absenden des Formulars, das Anklicken eines Downloads, oder was vergleichbares. Die verfügbaren Typen von Ereignissen müssen durch das gewählte Template definiert werden. Die Implementierung kann selbst definieren, wie das Ereignis ausgewertet werden soll. Das Attribut "name" definiert den Namen des Ereignisses, und der PCData-Abschnitt den Namen der aufzurufenden Funktion.
Beispiel: Ereignis "submit" mit PCData "foo" wird die Formulardaten über die Methode POST zur Server-Anwendung mit der URL "?action=foo" senden, wenn der Benutzer das Formular absendet (den "submit" Button betätigt). Die Implementierung muss definieren, was "submit" für im Falle des angegebenen Formulartemplates tatsächlich bedeutet.
Thomas Meyer, www.yanaframework.net