1 zeigt das aktuell selektierte Template Bilder. 2 zeigt die höchste Stufe des Templates, der Name des Templates: MeinTemplate. Unterhalb von MeinTemplate sehen Sie den Template Structure-Baum, eine hierarchiche Organisation der Templates und seiner Kinder.
Save | Speichert die aktuellen Änderungen. Wichtig: Sie müssen auf jeder Ebene der Template Structure speichern. |
Delete | Löscht das aktuell ausgewählte Template und alle Unter-Ebenen der Template Structure. Wenn Sie aus Versehen einen Teil der Struktur gelöscht haben oder Ihr Datenmodell sich verändert hat, löschen Sie die gesamte Struktur, schließen den Template-Editor und speichern die Export-Definition erneut. Dann erzeugt easydb eine neue Struktur. |
Move | Verschiebt einen Teil der Struktur und alle Kinder zu einem neuen Vater. Der Vater muß per ID angegeben werden. Die ID je Blatt in dem Strukturbaum sehen Sie, wenn Sie mit der Maus auf einem Blatt stehen bleiben und 2 Sekunden warten. Nutzen Sie diese ID um das Ziel des aktuell selektierten Struktteils anzugeben. Nutzen Sie Move nach einem Upload. |
Rename | Damit können Sie ein Blatt der Struktur umbenennen. Diese Funktion sollte in der Regel nicht benötigt werden. |
Download | Nutzen Sie Download, um eine Sicherheitskopie Ihrer Struktur zu machen und um Strukturen zwischen easydbs wiederzuverwenden. Wir empfehlen die Struktur nur auf der obersten Ebene herunterzuladen und sie mit Upload auch wieder auf der obersten Ebene einzuhängen. |
Upload | Eine per Download gespeicherte Struktur kann unterhalb des aktuell selektierten Blattes eingehängt werden. Nach einem Upload müssen Sie sicherstellen, dass die Blätter wieder auf derselben Ebene erscheinen. |
Auf der Ebene Bilder zeigt die Tabelle in 4 verfügbare Outputs an, sie haben immer die Form {Name des Outputs}, also ein String eingeschlossen von geschweiften Klammern. Diese Outputs verwendet Sie in 3, der eigentlichen Template-Definition. In unserem Beispiel wird in der 2. Zeile der Output {id} verwendet. Bei den Outputs handelt es sich um Objekte-Daten auf der jeweiligen Ebene. Im Falle von {id} ist das einfach das Feld id der Tabelle Bilder.
Unterhalb der Tabelle Bilder sehen Sie in der Template Structure verlinkte Tabellen und Unter-Strukturen. Dabei gibt es:
Alle untergeordneten Strukturen können im Template aufgerufen werden, in dem dort der Name der Tabelle oder Struktur mit geschweiften Klammern eingefügt wird. In unserem Beispiel in 3 haben wir die Tabelle 5 Schlagwort zwischen die XML-Tags <schlagworte> und </schlagworte> geschrieben.
Die Template Structure wird von oben nach unten durchlaufen und zwar jeweils bis in die tiefste Ebene. Es wird aber nur an den Stellen gerendert, wo eine Ebene mit geschweiften Klammern in den jeweilige Header, Main oder Footer-Bereich geschrieben wurde. Für jedes gefundene Objekt wird jeweils Main aufgerufen.
Wenn wir also 2 Bilder exportieren, wird wie folgt gerendert:
Auf der obersten Ebene (hier: MeinTemplate) der Templete-Struture wird mit escape_type festgelegt, ob die Output in eine ".csv"-Datei oder ".xml"-Datei erfolgen soll und wie escapt wird. Für XML werden einige Zeichen (siehe unten) escapt. Für CSV wird nicht escapt, hier verwenden Sie im Top-Level Platzhalter, um eine CSV-Zeile zusammenzubauen.
Für CSV verwenden Sie bitte auf jeden Fall ,(Komma) als Separator. In aktuellen Browsern ist es nicht immer möglich ein Tabulator einzugeben. Das interne Escaping verwendet , als "delimiter" und " als "enclosure".
Folgende Ersetzungen werden durchgeführt (im gesamten Text):
Text | Ersetzung |
---|---|
" | "" |
<CSV> | "," |
<CSV-FIRST> | " |
<CSV-LAST> | " |
Das CSV-Escaping und CSV[-FIRST|-LAST|] gibt es seit Version 4.0.140. Mit älteren Version ist es problematisch Wiederholgruppen in CSV aufzulösen.
Für XML werden folgende Ersetzungen durchgeführt:
Text | Ersetzung |
---|---|
& | & |
< | < |
> | > |
" | " |
‘ | ' |
Auf der obersten Ebene wird der escape_type auf xml gesetzt.
Die Ebenen wurden wie folgt definiert:
{Bilder}
<bilder>
<bild> <id>{id}</id> <file-original>{bild.data.1}</file-original> <thumb>{bild.data.2}</thumb> <pool>{pool_id.name}</pool> {PATH:pool_id.Pool} <schlagworte> {Schlagwort} </schlagworte>
{bild.image} </bild>
</bilder>
<poolpath>
<path>{name}</path>
</poolpath>
<schlagwort>
{PATH:fk_father_id.Schlagwort}{name}
</schlagwort>
{name} >
Das Rendern geht den Baum von oben nach unten durch und sucht die Outputs und die Unter-Strukturen, welche in geschweiften Klammern angegeben sind. Auf jeder Stufe gibt es Outputs, die Sie in der Liste Available Outputs sehen und durchblättern können.
In den Available Outputs sind 1-n Beziehungen zu anderen Tabellen transparent aufgelöst und folgen der Notation {1-n-Link-Feld der Haupttabelle — Punkt — Feld in der Link-Tabelle}. Beispielsweise gibt der Output {pool_id.name} den Wert des Feld Name der Tabelle Pool aus, und zwar von dem Pool, welcher über das Feld pool_id der Tabelle Bilder verknüpft ist.
Unser komplettes Beispiel rendert XML wie folgt:
<bilder>
<bild>
<id>394931</id>
<file-original>/original/0/23000/23682/d80faa099cd55f837dca45e894bc2134d9952799</file-original>
<thumb>http://eas.4.0.mad.pf-berlin.de/eas/get/0/23000/23682/ff7c50b6fa5d3c6b1f8d59beb0668ec088f09c44</thumb>
<pool>Sachkunde</pool>
<poolpath><path>Ägyptologie</path><path>Sachkunde</path></poolpath>
<schlagworte>
<schlagwort>
Architektur > Bauplan
</schlagwort>
<schlagwort>
Ereignis > Ausstellung
</schlagwort>
</schlagworte>
</bild>
<bild>
<id>394930</id>
<file-original>/original/0/24000/24099/db27c88c1b8bc28fbfae87115b73bde4a1536faa</file-original>
<thumb>http://eas.4.0.mad.pf-berlin.de/eas/get/0/24000/24099/ce837468e1be583ef2450c9f4594dad17a3cb921</thumb>
<pool>Ägyptologie</pool>
<poolpath><path>Ägyptologie</path></poolpath>
<schlagworte>
</schlagworte>
</bild>
</bilder>
Beachten Sie Folgendes:
Neben den in EAS_PRODUCE festgelegten Versionen gibt es die Option original um auf das Original-Asset zuzugreifen und seit Version 4.0.265 auch die Option root, mit der auf das Root-Asset zugegriffen werden kann.
Unterhalb von Header, Main und Footer gibt es noch einen Bereich PHP. Dieser kann genutzt werden, um eigene Outputs zu definieren und dafür auf dieser Struktur-Ebene existierende Outputs zu verwenden.
if ({row_i}%2==0) {
{PHP_EXTRA_OUTPUT}="GERADE";
} else {
{PHP_EXTRA_OUTPUT}="UNGERADE";
}
Mit diesem PHP wird {row_id} genutzt, um mit einer mathematischen Formel festzustellen, ob das Rendern gerade in einer ungeraden oder gerade Objekt-Zeile angelangt ist. Es wird der eigene Output {PHP_EXTRA_OUTPUT} gesetzt. Dieser lässt sich auf derselben Ebene im Main Bereich verwenden. Das PHP wird jeweils pro Rendern des Main-Bereichs neu berechnet.
Intern passiert Folgendes:
Sie können in dem PHP globale Variablen der Form $_SERVER[‘MY_GLOBAL_VARIABLE’] verwenden, um Werte zwischenzuspeichern.