Tutorial: Editor individualisieren

Transcription

Tutorial: Editor individualisieren
Tutorial:
Editor individualisieren
Version: 1
Autor: Daniel Neumann
Inhaltsverzeichnis
1
1.1
1.2
1.3
1.3.1
1.3.2
1.3.3
Editor individualisieren....................................................................................
Piktogramme...................................................................................................
Objektstrukturfenster.......................................................................................
Lokalisieren von Bezeichnern.........................................................................
Bezeichner für Schemata................................................................................
Bezeichner für Listenansicht...........................................................................
Bezeichner für Feldbezeichnungen in Pflegemasken.....................................
2
2
3
7
8
8
9
Voraussetzungen
Für dieses Tutorial werden keine weiteren Voraussetzungen als für die vorhergehenden
Tutorials benötigt.
Informationsmodell festlegen
Transformationen entwickeln
Beschreibung
Die dritte Folge zeigt, wie sich die Pflege im onion.net Editor mit wenigen Handgriffen durch
sprechende, lokalisierte Bezeichner, zusätzliche, sortierbare Listenansichten und nette
Piktogramme verbessern lässt. Dieser Schritt ist für die Funktion unserer Zitatverwaltung
zwar nicht zwingend notwendig, der Aufwand lohnt sich jedoch.
Hinweis: Allein durch die Vergabe von Piktogrammen erleichtern Sie die Arbeit für den
Redakteur. Es entfällt die Notwendigkeit, jeden Strukturpunkt lesen zu müssen.
Zeichenerklärung
Text, der grün umrandet und mit dem Pfeil-Symbol gekennzeichnet ist, enthält
konkrete Anweisungen, was als nächstes zu tun ist.
Texte in solchen Kästchen enthalten Tipps und Tricks.
Quellcode wird in solch blauen Boxen dargestellt.
Tutorial: Editor individualisieren
1
1 Editor individualisieren
1 Editor individualisieren
Wir erstellen nun ein Modul, in dem alle unsere Anpassungen vorgenommen werden.
Klicken Sie dazu in der Detailansicht mit rechts auf den „Editor“ und wählen Sie
unter „Neu“ das „Modul“. Nennen Sie das Modul „Zitatverwaltung“.
1.1 Piktogramme
Im ersten Schritt vergeben wir für unsere Zitatdatentypen einige Piktogramme. Diese werden
unter anderem in der Baumansicht des Editors genutzt und erhöhen so die Übersichtlichkeit
bei der Arbeit.
Erstellen Sie dazu unterhalb des neu angelegten Moduls „Zitatverwaltung“ ein
Dokument vom Typ „Icons“. Nennen Sie es „Icons“.
In das Feld „Schema“ unter Konfiguration/Icon können Sie nun das Schema ziehen, für das
Sie Icons vergeben möchten. Wir adressieren nun das Schema der Zitatablage und laden
dazu ein kleines und ein großes Piktogramm in das System.
Tutorial: Editor individualisieren
2
1 Editor individualisieren
Wechseln Sie in die Schemaverwaltung und ziehen Sie aus der Baumansicht
das Schema „quotations/container“ in das Feld „Schema“ Ihres neu angelegten
Icons-Dokuments. Vergeben Sie nun ein großes und ein kleines Icon, das Sie
über einen Klick auf die jeweilige „Durchsuchen“-Schaltfläche hochladen können.
Tipp: das kleine Icon sollte eine Größe von 20x20 Pixeln haben, das Große
48x48.
Speichern Sie nun das Icon-Dokument. Wenn Sie jetzt die Editor-Ansicht
aktualisieren (F5), sehen Sie schon die neu vergebenen Icons; sowohl in der
Baumansicht als auch beim Rechtsklick auf das Wurzelelement unter dem Punkt
„Neu“.
Wir laden nun passende Piktogramme für die restlichen Datentypen ins System.
Wechseln Sie dazu wieder in das neue Icon-Dokument und wählen Sie in der
Detailansicht unten die Funktion „Icon hinzufügen“ aus. Jetzt können Sie Icons
für ein weiteres Schema anlegen. Gehen Sie wie oben vor und vergeben Sie
Icons für die Schemata „quotations/quotation“, „collections/container“ sowie
„collections/collection“. Geben Sie nun das Dokument zurück und aktualisieren
Sie die Editor-Ansicht (F5). Unterhalb von „Zitate“ und „Zitatsammlungen“ sehen
Sie nun die neu vergebenen Icons.
1.2 Objektstrukturfenster
Im nächsten Schritt definieren wir uns ein Objektstrukturfenster. Dieses reißt den Inhalt von
Objekten in einer Listenform an und dient der Übersichtlichkeit. Was dabei herauskommen
wird, ist eine Listenansicht ähnlich der, die angezeigt wird, wenn das Editor-Modul
„Zitatverwaltung“ ausgewählt wird.
Legen Sie dazu unterhalb des Editor-Moduls „Zitatverwaltung“ ein Objekt vom
Typ „Objektstrukturfenster“ an. Nennen Sie es auch „Objektstrukturfenster“.
Übernehmen Sie dann als Inhalt folgenden Standard-Inhalt.
Tutorial: Editor individualisieren
3
1 Editor individualisieren
<childrenListViews
xmlns:onion="http://onionworks.net/2004/data"
xmlns="http://onionworks.net/2004/webeditor/customizing">
<listView schemaLocation="">
<columns>
<column
id="name"
dataType="xs:string"
width="100%"
/>
</columns>
<childType
schemaLocation=""
structureInvisible="false"
handleDerivations="true"
>
<column ref="name" select="$onion:name" />
</childType>
</listView>
</childrenListViews>
Um festzulegen, für welches Schema die Listenansicht genutzt werden soll, tragen wir das
entsprechende Schema in das Attribut „schemaLocation“ des Elements <listView> ein. In
diesem Schritt soll es eine Listensicht für unsere Zitat-Ablage (quotations/container) werden.
Am einfachsten geht das wieder über Drag & Drop: ziehen Sie aus der
Schemaverwaltung das Schema quotations/container in das leere Attribut
„schemaLocation“.
<listView
schemaLocation="http://example.com/2009/showcase/quotations/container"></listView>
Als Kindtyp (<childType>) für die Listenansicht sollen die Zitate angezeigt werden. Ziehen
Sie das Schema „quotations/quotation“ in das Attribut „schemaLocation“ des
<childType>-Elements.
<childType
xmlns:onion="http://onionworks.net/2004/data"
schemaLocation="http://example.com/2009/showcase/quotations/quotation"
structureInvisible="false"
handleDerivations="true"
/>
Unsere Listenansicht soll drei Spalten erhalten. Wir wollen den Autor, das Zitat und das Bild
tabellarisch darstellen.
Tutorial: Editor individualisieren
4
1 Editor individualisieren
Dazu kopieren wir das vorhandene <column>-Element noch zweimal.
<columns>
<column
id="name"
dataType="xs:string"
width="100%"
/>
<column
id="name"
dataType="xs:string"
width="100%"
/>
<column
id="name"
dataType="xs:string"
width="100%"
/>
</columns>
Geben Sie bei der ID der jeweiligen Spalte den Namen des Elements aus dem Schema an,
das angezeigt werden soll.
Dies sind in unserem Fall „author“, „quote“ und „image“. Ändern Sie auch die
Breite (width) der jeweiligen Spalte auf 15%, „*“ und 5%. Geben Sie bei der
Spalte „image“ zusätzlich das Attribut align=“center“ ein.
Tipp: Die Angabe „*“ bedeutet, dass diese Spalte den restlichen zur Verfügung
stehenden Platz einnimmt.
Nun beschreiben wir, wie sich das Zitat in der Listenansicht repräsentiert.
Dazu benötigen wir auch unter <childType> drei <column>-Elemente.
Im Attribut „refs“ tragen wir die ID der Spalte ein, die oben unter <columns>
vergeben wurde. Im Attribut „select“ wird nun der X-Path-Ausdruck für das
auszugebende Feld eingetragen. Im Falle von „author“ und „quote“ ist es
„quotation/author“ bzw. „quotation/quote“, bei „image“ ist es der folgende
Ausdruck:
Tutorial: Editor individualisieren
5
1 Editor individualisieren
onion:choose(quotation/image, onion:createIcon($onion:id, quotation/image,
48, 48), '')
Dieser Aufruf erzeugt für die Darstellung eine neue Grafik in der Größe 48x48 Pixel. Insgesamt
sieht die Konfiguration nun wie folgt aus:
<childrenListViews
xmlns:onion="http://onionworks.net/2004/data"
xmlns="http://onionworks.net/2004/webeditor/customizing">
<listView
schemaLocation="http://example.com/2009/showcase/quotations/container">
<columns>
<column
id="author"
dataType="xs:string"
width="15%"
/>
<column
id="quote"
dataType="xs:string"
width="*"
/>
<column
id="image"
dataType="xs:string"
width="5%"
align="center"
/>
</columns>
<childType
schemaLocation="http://example.com/2009/showcase/quotations/quotation"
structureInvisible="false"
handleDerivations="true"
>
<column ref="author" select="quotation/author" />
<column ref="quote" select="quotation/quote" />
<column ref="image" select="onion:choose(quotation/image,
onion:createIcon($onion:id, quotation/image, 48, 48), '')" />
</childType>
</listView>
</childrenListViews>
Aktualisieren Sie nun den Editor und klicken Sie links auf Zitate. Sie sehen nun rechts über
der bekannten Detailansicht die soeben erstellte Listenansicht.
Tutorial: Editor individualisieren
6
1 Editor individualisieren
Tipp: Jede Listenansicht lässt sich benutzerdefiniert sortieren. Dafür genügt ein
Klick auf die Überschrift der jeweiligen Spalte.
1.3 Lokalisieren von Bezeichnern
Wir geben nun unseren Datentypen sprechende Namen.
Für die Lokalisierung wird in unserem Editor-Modul „Zitatverwaltung“ ein neues Objekt
„Ressourcen“ benötigt. In diesem werden wiederum Ressourcen gespeichert, die jeweils
eine Sprache beinhalten.
Legen Sie in dem Editor-Modul „Zitatverwaltung“ ein Objekt vom Typ
„Ressourcen“ an und nennen es auch „Ressourcen“. Darin legen Sie ein weiteres
Objekt „Ressourcen“ an und nennen es „de“. Es soll die deutschsprachigen
Einträge beinhalten.
In das Objekt „de“ übernehmen Sie folgenden Standard-Eintrag:
<resources>
<namespace name="Onion.Client.WebUI">
<type name="SchemaTypeNames"></type>
<namespace name="ListViews"></namespace>
<namespace name="Editor"></namespace>
</namespace>
</resources>
Tutorial: Editor individualisieren
7
1 Editor individualisieren
1.3.1 Bezeichner für Schemata
Zunächst wollen wir unseren Schemata sprechende Namen geben. Dazu muss der Abschnitt
<type name=“SchemaTypeNames“> bearbeitet werden.
Für jedes Schema legen wir darin ein item-Element an. Dieses Element hat ein
Attribut „name“, das die Adresse des Schemas beinhaltet. Das Name-Attribut
können Sie aus der Schemaverwaltung per Drag & Drop befüllen. Nehmen Sie
alle vier von uns angelegten Wurzelelemente in jeweils ein item-Element. Als
Inhalt des jeweiligen Item-Elements nehmen wir den deutschen Bezeichner
„Zitate“, „Zitat“, „Zitatsammlungen“, „Zitatsammlung“.
<type name="SchemaTypeNames">
<item
name="http://example.com/2009/showcase/quotations/container">Zitate</item>
<item
name="http://example.com/2009/showcase/quotations/quotation">Zitat</item>
<item
name="http://example.com/2009/showcase/collections/container">Zitatsammlungen</item>
<item
name="http://example.com/2009/showcase/collections/collection">Zitatsammlung</item>
</type>
Nach dem Speichern können Sie die Änderungen direkt überprüfen. Klicken Sie mit rechts
auf das Wurzelelement und unter „Neu“ erscheinen schon die eben vergebenen Namen
„Zitatsammlungen“ und „Zitate“. Unter „Zitate“ können Sie über „Neu“ ein „Zitat“ anlegen;
unter den „Zitatsammlungen“ eine „Zitatsammlung“.
1.3.2 Bezeichner für Listenansicht
Nun erhalten die Spaltentitel unserer neuen Listenansicht sprechende Namen. Dazu
bearbeiten wir in unserem „de“-Objekt den Bereich
<namespace name="ListViews"></namespace>
.
Fügen Sie in dem namespace-Element ein Type-Element mit dem leeren Attribut
„name“ ein. In dieses name-Attribut ziehen Sie das Schema, das die neue
Listenansicht enthält. Dies ist in diesem Fall „quotations/container“.
<namespace name="ListViews">
<type name=""></type>
</namespace>
Tutorial: Editor individualisieren
8
1 Editor individualisieren
Innerhalb dieses Type-Elements legen Sie nun für jede Spalte in der Listenansicht
ein Item-Element an. Als name-Attribut bekommt es „column.Spalten-ID“, wobei
Sie für Spalten-ID die jeweilige ID der Spalte eingeben, die oben vergeben
worden ist. Als Inhalte der Item-Elemente wählen Sie wieder die entsprechenden
deutschen Bezeichner „Autor“, „Zitat“ und „Bild“.
<item name="column.author">Autor</item>
<item name="column.quote">Zitat</item>
<item name="column.image">Bild</item>
Überprüfen Sie diese Änderung, indem Sie auf das Objekt „Zitate“ klicken. Die Überschriften
der ListView.
1.3.3 Bezeichner für Feldbezeichnungen in Pflegemasken
Zuletzt erhalten unsere automatisch generierten Pflegemasken deutsche Feldbezeichnungen.
Diese werden im „de“-Objekt im Element <namespace name=“Editor“> gepflegt.
Hier werden vier Type-Elemente benötigt, eines für jedes Schema, das wir lokalisieren
möchten. Innerhalb dieser Type-Elemente benötigen wir für jedes Element im Schema ein
eigenes Item-Element. Die Schreibweise, um die Elemente im Schema anzusprechen, wird
an einem Beispiel wie folgt dargestellt:
<type name="http://example.com/2009/beispielschema">
<item name="Element:beispielschema#Header">Header des Schemas</item>
<item name="Element:elementname#Label">Bezeichnung eines Elementes des
Schemas</item>
<item name="Attribute:attributname#Label">Bezeichnung eines Attributes des
Schemas</item>
<item name="Element:elementname#AddNewItem">Bezeichnung für die Funktion,
neue Eingabemöglichkeiten für ein Element anzulegen</item>
</type>
Für die vier Schemata in diesem Tutorial sieht das Ergebnis dann so aus:
Tutorial: Editor individualisieren
9
1 Editor individualisieren
<namespace name="Editor">
<type name="http://example.com/2009/showcase/quotations/container">
<item name="Element:quotation#Header">Zitate</item>
</type>
<type name="http://example.com/2009/showcase/quotations/quotation">
<item name="Element:quotation#Header">Zitat</item>
<item name="Element:author#Label">Autor</item>
<item name="Element:quote#Label">Zitat</item>
<item name="Element:image#Label">Bild</item>
</type>
<type name="http://example.com/2009/showcase/collections/container">
<item name="Element:container#Header">Zitatsammlungen</item>
</type>
<type name="http://example.com/2009/showcase/collections/collection">
<item name="Element:collection#Header">Zitatsammlung</item>
<item name="Attribute:interval#Label">Intervall</item>
<item name="Element:quotation#Label">Zitate</item>
<item name="Element:quotation#AddNewItem">+ Weiteres Zitat hinzufügen</item>
</type>
</namespace>
Um diese Änderung zu überprüfen, wechseln Sie nun in Ihre bereits angelegten Objekte der
vier Typen. Sie werden in der Detailansicht die neuen Bezeichner sehen.
Die komplette Konfiguration der Ressource „de“ sieht nun wie folgt aus:
Tutorial: Editor individualisieren
10
1 Editor individualisieren
<resources>
<namespace name="Onion.Client.WebUI">
<type name="SchemaTypeNames">
<item
name="http://example.com/2009/showcase/quotations/container">Zitate</item>
<item
name="http://example.com/2009/showcase/quotations/quotation">Zitat</item>
<item
name="http://example.com/2009/showcase/collections/container">Zitatsammlungen</item>
<item
name="http://example.com/2009/showcase/collections/collection">Zitatsammlung</item>
</type>
<namespace name="ListViews">
<type name="http://example.com/2009/showcase/quotations/container">
<item name="column.author">Autor</item>
<item name="column.quote">Zitat</item>
<item name="column.image">Bild</item>
</type>
</namespace>
<namespace name="Editor">
<type name="http://example.com/2009/showcase/quotations/container">
<item name="Element:quotation#Header">Zitate</item>
</type>
<type name="http://example.com/2009/showcase/quotations/quotation">
<item name="Element:quotation#Header">Zitat</item>
<item name="Element:author#Label">Autor</item>
<item name="Element:quote#Label">Zitat</item>
<item name="Element:image#Label">Bild</item>
</type>
<type name="http://example.com/2009/showcase/collections/container">
<item name="Element:container#Header">Zitatsammlungen</item>
</type>
<type name="http://example.com/2009/showcase/collections/collection">
<item name="Element:collection#Header">Zitatsammlung</item>
<item name="Attribute:interval#Label">Intervall</item>
<item name="Element:quotation#Label">Zitate</item>
<item name="Element:quotation#AddNewItem">+ Weiteres Zitat
hinzufügen</item>
</type>
</namespace>
</namespace>
</resources>
Geschafft!
Durch wenige Konfigurationsschritte haben wir dem Redakteur eine individuelle
Pflegeumgebung geschaffen.
Tutorial: Editor individualisieren
11