XIP Format

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

Beschreibung

XIP (eXchange Information Package) ist ein von Sitepark entwickeltes Format zum Austausch von Daten in und aus dem IES.

Im einfachsten Fall besteht ein XIP aus einer XML-Datei. Die auszutauschenden Daten werden in einem definierten XML-Format beschrieben. Bei komplexeren Daten kann ein XIP aus mehreren Dateien bestehen, die unterhalb eines Verzeichnis liegen müssen, aber auch Unterverzeichnisse beliebiger Tiefe enthalten können. Dieses Verzeichnis kann auch mit ZIP zu einer ZIP-Datei zusammengefasst werden.

Ein XIP ist ein drei verschiedenen Formen gültig.

  1. Einfache XML-Datei
  2. Verzeichnisstruktur mit Dateien
  3. ZIP-Datei, die Verzeichnisstrukturen mit Dateien enthält

Nutzer

Neben Artikeln können auch alle anderen IES-Elemente bzw. Pools über diese Schnittstelle importiert werden. Die Eigenschaften der Nutzer werden über Attribute bestimmt. Zusäzliche Inhalte (z.B. Telefonnummer) werden über eine Resource beschrieben. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute des XML-Elements "user"

anchor
Anker des Nutzers. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
firstname
Vorname des Nutzers (String).
lastname
Nachname des Nutzers (String).
login
Login des Nutzers (String).
type
Nutzertyp (Integer).
password
binäres Passwort des Nutzers (i.d.R. wird das Attribut "clear-password" verwendet, um ein Passwort zu setzen) (Base64-Encoded Bytes).
clear-password
Klartextpasswort des Nutzers (String).
email
System-E-Mail-Adresse des Nutzers (String).
locale
Sprache des Nutzers (z.B. "de" oder "de_DE") (String).
sex
Geschlecht des Nutzers (0=female, 1=male, -1=unknown) (Integer).
valid-from
Ein Long-Wert mit der Angabe der Freischaltungszeit (Long).
valid-to
Ein Long-Wert mit der Angabe der Freischaltungszeit (Long).
disabled
Sperre des Nutzers (Boolean).

Templates

Die Eigenschaften für Templates werden ebenfalls über Attribute bestimmt. Zusäzliche Inhalte (z.B. das Layout) werden über eine Resource beschrieben. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute bzw. Unterelemente des XML-Elements "template"

