Der Aufbau von Artikeln wird im Menüpunkt "Konfiguration" an den Anwendungsfall angepasst. Dort wird festgelegt, wie sich Artikel zusammensetzen, welche Kategoriensysteme es gibt und welche Annotationen beziehungsweise Apparate (Fußnoten, Anmerkungen) möglich sind. Eine vollständige Konfiguration besteht aus Typen für folgenden Komponenten:
- Projekte (=projects)
- Artikel innerhalb eines Projekts (=articles)
- Abschnitte innerhalb eines Artikels (=sections)
- Inhalte innerhalb eines Abschnitts (=items)
- Annotationen innerhalb von Textfeldern (=links)
- Fußnoten innerhalb von Textfeldern (=footnotes)
- Kategorien, die in Inhalten und für die Annotation genutzt werden (=properties).
Für jeden Typ wird eine eigene JSON-Konfiguration mit Schlüsseln und Werten angelegt, darin sind beispielsweise die Beschriftungen von Feldern definiert. Nachdem die Typen angepasst und miteinander verknüpft wurden, steht fest, wie Artikel angezeigt und bearbeitet werden können.
Einige Einstellungen finden sich in mehreren Typen wieder:
- Spalten in Tabellenansichten werden über den Schlüssel `columns` definiert.
- Felder, die in Artikeln, Abschnitten oder Inhalten angezeigt werden oder bearbeitbar sind, werden im Schlüssel `fields` aufgeführt.
- Hierarchie und Verknüpfung der Typen:
- Bei Projekten werden im Schlüssel `articles` die möglichen Artikeltypen des Projekts festgelegt.
- Bei Artikeln werden im Schlüssel `sections` die untergeordneten Abschnitte festgelegt.
- Bei Abschnitten werden im Schlüssel `items` die untergeordneten Inhalte festgelegt.
- Für Kategorien-Felder legt der Schlüssel `types` fest, welches Kategoriensystem (properties) verwendet wird
- Für Text-Felder, in die Annotationen eingefügt werden können, legt der Schlüssel `types` fest, welche Annotationen oder Apparate erlaubt sind. Diese werden dann auch in der Toolbar angezeigt.
1. Konfiguration von Artikeln
Ein Artikel beschreibt ein Objekt. In der Konfiguration wird angegeben, wie ein Artikel in der Einzelansicht und in der tabellarischen Ansicht dargestellt werden soll. Zudem wird festgelegt, welche Abschnitte ein neuer leerer Artikel enthält:
Schlüssel | Beschreibung |
---|---|
fields | Welche Felder werden im Artikel verwendet? Siehe den Abschnitt Feldkonfiguration. |
columns | Welche Spalten sollen in der Artikelliste angezeigt werden können? Eine Liste mit Definitionen der Tabellenspalten. |
preview | Welche Inhalte werden in Vorschaukacheln angezeigt? Hier wird definiert, aus welchen Inhalten (items) die Bilder und Texte entnommen werden. Siehe die Details unten. |
header | Wie setzt sich die Titelzeile der Artikelansicht zusammen? Eine Liste mit Definitionen der Kopfzeileneinträge in der Einzelartikelansicht. |
sections | Welche Abschnitte kann ein Artikel enthalten? Eine benannte Liste mit Abschnittsdefinitionen. Aus dieser Liste wird beim Erstellen eines Artikels ein leerer Artikel erstellt. |
namespaces | Welche Namensräume werden in den norm_data-Feldern verwendet? Das Objekt enthält als Schlüssel den Namespace, zum Beispiel "urn" und als Wert ein Objekt mit den Schlüsseln button und baseurl. Die baseurl enthält die Auflösung des Namespace (z.B. https://nbn-resolving.de/urn:). Wenn ein Button erzeugt werden soll, wird im button-Schlüssel die Beschriftung des Buttons angegeben. |
pipelines | Welche Pipelines werden über einen Button verlinkt? Das Objekt enthält als Schlüssel die Button-Bezeichnung und als Wert den Namen der Pipeline. |
footnotes | Welche Fußnotentypen werden im Artikel verwendet und angezeigt? Eine Liste der Typnamen. |
toolbar | Soll die Toolbar beim Start initialisiert werden (true) oder erst bei Bedarf (false)? |
1.2 Abschnitte in einem Artikel (sections)
Die Definition der Abschnitte bestimmt sowohl die Reihenfolge als auch die Hierarchie:
Schlüssel | Beschreibung |
---|---|
type | Abschnittstyp |
caption | Name des Abschnitts (optional) |
parent | Schlüssel des übergeordneten Abschnitts, um eine Hierarchie herzustellen (optional) |
weight | Gewichtung des Abschnitts in der Einzelartikelansicht. Positive Gewichte verschieben den Abschnitt nach unten, negative Gewichte nach oben (optional) |
Damit die Gewichtung umgesetzt werden kann, müssen die Schlüssel der Abschnitte dem Abschnittstyp entsprechen. Liegen mehrere Abschnitte vom gleichen Typ vor, kann über den Namen weiter differenziert werden. Dazu wird der Schlüssel nach folgendem Schema gebildet: <sectiontype>[<sectionname>]
. Beispiel, um Abschnitte mit dem Typ "text" und dem Namen "Beschreibung" nach oben zu ziehen:
"text[Beschreibung]": {
"type": "text",
"caption": "Beschreibung",
"weight": -6
}
1.2 Konfiguration der Artikelvorschau (preview)
Schlüssel | Beschreibung |
---|---|
images | Eine Liste mit itemtypes. Aus der Liste der Items eines Artikels wird das erste Bild ausgewählt. Sind darunter veröffentlichte Bilder, werden diese bevorzugt. |
text | Eine Liste mit itemtypes. Aus der Liste der entsprechenden Items wird der erste Text als Vorschautext angezeigt, sofern kein Bild verfügbar ist. |
summary | Eine Liste mit Spalten, die in der Spaltenkonfiguration definiert sein müssen. Die Inhalte der Spalten werden in der Vorschau als Details angezeigt. |
Beispiel:
"preview": {
"images": [
"images"
],
"text": [
"transcriptions"
],
"summary": [
"source",
"location",
"date"
]
}
2. Abschnitte
Ein Abschnitt gruppiert die Inhalte eines Artikels. Abschnitte sind hierarchisch angeordnet und jeder Abschnitt enthält ein Notizfeld. In der Konfiguration wird angegeben:
Schlüssel | Beschreibung |
---|---|
sections | Welche Unterabschnitte sind vorgesehen (sectiontypes)? |
items | Welche und wie viele Einträge enthält ein Abschnitt (itemtypes)? |
fields | Welche Annotationen sind im Notizfeld möglich? In fields.comment.types wird dazu eine Liste von linktypes angegeben. |
name | Wie soll die Bezeichnung des Abschnitts gebildet werden? Enthält ein Objekt mit folgenden Schlüsseln:
|
view | Wie wird der Abschnitt dargestellt? Zu den Möglichkeiten siehe unten. |
display | Soll der Abschnitt ausgeblendet werden (false)? Soll der Abschnitt hervorgehoben werden (highlight)? Enthält der Abschnitt Zusatzinformationen und soll kleiner dargestellt werden (addendum)? |
public | Soll der Abschnitt für Gäste sichtbar sein (true|false)? |
Darstellungsmöglichkeiten
Der view-Schlüssel eines Abschnitttyps kann entweder einen der in der folgenden Tabelle aufgelisteten Werte enthalten oder ein Objekt, das im name-Schlüssel einen dieser Werte enthält. Mit einem Objekt sind weitere Einstellungen möglich, zum Beispiel um eine gruppierte Tabelle und eine Karte anzuzeigen:
"view": {
"name": "table",
"grouped": false,
"widgets": {
"map": {
"itemtype":"geolocations"
}
}
}
Die folgenden Werte sind im view-Schlüssel eines Sectiontype möglich:
Wert | Beschreibung |
---|---|
table | Die Einträge werden tabellarisch aufgelistet, wobei sich die Spaltennamen aus der Felddefinition der Einträge ergeben. Diese Darstellung wird eingesetzt, um Kategorien mit Ergänzungen zu erfassen. Beispiel: eine Liste zitierter Literatur, in der die Titel in einer Spalte und die konkreten Seitenzahlen in einer weiteren Spalte erfasst werden. Für jeden Eintragstyp wird eine eigene Tabelle gebildet. Die Spalten der Tabelle ergeben sich aus den in der Item-Konfiguration angegebenen Feldern. Sind Einträge mit Bildern vorhanden (die auch auf dem Server liegen), dann wird vor der Tabelle eine Kachelansicht aller Bilder angezeigt. Um eine gruppierte Tabelle auszugeben, in der die Item-Bezeichnungen in der ersten Spalte erscheinen, wird folgendes Objekt angegeben:
|
stack | Die Felder der Einträge werden untereinander aufgelistet, so dass für jedes Feld möglichst viel Platz zur Verfügung steht. Diese Darstellung eignet sich zum Beispiel für größere Textfelder. Auf diese Weise können auch eine Transkription, Übersetzung, Quellenangabe und Datierung eines Textes untereinander angezeigt werden. |
grid | Die Einträge werden in einem Gitter angezeigt. Die Größe des Gitters wird im Abschnitt erfasst (section.layout_cols, section.layout_rows). Jeder Eintrag wird dann in diesem Gitter positioniert, wobei in einer Zelle auch mehrere Einträge gestapelt werden können (items.pos_x, items.pos_y, items.z). Diese Form der Darstellung eignet sich beispielsweise, um die Position von Wappen auf einem Objekt zu erfassen. Die Zählung der Positionen beginnt bei 1. |
tiles | Die Einträge werden als Kacheln dargestellt. Die Kachelansicht eignet sich zur Darstellung von Kategorien mit Bildern (properties.file) - die Bilder werden in einer Kachel links und die anderen Felder rechts ausgegeben. |
Zusätzlich können Widgets angezeigt werden, die Inhalte zusammenfassen. Es stehen folgende Widgets zur Verfügung:
- map zur Anzeige einer Karte.
- thumbs zur Anzeige von Bildern
3. Inhalte
Items enthalten die Inhalte eines Artikels. Je nach Type enthält ein Item unter anderem Texte, Kategorien, oder Dateien. Dazu wird angegeben, welche Felder der Datenbank für ein Item verwendet werden.
Schlüssel | Beschreibung |
---|---|
fields | Welche Felder des Datensatzes werden genutzt? Siehe unten zur Feldkonfiguration. |
display | Soll der Inhalt ausgeblendet werden (false)? Soll der Eintrag hervorgehoben werden (highlight)? Ist der Eintrag eine Zusatzinformation, die kleiner dargestellt werden soll (addendum)? |
edit | Ist der Inhalt bearbeitbar? (true | false; default = true) |
public | Soll der Inhalt für Gäste sichtbar sein (true|false)? |
fileroot | Falls der Inhalt Dateien oder Bilder referenziert, der Basispfad zum Ordner, ausgehend vom Datenbankverzeichnis. |
4. Kategorien
Für jedes Kategoriensystem wird eine Konfiguration mit dem Scope "properties" angelegt. Die Konfiguration umfasst folgende Schlüssel:
Schlüssel | Beschreibung |
---|---|
displayfield | Welche Spalte enthält die Bezeichnung der Kategorie (lemma|name)? Es kann ein aus allen Lemmata zusammengesetzter Pfad angezeigt werden (path). |
level | Ein Kategoriensystem kann neben inhaltlichen Einträgen auch durch übergeordnete Kategorien strukturiert werden. Zum Beispiel lassen sich Literaturtitel in die Kategorien "Quellen", "Archivalien" und "Literatur" unterteilen. Welches ist die erste inhaltliche Ebene? (optional) |
columns | Welche Spalten sollen in der Tabellenansicht dargestellt werden? (siehe unten zur Spaltenkonfiguration) (optional) |
fields | Welche Felder sollen verwendet werden? Siehe unten zur Feldkonfiguration. Es werden folgende Felder unterstützt: file_name, parent_id, ancestors, lemma, name, related_id, properties_id, sortkey, unit, content, elements, source_from, iscategory,ishidden,comment, signature, published, norm_data, norm_iri, iri, image |
fileroot | Falls die Kategorie Dateien oder Bilder referenziert, der Basispfad zum Ordner, ausgehend vom Datenbankverzeichnis. |
5. Annotationen & Apparate
Die möglichen Annotationen und Anmerkungsapparate werden beide über Linktypen konfiguriert:
- Annotationen zeichnen eine Textstelle mit einem Tag aus. Dabei kann es sich unter anderem um die Kennzeichnung kursiver Texte, die Kennzeichnung von Worttrennern oder verlorener Textteile, um Verweise auf Literatur oder andere Kategorien handeln. Jedes Tag kann weitere Attribute enthalten und auf Kategorien (properties) verweisen.
- Apparate in der Form von Fußnoten enthalten weiteren Text zu einer Textstelle.
Annotationen und Apparate werden in der Datenbank über XML-Tags erfasst und zur Darstellung auf der Seite in HTML-Tags umgewandelt. Die Linkkonfiguration enthält Angaben dazu, wie diese Links dargestellt und wie die Buttons in der Werkzeugleiste gestaltet werden:
Schlüssel | Beschreibung |
---|---|
shortcut | Shortcut zum Einfügen der Annotation. |
toolbutton | Soll in der Werkzeugleiste ein Toolbutton angezeigt werden (true oder false)? |
group | Toolbuttons innerhalb einer Kategorie werden zu einem Dropdown zusammengefasst. Um Toolbuttons zu andere Gruppen zusammenzufassen, kann ein gemeinsamer Wert festgelegt werden. Der Wert "default" sorgt dafür, dass der Toolbutton einzeln bleibt. |
tag_type | Wie wird das Tag bei der Ausgabe dargestellt?
|
tag_renderer | Optionale Angaben zur Ausgabe der Tags, abhängig von der Art des Tags:
|
attributes | Bei Text-Tags optional ein Objekt mit der Konfiguration von Attributen. Jeder Schlüssel ist ein Attributname, der Wert enthält wiederum die folgenden Schlüssel:
|
html_tag | Die XML-Tags werden für die Anzeige auf der Webseite in HTML-konforme Tags konvertiert. Das Feld gibt an, welches HTML-Tag verwendet werden soll. In der Regel sollten alle XML-Tags in span-Tags konvertiert werden, eine Differenzierung der span-Tags kann über Klassen erfolgen. Jedes konvertierte Tag erhält die Klasse xml_tag. Zusätzlich wird jedes Tag mit einer Klasse nach dem Schema "xml_tag_<name>" versehen. Wenn das XML-Tag zum Beispiel "wtr" heißt, wird nach der Transformation die Klasse "xml_tag_wtr" vergeben. Format-Tags erhalten zusätzlich die Klasse xml_format. Bracket-Tags werden in drei Tags konvertiert. Die öffnende Klammer erhält die Klasse xml_bracket_open, die schließende Klammer die Klasse xml_bracket_close und der enthaltende Text die Klasse xml_bracket_content. |
html_prefix | Bei Bracket-Tags der für die öffnende Klammer verwendete Wert. Bei Text-Tags wird dieser Wert dem in html_content festgelegten Wert vorangestellt. |
html_content | Bei Text-Tags wird dieser Werte bei der Konvertierung zu HTML innerhalb des Tags ausgegeben. So können zum Beispiel Worttrenner durch einen Mittelpunkt dargestellt werden. |
html_postfix | Bei Bracket-Tags der für die schließende Klammer verwendete Wert. Bei Text-Tags wird dieser Wert an den in html_content festgelegten Wert angehängt. |
css_style | CSS-Angaben, die in die Webseite eingebettet werden, um das Tag zu gestalten. Die CSS-Angaben können sich auf die Klassen der konvertierten Tags beziehen (siehe die Konfiguration von html_tag). Beispiel, um einen Umbruch nach einem Tag zu erzeugen:
|
link | Wenn das Tag auf einen anderen Datensatz verweist, dann muss dies im link-Schlüssel angegeben werden. Folgende Werte sind möglich:
Im Fall von properties, internal und external befindet sich der zugehörige Datensatz in der links-Tabelle (Felder from_tab, from_id, from_field, from_tagname, from_tagid). In der Links-Tabelle jeweils in den Feldern link_tab und link_id angegeben, auf welche Tabelle (properties, articles, sections, footnotes) und welchen Datensatz innerhalb der Tabelle verwiesen wird. Achtung: nicht mit dem links-Schlüssel (Plural) verwechseln. |
targets | Wenn das Tag auf einen anderen Datensatz verweist, werden die Tabelle und darin die erlaubten Typen angegeben. Targets ist ein Objekt mit dem Tabellennamen als Schlüssel und einem Array der Typen (z.B. aus den propertytypes oder den sectiontypes.). |
links | Fußnoten können im content-Feld XML-Text enthalten. Analog zur Feldkonfiguration für Items, wird im links-Schlüssel festgelegt, welche Links und damit Tags erlaubt sind. Achtung: nicht mit dem link-Schlüssel (Singular) verwechseln. |
Eine besondere Behandlung erfahren Umbrüche. Umbrüche werden im Editor mit Shift+Enter erzeugt. Sie werden in XML als leere nl-Tags gespeichert und im HTML als alleinstehende br-Tags ausgegeben. In den Types muss dafür ein nl-Link angelegt und wie folgt konfiguriert sein:
{
"tag_type": "break",
"toolbutton": false
}
Sollen Umbrüche in einem Feld möglich sein, dann muss das nl-Tag in der Feldkonfiguration im types-Schlüssel aufgeführt werden.
6. Die Feldkonfiguration
Die Feldkonfiguration umfasst im einfachsten Fall eine Liste mit Feldnamen als Schlüssel und Beschriftungen als Werten. Sollen weitere Eigenschaften konfiguriert werden, kann als Wert ein Objekt mit folgenden Schlüsseln angegeben werden:
Schlüssel | Beschreibung |
---|---|
caption | Beschriftung des Feldes. |
showcaption | Soll die Beschriftung angezeigt werden (true | false)? |
display | Soll das Feld ausgeblendet werden (false)? Soll das Feld hervorgehoben werden (highlight)? Ist das Feld eine Zusatzinformation, die kleiner dargestellt werden soll (addendum)? |
format | Wenn der Inhalt eines Feldes etwas anderes als eine Zeichenkette umfasst, wird das Format angegeben:
|
baseurl | Bei Feldern vom Typ imageurl wird der Dateiname des Bildes aus den Feldern file_path und file_name gebildet und an die baseurl angehängt. Beispiel: für eine baseurl: https://www.inschriften.net/fileadmin/ . |
template | Bei JSON-Feldern wird standardmäßig eine Tabelle ausgegeben. Eine kompakte Liste wird mit dem Template "list" erzeugt. |
types | In XML-Feldern: Welche Annotationen sind erlaubt? Es wird eine Liste der Link-Namen oder der Link-Kategorien angegeben. In Property-Feldern: Welche Art von Eigenschaften wird verlinkt? Der Name des Propertytyps wird als Zeichenkette angegeben. |
edit | Ist das Feld bearbeitbar oder nicht (true|false)? |
7. Die Definition von Tabellenspalten
Schlüssel | Beschreibung |
---|---|
name | Eindeutige Bezeichnung des Feldes. Diese Bezeichnung wird in Abfragen in den Query-Parametern verwendet. |
key | Schlüssel zum Extrahieren der Daten aus dem Artikel. Als Exktraktionsschlüssel können einfache Felder des Artikelobjekts (z.B. `title`) oder auch verschachtelte Felder mit Dot-Notation angegeben werden (z.B. `project.shortname`). Um auf Listen zuzugreifen, kann ein Sternchen-Platzhalter verwendet werden (z.B. `items.{*}.value`). Die Listen können mit Bedingungen in eckigen Klammern gefiltert werden (z.B. `items.{*}[itemtype=conditions].date`). Für weitere Details siehe die CakePHP-Dokumentation zur Hash-Syntax. Um verschachtelte Felder formatiert (z.B. als JSON-Dictionary) auszugeben, muss als Schlüssel ein Array mit mindestens zwei Elementen angegeben werden. Die ersten Elemente enthalten den Extraktionsschlüssel, das letzte Element den Namen des zu formatierenden Feldes, zum Beispiel: `["project","description"]`. Ohne Array-Notation wird bei verschachtelten Feldern der Rohwert des Feldes (z.B. ein JSON-String) ausgegeben. |
caption | Überschrift in der Tabelle |
default | Soll die Spalte standardmäßig ausgegeben werden (true|false)? |
aggregate | Aggregationsfunktion, wenn mehrere Werte zusammengefasst werden müssen (min, max, count, collapse, false) |
sort | Definiert, welche Tabelle für die Sortierung gejoint wird (table, type), welches Feld verwendet wird (field) und inwiefern mehrere Einträge in der Tabelle aggregiert werden (aggregate). Der aggregate-Schlüssel kann die Werte "min", "max" und "count" annehmen. Zur Sortierung kann mit dem cast-Schlüssel ein type casting durchgeführt werden, wobei ein SQL-Typ angegeben werden muss (z.B. "cast": "INTEGER"). |
icon | Ein Unicode-Zeichen, das in Vorschaukacheln als Icon vor den Inhalten der Summary angezeigt wird. |