Listenansicht

Wie eine Listenansicht aussieht, kann man sich in den Transformations ansehen, dort werden die Methoden einer Transformation nicht in der Baumstruktur, sondern über dem Formularfeld in einer Liste angezeigt. Diese Ansicht kann auch für den Content verwendet werden. Für diese Einstellung gibt es die Konfigurationsdatei childrenListViews.config

In dem folgenden Beispiel wird so eine Ansicht für Benutzer in Gruppen erstellt. Der Vorteil hier ist, wenn man eine große Anzahl an Benutzern verwalten möchte, bläht sich die Baumstruktur auf der Linken seite stark auf. Zudem bietet die Listenansicht die Möglichkeit, dass Informationen zu einem Informationsobjekt angezeigt werden, beispielsweise bei einem Benutzer die Kontaktdaten, so dass man nicht mehr in das Formular des Informationsobjektes schauen muss.



  <listView schemaLocation="http://www.getit.de/2007/board/groups">
    <columns order="name#ascending">
      <column id="name" dataType="xs:string" />
      <column id="nickname" dataType="xs:string" />
      <column id="mail" dataType="xs:string" />
    </columns>
    <childType schemaLocation="http://www.getit.de/2007/board/user" handleDerivations="true" structureInvisible="false">
      <column ref="name" select="concat(user/firstname, ' ' , user/lastname)" />
      <column ref="nickname" select="user/nickname" />
      <column ref="mail" select="user/mail" />
    </childType>
  </listView>

Listenansicht für Benutzer 

In dem Beispiel wird eine Benutzerliste definiert, die angezeigt, wird, denn man auf ein Informationsobjekt Gruppe klickt. In der Liste sollen der Name, der Benutzername und die E-Mail Adresse eines Benutzers angezeigt werden.

Im ersten Schritt werden dafür die Spalten definiert, dass bedeutet eine ID, über die die Spalten angesprochen werden und der Datentyp für diese Spalte.

Im zweiten Schritt werden dann die entsprechenden Daten der Benutzer den Spalten zugeordnet. Hier wird auf die eben vergebene ID verwiesen und mittels XPath-Ausdruck die Daten bereitgestellt.

Nun gibt es für childType noch zwei Attribute.
Das Attribut structureInvisible blendet bei false die Benutzer in der Baumstruktur aus. Sollte das Attribut nicht gesetzt werden, ist der Standardwert true und die Objekte werden dementsprechend in der Baumstruktur angezeigt.

handleDerivations gibt hier nun an, ob Ableitungen eines Typs in der Liste angezeigt werden sollen oder nicht. Beispielsweise gibt es von einem Benutzer eine Ableitung Gast, welcher keinen Namen oder Kontaktdaten hat. Da diese Daten nun für die Anzeige in der Liste fehlen, setzt man dieses Attribut auf false und zeigt dann alle abgeleiteten Objekte nur in der Baumstruktur an. 

Die Kopfzeilen der Spalten sind die in der Konfigurationsdatei vergebenen IDs. Wie man Diese anpasst, wird im Abschnitt Sprache erläutert.



<childType schemaLocation="http://www.getit.de/2007/board/user" handleDerivations="true" structureInvisible="true">
    <column ref="icon" select="onion:createIcon($onion:id, icon, 32, 32, 'title')" />
    <column ref="name" select="$onion:name" />
    <column ref="name" select="onion:getName(user)" />
    <column ref="gender" select="onion:choose(gender = 'male', 'male', 'female')" />
    <column ref="" select="onion:getDataObject(user)/user/firstname" />
</childType>


Beispiel: Datenzugriff
 

In den ListViews können neben den Daten aus dem Datensatz auch erweiterte Informationen angezeigt werden.

Das obige Beispiel zeigt alle zur Verfügung stehenden Variablen und Funktionen.

Variablen:
$onion:id
$onion:name
$onion:parent
$onion:creator
$onion:dateCreated
$onion:editor
$onion:lastModified
$onion:version

Funktionen:
onion:createIcon        erzeugt ein Icon. Hier muss die ID des Elements, die Methode, Höhe, Breite und ein Titel angegeben werden.
onion:getName           gibt den Namen des übergebenen Elements zurück
onion:choose             gibt einen Wert, je nach Bedingung zurück (selbe Funktion wie c.choose())
onion:getDataObject   ruft ein Objekt ab wie c.dataCall(id, 'content')