anchor
Anker des Templates. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name des Templates (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
type
Optionaler Typ des Templates (Template: 6000, Tag: 6001) (Integer).
spml-version
Optionale Angabe der SPML-Version, auf der das Template basiert (String).
suffix
Dateiendung für Artikel die mit diesem Template angelegt werden (String).
source
Der SPML-Quellcode des Templates als sog. Body-Tag: < source > ... < /source > (String).


Das Feld "layout" wird als "text" innerhalb einer "resource" definiert und hat folgende Werte:

common
Normales Template.
handler
Template welches eigene Handler-Aufrufe enthält.
tag
Ein Tag-Template.
container
Ein Template mit Angaben zum Container.

Rollen

Die Eigenschaften für Rollen werden ebenfalls über Attribute bestimmt. Zusäzliche Inhalte können über eine Resource beschrieben werden. Hier gelten die selben Bedingungen wie bei Resource-Artikeln. Die Angabe der Publisher für diese Rolle wird über einen eigene Tag gesteuert. Dieser steht innerhalb des Tags "role".

Attribute des XML-Elements "role"

anchor
Anker der Rolle. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name der Rolle (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
new-element
Das Recht neue Elemente anzulegen (Boolean).
read-element
Das Recht Elemente zu lesen (Boolean]).
modify-element
Das Recht Elemente zu verändern (Boolean).
delete-element
Das Recht Elemente zu löschen (Boolean).
duplicate-element
Das Recht Elemente zu duplizieren (Boolean).
max-element
Maximale Anzahl von Elementen (Integer).
read
Das Recht den aktuellen Pool zu lesen (Boolean).
modify
Das Recht den aktuellen Pool zu verändern (Boolean).
duplicate
Das Recht den aktuellen Pool zu duplizieren (Boolean).
new-pool
Das Recht neue Pools anzulegen (Boolean).
delete-pool
Das Recht Pools zu löschen (Boolean).
max-pool
Maximale Anzahl von Pools (Integer).
editor-level
Angabe des Level (Kommaseparierte Liste von Strings)
is-workflow-role
Angabe, ob diese Rolle für Workflow verwendet werden soll (Boolean).
publisher
Dieser Tag dient zur Konfiguration der Publisher dieser Rolle. Die Angabe kann sowohl über die Publisher-ID, als auch über den entsprechenden Anker vorgenommen werden. Das Feld "hide" (Boolean) steuert, ob der Publisher sichtbar sein soll oder nicht.
<publisher publisher-id="pub1" hide="true"/>
<publisher publisher-id="pub2" hide="false"/>
<publisher anchor="preview" hide="false"/>

Artikelpools

Um einen Artikelpool zu importieren, muss eine XML-Datei erstellt werden, die das Root-Element "articlepool" verwendet. Attribute des Tags erlauben die Beschreibung des Pools. Alle Angaben neben Systemwerten werden innerhalb eines Resource-Tags vorgenommen. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute des XML-Elements "articlepool"

anchor
Anker des Pools. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name des Pools (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).
directory
Angabe des Arbeitsverzeichnisses dieses Artikelpools (String).

Hier ein vollständiges Beispiel eines Artikelpools:

<!--
Einen Artikelpool anlegen:

<articlepool    legt einen Artikel an

anchor          Anker des Pools (dient beim wiederholten Import als Primärschlüssel
                und als Parent für die Artikel)
name            Name des Pools
parent          Anker des Parentpools (Angabe muss über einen Anker erfolgen)
directory       Angabe des Arbeitsverzeichnisses dieses Artikelpools
-->

<articlepool
  anchor="import.pool.1"
  name="Pool für importierte Artikel (Ebene 1)"
  parent="gui.informations"
  directory="/level_1">

    <!--
      Sämtliche META-Daten eines Pools werden vom System implizit in einer
      Resource gespeichert
    -->
    <resource>
        <!--
          einfache Textfelder, in denen die Konfiguration der Artikelpools
          steht (auch hier über die Angabe von Ankern gelöst)
        -->

        <!--
          Angabe des Containers:
          "is5:gui.container.infosite.standard" oder
          "is5:gui.container.infosite.media" möglich
        -->
        <text name="container" anchor="is5:gui.container.infosite.standard"></text>

        <!--
          Angabe des Template-Pools, für die Auswahl von Templates in diesem Pool:
          Ein Anker aus dem eigenem System
        -->
        <text name="editorTemplatePool" anchor="standard.container.editing"></text>

        <!--
          Angabe des Templates für die Artikelanmeldung:
          "is5:gui.container.infosite.standard.all"
          erlaubt beispielsweise das Anlegen aller Artikeltypen
        -->
        <text
          name="registrationTemplate"
          anchor="is5:gui.container.infosite.standard.all">
        </text>

        <!-- beliebige weitere Eingabefelder -->
        <text name="sp_rubric">demo</text>
        <systemlink name="sp_parentLink" anchor="article.rubric"/>
    </resource>
</articlepool>

Angaben zur Konfiguration

Damit ein Artikelpool in InfoSite 5 so funktioniert wie ein manuell ersteller Pool, müssen bestimmte Felder mit entsprechenden META-Daten angelegt werden. Hierzu zählen im Besonderen die Angaben zum Feld "container" und "registration_template". Die Felder "editor_template_pool" und "editor_template" verweisen auf das ausgewählte Template bzw. den Templatepool, der dem Redakteur zur Verfügung steht.

<!--
Angabe des Containers:
  is5:gui.container.infosite.standard
  is5:gui.container.infosite.media
-->
<text name="container" anchor="is5:gui.container.infosite.standard"></text>

<!--
Angabe des Template-Pools, für die Auswahl von Templates in diesem Pool:
  Ein Anker aus dem eigenem System
-->
<text name="editorTemplatePool" anchor="standard.container.editing"></text>

<!--
Angabe des Templates für die Artikelanmeldung:
  is5:gui.container.infosite.standard.all
  (erlaubt z.B. das Anlegen aller Artikeltypen)
-->
<text
  name="registrationTemplate"
  anchor="is5:gui.container.infosite.standard.all">
</text>

Standard InfoSite Container

Der "Standard InfoSite Container" wird i.d.R. für alle normalen Artikelpools verwandt. Hierüber ist ein Redakteur in der Lage, Artikel jeden Typs anzulegen. Die Konfiguration der möglichen Artikeltypen wird über das Feld "registration_template" vorgenommen. Dies erfolgt in InfoSite über eine Select-Box. Im XML-Dokument müssen diese Werte manuell über Anker eingestellt werden. Folgende Anker sind dafür vorhanden:

"alle Artikel-Typen"
gui.container.infosite.standard.all
"nur Medien anlegen"
gui.container.infosite.standard.media
"nur Ressourcen anlegen"
gui.container.infosite.standard.resource
"nur Seiten anlegen"
gui.container.infosite.standard.page
"nur Seiten ohne Namensvergabe anlegen"
gui.container.infosite.standard.pageAutoName
"nur Seiten und Medien anlegen"
gui.container.infosite.standard.pageAndMedia
"nur Seiten und Ressourcen anlegen"
gui.container.infosite.standard.pageAndResource

Standard Medien Container

Der "Standard Medien Container" wird für reine Medienpools verwandt. Hier sind neben der Angabe Container keine weiteren Angaben notwendig.

Nutzer-, Template- und Rollenpools

Um einen Nutzer-, Rollen oder Templatepool zu importieren, muss eine XML-Datei erstellt werden, die das entsprechende Root-Element, also "userpool", "templatepool" oder "rolepool" verwendet. Attribute des Tags erlauben die Beschreibung des Pools. Alle Angaben neben Systemwerten werden innerhalb eines Resource-Tags vorgenommen. Hier gelten die selben Bedingungen wie bei Resource-Artikeln.

Attribute der XML-Elemente "userpool", "templatepool", "rolepool"

anchor
Anker des Pools. Dient beim wiederholten Import als Primärschlüssel dieser Daten und als Parent für die Artikel (String).
name
Name des Pools (String).
parent
Anker des Parentpools. Die Angabe muss über einen Anker erfolgen (String).