TYPO3-LSF-Connector - Universität Hohenheim

Werbung
HOCHSCHULKOMMUNIKATION
TYPO3-LSF-Connector
Handbuch
TYPO3 Version 4.x
Inhaltsverzeichnis
Funktionen des TYPO3-LSF-Connectors ......................................................................................... 1
LSF-Container (SOAP) .......................................................................................................................... 1
Überblick über die darstellbaren Inhalte aus LSF ............................................................................ 1
LSF-Linkbrowser im TYPO3-Backend ............................................................................................... 1
Frontend-Plugin LSF-Element .......................................................................................................... 2
Frontend-Plugin LSF-Export ............................................................................................................. 2
Generisches LSF-Element ................................................................................................................ 2
LSF-Adapter (cURL) .............................................................................................................................. 3
Installation ................................................................................................................................... 4
Konfiguration der Schnittstelle in LSF ............................................................................................ 4
Zugriffsrechte für die LSF-Schnittstelle ............................................................................................... 4
Konfiguration der SOAP-Schnittstelle ................................................................................................. 5
Installation und Einrichtung in TYPO3 ........................................................................................... 6
Voraussetzungen für die Installation .................................................................................................. 6
Installation der TYPO3-Extension ........................................................................................................ 6
Konfiguration der LSF-Verbindung in TYPO3....................................................................................... 8
Einrichtung der Seiten für LSF-Inhalte in TYPO3 ............................................................................. 9
Einrichtungsstruktur und Seite für generische LSF-Inhalte ................................................................. 9
Einrichtung des LSF-Vorlesungsverzeichnisses in TYPO3 .................................................................. 10
Seite für LSF-Systemanzeigen............................................................................................................ 11
Einrichtung des LSF-Adapters (Bearbeitung von LSF-Daten) ............................................................ 12
Notwendige TypoScript-Konfiguration ........................................................................................ 13
Integration in redaktionelle Inhalte............................................................................................. 15
Weiterführende Konfiguration.................................................................................................... 16
XHTML-Templates für den LSF-Container ......................................................................................... 16
Adapterlink-Filter und Seitenzuordnung ........................................................................................... 16
Verarbeitung der LSF-Datenfelder im Container............................................................................... 17
Konfiguration der SOAP-Schnittstelle von LSF .................................................................................. 22
Referenz......................................................................................................................................... 22
Funktionen des TYPO3-LSF-Connectors
LSF-Container (SOAP)
Der LSF-Container schafft die Möglichkeit, Inhalte aus LSF innerhalb des TYPO3-Frontends
anzuzeigen und beinhaltet eine SOAP-Schnittstelle zu LSF, mit Hilfe derer er diese Inhalte abruft.
Überblick über die darstellbaren Inhalte aus LSF
Die Inhalte, die aus LSF angezeigt werden können, gliedern sich in:
Personen
Einrichtungen
Forschungsprojekte
Publikationen
Lehrveranstaltungen
Aktuelle (Nicht-Lehr-) Veranstaltungen
Räume
Die Relationen zwischen den einzelnen Inhaltstypen, die in LSF festgelegt werden können, bleiben
bei der Darstellung innerhalb von TYPO3 erhalten.
So bietet die Detailansicht einer Person beispielsweise Querverweise auf deren Publikationen und
Veranstaltungen sowie die Einrichtungen, der diese Person zugeordnet ist, innerhalb der Darstellung
von Veranstaltungen sind die Räume jeweils mit einem Link zu deren Detailseite hinterlegt etc.
LSF-Linkbrowser im TYPO3-Backend
Der LSF-Linkbrowser bietet eine komfortable Möglichkeit, im TYPO3-Backend genau die LSF-Inhalte
auszuwählen, die im Frontend vom LSF-Container dargestellt werden sollen. Der Linkbrowser lässt
sich über das Table Configuration Array (TCA) von TYPO3 außerdem mit geringem
Programmieraufwand in Extensions von Dritten sowie Eigenentwicklungen integrieren, um
beispielsweise Ansprechpartner oder Autor zu einem bestimmten Datensatz anzuzeigen.
1
Frontend-Plugin LSF-Element
Das Plugin „LSF-Element“ stellt Inhalte aus LSF im Frontend von TYPO3 dar und bildet somit das
Kernstück des LSF-Containers. Gemäß der Konfiguration im Backend (LSF-Verweis mit Hilfe des
Linkbrowsers) werden die Inhalte über die SOAP-Schnittstelle in LSF abgefragt. Das Plugin rendert
dann die grafische Darstellung der zurückgelieferten Inhalte entsprechend den HTML-Templates und
der Container-Konfiguration.
Beispiel für einen LSF-Verweis im Plugin „LSF-Element“ (Container):
allInstitutions 463
Frontend-Plugin LSF-Export
Inhalte aus LSF können zusätzlich zur Darstellung im TYPO3-Frontend (als XHTML) auch in folgende
Formate exportiert werden:
Personen
vCard (Visitenkarte, z.B. für den Import in ein E-Mail-Programm)
Veranstaltungen
iCal (Kalenderdatei für den Import in ein Organizer- bzw. E-Mail-Programm)
Publikationen
BibTeX (Literaturliste für Literaturverweise in wissenschaftlichen Arbeiten mit LaTeX u.ä.)
Endnote
RTF
Das Plugin „LSF-Export“ wird auf einer zentralen Export-Seite platziert, deren Seiten-ID im TypoScript
eingetragen wird. Exportlinks werden vom LSF-Container automatisch, falls für die dargestellten
Inhalte verfügbar, generiert und auf die entsprechende Export-Seite geleitet. Das Feld „LSF-Verweis“
des Plugins im Backend bleibt typischerweise leer.
Generisches LSF-Element
So wie beim LSF-Export kann das Feld „LSF-Verweis“ auch beim Plugin „LSF-Element“ freigelassen
werden. Per HTTP GET in der URL übergebene Parameter werden dann direkt als SOAP-Anfrage an
LSF weiterverarbeitet.
2
Ein solches generisches LSF-Element verarbeitet alle Links aus anderen LSF-Inhalten heraus und stellt
somit typischerweise den Großteil der Daten aus LSF in TYPO3 dar. Auch das generische LSF-Element
wird auf einer, bzw. vielmehr einer kleinen Anzahl von, zentralen Seiten platziert, deren ID wiederum
jeweils im TypoScript angegeben werden.
LSF-Adapter (cURL)
Für die Erfassung und Pflege der verschiedenen Inhalte bietet LSF eine eigene Benutzeroberfläche an.
Diese Bearbeitungsoberfläche lässt sich mit Hilfe des LSF-Adapters in TYPO3 integrieren und somit
die Möglichkeit zur Pflege der Daten durch autorisierte Personen innerhalb eines Intranets schaffen.
Darüberhinaus lässt sich mit dem LSF-Adapter die Darstellung des LSF-Vorlesungsverzeichnisses
innerhalb von TYPO3 integrieren.
Der LSF-Adapter wird ebenfalls durch das Plugin „LSF-Element“ realisiert, wenn dieses auf der Seite
eingebunden ist und ein LSF-Verweis der folgenden Form (Beispiel) angegeben wird:
state=change&type=5&moduleParameter=einrichtungSearch&nextdir=change&next=s
earch.vm&subdir=einrichtung&menuid=editdepartments
Eine Liste der Verweise für den LSF-Adapter finden Sie in den entsprechenden Kapiteln unter
„Einrichtung der Seiten für LSF-Inhalte in TYPO3“.
Abbildung 1: Inhalte aus dem Vorlesungsverzeichnis von LSF
3
Installation
Die Einrichtung des TYPO3-LSF-Connectors erfordert Anpassungen auf beiden Seiten, sowohl in
TYPO3 als auch in LSF.
Auf LSF-Seite müssen Sie dem Webserver Zugriff auf die SOAP-Schnittstelle gewähren und die
Schnittstellen-Inhalte konfigurieren.
In TYPO3 installieren Sie zunächst die speziell hierfür entwickelte Extension, konfigurieren die
Verbindungsdaten und legen dann die notwendigen Seiten für den Abruf der LSF-Inhalte an.
Konfiguration der Schnittstelle in LSF
Die Konfiguration von LSF geschieht mit Hilfe einer Vielzahl von Konfigurationsdateien, die
mehrheitlich im XML-Format vorliegen und auf dem LSF-Server im Verzeichnis des Apache Tomcat
und dort im Unterverzeichnis qisserver/WEB-INF/conf gespeichert sind.
Die HIS hat Ihrer Universität bzw. Hochschule ein eindeutiges Kürzel zugewiesen, z.B. HISUHO für die
Universität Hohenheim. Änderungen in der Konfiguration sollten Sie immer in der Datei mit dem
entsprechenden Kürzel als Suffix vornehmen. Sollte eine entsprechende Datei noch nicht vorhanden
sein, erstellen Sie diese nach dem folgenden Schema:
[KONFIGURATIONSNAME]_[HOCHSCHULKÜRZEL].xml /.txt
Zugriffsrechte für die LSF-Schnittstelle
Damit der TYPO3-LSF-Connector eine Verbindung zu LSF aufbauen kann, muss die IP-Adresse des
Webservers bzw. im Falle mehrerer Webserver die IP-Adresse eines jeden Webservers in der
Konfiguration von LSF an zwei Stellen für den Zugriff auf die SOAP-Schnittstelle freigegeben werden.
Datei: qisserver/WEB-INF/conf/dbinterface/dbinterface_UHO.txt
Beispiel für eine IP-Adresse:
IPRANGEDATAXML=^192\.168\.1\.52$
Beispiel für mehrere IP-Adressen:
IPRANGEDATAXML=^192\.168\.1\.52$|^192\.168\.1\.53$
Jede IP-Adresse wird von „^“ am Anfang und „$“ am Ende umschlossen. Mehrere IP-Adressen
werden mit Hilfe einer Pipe „|“ getrennt. Bitte beachten Sie, dass Punkte in der IP-Adresse jeweils
mit einem Backslash („\“) escapt werden müssen.
4
Datei: qisserver/WEB-INF/conf/LoginConf_UHO.xml
Beispiel für eine IP-Adresse:
<login>
<global>
<soap ueberschreiben="y">
<rights ipranges="192.168.1.52" />
</soap>
</global>
</login>
Beispiel für mehrere IP-Adressen:
<login>
<global>
<soap ueberschreiben="y">
<rights ipranges="192.168.1.52,192.168.1.53" />
</soap>
</global>
</login>
Mehrere IP-Adressen werden hier durch Kommata getrennt aufgeführt.
» Im Anschluss ist ein Neustart des LSF-Servers (Apache Tomcat) notwendig, damit
Änderungen der Konfiguration wirksam werden.
Konfiguration der SOAP-Schnittstelle
Die Daten, die LSF beim Zugriff auf die SOAP-Schnittstelle abfragen und zurückliefern soll, werden in
der folgenden Datei festgelegt:
qisserver/WEB-INF/conf/dbinterface/soapgetdata_HISUHO.xml
Eine funktionierende Basiskonfiguration finden Sie in der gleichnamigen Datei im Verzeichnis der
Extension im Unterverzeichnis „doc“. Bitte beachten Sie auch hier, dass Sie „UHO“ durch das
entsprechende Kürzel Ihrer Universität bzw. Hochschule ersetzen müssen. Den Inhalt der
Beispielkonfiguration finden Sie außerdem im Anhang A dieses Handbuchs.
Eine detaillierte der Konfigurationssprache für die SOAP-Schnittstelle von LSF finden Sie bei Bedarf im
Kapitel „Weiterführende Konfiguration“.
5
Installation und Einrichtung in TYPO3
Voraussetzungen für die Installation
Für den Einsatz des TYPO3-LSF-Connectors sind folgende Voraussetzungen notwendig:
PHP-Version ab 5.x.x (bis einschl. 5.3.x)
TYPO3 Version 3.8.x bis 4.5.x
PEAR sowie die PEAR-Module SOAP und SOAP_Client (http://pear.php.net)
PHP-Modul soap (Installation als Paket unter Linux, z.B. apt-get install php-soap)
Installation der TYPO3-Extension
Installieren Sie zunächst die Extension über den Extension Manager von
TYPO3. Diesen finden Sie im Backend unter „Adminwerkzeuge“ >
„Erweiterungen“ (engl.: „Admin Tools“ > „Ext. Manager“).
Wählen Sie „Erweiterung importieren“ (engl.: „Import extensions“) aus dem Drop-Down-Menü aus.
Im unteren Bereich finden Sie ein Upload-Formular (Abb. 2). Wählen Sie die Extension-Datei auf
Ihrem Computer aus. Diese Datei hat die Endung „t3x“ und einen Dateinamen in der Form
T3X_dmc_browse_soap-x_x_x-z-2010xxxxxxxx.t3x
Setzen Sie das Häkchen bei „Overwrite any existing extension“ und klicken Sie auf „Upload“.
Abbildung 2: Extension Manager
Abbildung 3: Import der TYPO3-Extension
Nachdem die Datei hochgeladen
wurde, sollten Sie die folgende Ausgabe sehen (Abb. 3). Mit Klick auf „Install extension“ wird die
Extension in TYPO3 installiert.
6
Abbildung 4: Installation der TYPO3-Extension
Im nächsten Schritt werden Sie aufgefordert, die notwendigen Datenbanktabellen und -felder
anzulegen (Abb. 4). Bestätigen Sie dies mit Klick auf den Button „Make updates“.
Abbildung 5: Anlegen der Datenbankstruktur im Extension Manager
Nachdem der Extension Manager die notwendigen Änderungen an der MySQL-Datenbank
vorgenommen hat, werden Sie zur Konfiguration des TYPO3-LSF-Connectors (s. folgende Seite)
weitergeleitet.
7
Konfiguration der LSF-Verbindung in TYPO3
Abbildung 6: Konfiguration der Verbindungsdaten im Extension Manager
Damit der TYPO3-LSF-Connector Inhalte aus LSF abrufen und anzeigen kann, müssen zunächst auf
TYPO3-Seite die Verbindungsdaten konfiguriert werden. Gehen Sie dazu wie folgt vor:
LSF Hostname
Geben Sie hier den Hostnamen des LSF-Servers (Tomcat) mit einem
einleitenden http:// und ohne Slash (/) am Ende ein
LSF Request Path
Die Vorbelegung sollten Sie hier beibehalten:
Request Mode
Hier sollte ebenfalls der Standard soap stehen, Alternative: rpc
LSF Adapter URL
Geben Sie hier wieder den Hostnamen ein, diesmal gefolgt von
SOAP debug mode
Sollten im Frontend keine Inhalte sondern lediglich eine
Fehlermeldung angezeigt werden, können Sie hier den DebugModus aktivieren, um die genaue Fehlermeldung des LSF-Servers
angezeigt zu bekommen.
/qisserver/services/dbinterface
/qisserver/rds
Tabelle 1: Konfiguration der Verbindung zum LSF-Server in TYPO3
8
Einrichtung der Seiten für LSF-Inhalte in TYPO3
Die Darstellung aller LSF-Inhalte innerhalb von TYPO3 integriert sich in die logische Struktur des
Content-Management-Systems. Inhalte werden also auf Seiten, die innerhalb des Seitenbaums in
TYPO3 angelegt sind, angezeigt. Die Ausgabe erfolgt durch Plugins, die auf diesen Seiten platziert
sind. So lassen sich bestimmte LSF-Inhalte beliebig innerhalb einer Seite platzieren.
Einrichtungsstruktur und Seite für generische LSF-Inhalte
Abbildung 7: Seitenstruktur für die Ausgabe von LSF-Inhalten im Frontend (LSF-Container)
Um LSF-Inhalte innerhalb des TYPO3-Frontends anzuzeigen, bedarf es zunächst einer Seite, auf der
ein generisches LSF-Element platziert ist. Diese zentrale Seite erzeugt die Darstellung aller Inhalte aus
LSF dynamisch, indem jeweils auf sie verlinkt wird und dabei verschiedene Parameter in der URL mit
übergeben werden.
Darüberhinaus bedarf es jedoch eines sinnvollen Einstiegs in die Struktur der LSF-Inhalte. Es bietet
sich hier an, einzelne kurze Einrichtungs-Listen von der obersten Ebene der Hochschule oder
Unversität an darzustellen, d.h. die jeweiligen direkten Untereinrichtungen von Meta-Einrichtungen
(z.B. „Zentralbereiche“, „Fakultäten“, „zentrale Einrichtungen“, „Interessenvertretungen“) auf einer
Seite gegliedert in die jeweiligen Meta-Einrichtungen aufzulisten.
Legen Sie also zunächst eine Seitenstruktur wie in Abbildung 6 an. Verwenden Sie für die
„generische“ Seite den Titel Organisation, so wird der Seitentitel im Frontend automatisch durch
den Titel des betrachteten Inhalts, also z.B. den Namen der Einrichtung oder Person ersetzt.
Fügen Sie auf der Seite „Organisation“ ein generisches LSF-Element ein. Legen Sie dazu ein neues
Seiteninhaltselement auf der Seite an und wählen Sie unter „Plugins“ das Plugin „LSF Element“ (s.
Abbildung 7) aus.
Abbildung 8: Auswahl des Plugins „LSF-Element“
Sollte Ihnen der Wizard nicht angezeigt werden, wählen Sie im Formular im Feld Typ „Plugin
einfügen“ aus und dann unter Plugin „LSF Element“.
In allen Fällen lassen Sie das Feld „LSF Verweis“ (Abbildung 8) einfach leer, so dass das Plugin ein
generisches LSF-Element ist, das Anfragen, die über die URL übergeben werden, verarbeiten kann.
Abbildung 9: Feld „LSF Verweis“ im Plugin „LSF-Element“
9
Auf der Seite „Einrichtungen“, die als Einstieg in die „LSF-Welt“ dienen soll, legen Sie eine sinnvolle
Struktur der Einrichtungen der obersten Ebene(n) an. Hierfür ist es auch möglich und vermutlich
sinnvoll, mehrere einzelne Plugins vom Typ „LSF Element“ neben- bzw. untereinander auf der Seite
zu platzieren (in Abhängigkeit des Seitenlayouts Ihres TYPO3-Auftritts).
Neben dem Feld „LSF Verweis“ klicken Sie jeweils auf das Link-Symbol (Weltkugel). Aktivieren Sie
dann im erscheinenden Dialog (Abbildung 9) zunächst rechts oben das Häkchen „Listenmodus?“ und
wählen Sie als Typ „Einrichtungen – Liste“. Daraufhin können Sie die Einrichtungsarten und
Einrichtungen durchsuchen und die gewünschte Obereinrichtung auswählen. Im Frontend wird dann
eine Liste der Untereinrichtungen der ausgewählten Einrichtung dargestellt.
Abbildung 10: Auswahl im LSF-Linkbrowser: Listeansicht der Einrichtungen
Einrichtung des LSF-Vorlesungsverzeichnisses in TYPO3
Um die Inhalte des Vorlesungsverzeichnisses von LSF innerhalb des TYPO3-Frontends anzuzeigen, ist
analog zu Inhalten der Organisation (s. vorheriger Abschnitt) zunächst die Einrichtung einer
geeigneten Seitenstruktur in TYPO3 notwendig. Diese beschränkt sich wiederum auf zwei Seiten: Eine
Einstiegsseite, die die VVZ-Startseite in LSF wiedergibt und eine Seite für generische Inhalte aus LSF.
Legen Sie also die Seitenstruktur wie in Abbildung 11 gezeigt an und wählen Sie dabei für die
„generische“ Unterseite wieder die Option „Im Menü verstecken“ aus.
Abbildung 11: Seitenstruktur für das Vorlesungsverzeichnis
Nun legen Sie auf beiden Seiten wieder jeweils ein Plugin „LSF Element“ an. Für die übergeordnete
Einstiegsseite geben Sie folgendes direkt in das Textfeld „LSF Verweis“ des Plugins ein:
state=wtree&search=1&category=veranstaltung.browse&menuid=lectureindex
Da die Unterseite ein generisches LSF-Element beherbergen soll, lassen Sie dort das Feld „LSF
Verweis“ einfach leer.
10
Seite für LSF-Systemanzeigen
Schließlich legen Sie eine zusätzliche Seite für Systemausgaben von LSF
an. Auf diese wird für Systemmeldung automatisch vom TYPO3-LSFConnector umgeleitet. Platzieren Sie auf der Seite ein generisches LSFElement (Feld „LSF Verweis“ leer).
11
Einrichtung des LSF-Adapters (Bearbeitung von LSF-Daten)
Der LSF-Adapter, also die Seiten zur Bearbeitung und Pflege der LSF-Datenbestände muss im
Intranetbereich platziert werden. Die Benutzernamen der berechtigten Personen müssen außerdem
innerhalb von TYPO3 mit denen innerhalb von LSF übereinstimmen und dort bei den jeweiligen
Personendatensätzen unter der Registerkarte „Login“ hinterlegt sein. Dort werden auch die
Bearbeitungsrechte dieser Personen festgelegt.
Für die Bearbeitung der Inhalte mit dem LSF-Adapter ist ein LSF-Login erforderlich. Um beim Login ins
Intranet innerhalb des TYPO3-Frontends auch gleichzeitig in LSF eingeloggt zu werden, müssen Sie
zusätzlich zum TYPO3-LSF-Connector (dmc_browse_soap) auch die Extension „LSF Authentication
Service“ (dmc_auth_service) installieren. Hinweise hierzu erhalten Sie im dazugehörigen
Installationshandbuch.
Um den LSF-Adapter einzurichten, legen Sie folgende
Seitenstruktur innerhalb des Intranets an. Beachten Sie
dabei, dass die letzten drei aufgeführten Seiten im Menü
versteckt sein sollten.
Auf jeder der Seiten platzieren Sie dann jeweils ein Plugin
„LSF-Element“, dessen Feld „LSF-Verweis“ die jeweils in der
Tabelle aufgeführte Zeichenkette enthält. Geben Sie den Text
einfach direkt in das Feld ein, ohne vorher auf den „Link“Button zu klicken.
Abbildung 12: Seitenstruktur LSF-Adapter
Seitentitel
Einrichtungen
LSF Verweis
Personen
state=change&type=5&moduleParameter=personSearch&nextdir=
change&next=search.vm&subdir=person&menuid=editpersonal
Veranstaltungen
state=change&type=5&moduleParameter=veranstaltungSearch&n
extdir=change&next=search.vm&subdir=veranstaltung&functio
n=editlectures&purge=y&category=veranstaltung.search&menu
id=editlecture
Forschungsprojekte
state=change&type=5&moduleParameter=projektSearch&nextdir
=change&next=search.vm&subdir=forschung&purge=y&category=
forschung.search&menuid=searchprojects
Publikationen
state=change&type=5&moduleParameter=publikationenSearch&n
extdir=change&next=search.vm&subdir=forschung&purge=y&cat
egory=forschung.search&menuid=publication
Einrichtungsdaten
bearbeiten (versteckt)
Meine Veranstaltungen
(versteckt)
Raumpläne PDF (versteckt)
state=change&type=5&moduleParameter=einrichtungSearch&nex
tdir=change&next=search.vm&subdir=einrichtung&menuid=edit
departments
state=verpublish&status=init&vmfile=no&moduleCall=webInfo
MyLectures&publishConfFile=webInfo&publishSubDir=veransta
ltung
state=change&type=5&moduleParameter=raumSearch&nextdir=ch
ange&next=search.vm&subdir=raum&purge=y&_form=pdf&menuid=
roomplan
Tabelle 2: Liste der Seiten für den LSF-Adapter und der Inhalte im Feld "LSF Verweis" des Plugins auf der Seite
12
Notwendige TypoScript-Konfiguration
Für die korrekte Anzeige und Querverlinkung der Inhalte müssen nun im TypoScript die Seiten-IDs
angegeben werden. Außerdem können hier alternative HTML-Vorlagen und das Zeitlimit für SOAPAnfragen für LSF konfiguriert werden.
Verwenden Sie das Backendmodul „Web“ > „Template“, um ein geeignetes Template im Seitenbaum
auszuwählen oder ein neues anzulegen. Beim Anlegen eines neuen Templates
beachten Sie, dass dieses ins Haupt-Template inkludiert werden muss.
Falls Sie sich nicht sicher sind, welches Template geeignet ist, klicken Sie auf die oberste Seite im
Seitenbaum direkt unterhalb der Weltkugel. Falls mehrere Templates zur
Auswahl stehen, wählen Sie dort das Haupt-Template aus.
Abbildung 13: Auswahl des Haupt-Templates
Wählen Sie nun im Menü den Punkt „Konstanten bearbeiten“ bzw. „Constant Editor“ aus. Es
erscheint eine Konfigurationsseite. Wählen Sie im unteren Drop-Down-Menü „Category“ nun den
Punkt „TYPO3-LSF-Connector (14)“.
Tragen Sie nun die IDs der dort aufgelisteten Seiten sowie die URL der Organisation-Seite ein. Als
Fallback-Seite dient die (im Menü versteckte) Seite „Einrichtungsdaten bearbeiten“. Unter
„Startseite“ tragen Sie die ID der Seite „LSF-Systemanzeigen“ ein.
Die in Abbildung 11 eingetragenen IDs sind lediglich einem Beispiel
entnommen. Für das korrekte Funktionieren des TYPO3-LSFConnectors ist es notwendig, die IDs der Seiten einzutragen, die Sie
in den vorherigen Schritten neu angelegt haben.
Die ID wird angezeigt, wenn Sie mit der Maus im Seitenbaum über
das Symbol der jeweiligen Seite fahren.
Die Punkte zu Templates, Seitenlimit und SOAP-Timeout können Sie in einer Basiskonfiguration
unverändert beibehalten.
13
Abbildung 14: Konfiguration des TYPO3-LSF-Connectors via TypoScript
14
Integration in redaktionelle Inhalte
Durch die Pluginstruktur des LSF-Containers lassen sich Inhalte aus LSF gezielt auswählen und frei
auf einer Seite innerhalb von TYPO3 platzieren. Dadurch ist es möglich, redaktionelle Inhalte wie
Texte, Bilder in TYPO3 durch Informationen aus LSF zu ergänzen.
Die Daten beispielsweise einer Einrichtung oder Person verbleiben dabei in LSF. Doppelter
Pflegeaufwand in den verschiedenen Systemen fällt somit weg. Die Informationen werden zentral in
LSF gepflegt und innerhalb der TYPO3-Seiten automatisch aktuell vorgehalten werden können. Die
Pflege des LSF-Datenbestandes kann außerdem über den LSF-Adapter ebenfalls innerhalb des TYPO3Auftritts geschehen (wie oben bereits gezeigt).
Um Inhalte aus LSF in den redaktionellen Auftritt einzubinden, gehen Sie genau gleich vor wie oben
im Kapitel „Einrichtungsstruktur und Seite für generische LSF-Inhalte“ beschrieben: Fügen Sie an der
gewünschten Stelle innerhalb der Seite ein neues Inhaltselement vom Typ „Plugin“ und zwar das
Plugin „LSF Element“ ein. Dann können Sie den LSF-Linkbrowser
verwenden, um den
gewünschten Anzeigetyp und den Inhalt auszuwählen, der dargestellt werden soll.
Für die Einbindung in redaktionelle Inhalte eignen sich insbesondere die folgenden Typen:
Personen Kurz
Top-Termine Liste
Einrichtungen Liste
15
Weiterführende Konfiguration
XHTML-Templates für den LSF-Container
System: TYPO3
Konfigurationsdatei: typo3conf/ext/dmc_browse_soap/tmpl/list.html + details.html
Das Layout der Darstellung im TYPO3-Frontend wird durch diese beiden HTML-Vorlagendateien
bestimmt. Die Vorlagen für die Listen- sowie die Detailansichten der verschiedenen Inhalte sind
entsprechend der Benennung auf die beiden Dateien aufgeteilt.
Innerhalb der Dateien findet der TYPO3-typische Templatecharakter Anwendung, es gibt also sowohl
Marker als auch Subparts.
Marker stellen einen Platzhalter für einzelne Inhaltseinheiten dar. Diese werden direkt durch den
entsprechenden Inhalt ersetzt. Ein Marker hat die Form ###MARKER_ID###, wobei die ID des
Markers jeweils aus Großbuchstaben, Zahlen und Bindestrichen „-“ sowie Unterstrichen „_“
bestehen kann und auf beiden Seiten von jeweils drei Rautensymbolen umschlossen „###“ wird.
Subparts sind Unterbereich der HTML-Vorlage, die entweder eine Ansicht oder Unterbereiche der
Ansicht markieren. Damit ist es möglich, Teile der Vorlage nur im Bedarfsfall zu verwenden, also z.B.
wenn ein Bild zu der Person vorliegt. Auch können Listen bzw. mehrfach wiederholte Bereiche über
Subparts realisiert werden, indem ein Subpart in einem anderen geschachtelt wird. Der innere
Subpart wird dann für jeden Listenpunkt verarbeitet (also die wiederum enthaltenen Marker und
Subparts ersetzt) und das so erzeugte Ergebnis in den äußeren Subpart geschrieben. Subparts
beginnen mit einem HTML-Kommentar, in dem zunächst die ID des Subparts (analog zu Markern)
und dann das Schlüsselwort „begin“ steht, und enden analog dazu mit dem Schlüsselwort „end“.
Beispiel für einen Subpart:
<!-- ###SUBPART### begin -->
###MARKER###
<!-- ###SUBPART### end -->
Adapterlink-Filter und Seitenzuordnung
System: TYPO3
Konfigurationsdatei: typo3conf/ext/dmc_browse_soap/tmpl/lsfconfig.inc.php
Der erste Teil der Konfigurationsdatei ist das Array $adapterLinks. Mit dessen Hilfe wird
bestimmt, welche URL-Parameter zum Abruf von LSF-Inhalten (über ein generisches LSF-Element)
typischerweise welchen Anwendungsfall in LSF darstellen. Hintergrund ist die aufgeteilte
Seitenstruktur für die LSF-Darstellung innerhalb von TYPO3. Theoretisch könnte eine einzige Seite
alle LSF-Inhalte verarbeiten und darstellen. Jedoch ist es sinnvoll, verschiedene Inhalte innerhalb des
TYPO3-Auftritts an verschiedenen Stellen in der Navigationsstruktur zu platzieren. Vielmehr noch ist
es im Fall der Bearbeitung der LSF-Daten über den LSF-Adapter sogar zwingend notwendig (diesen im
Intranet zu platzieren).
16
Das Array enthält als Schlüssel jeweils Such-Zeichenketten, die in der URL vorkommen müssen, um
einen Treffer zu erzielen. Im Falle eines Treffers wird die Suche abgebrochen und der Besucher auf
die spezifizierte Seite umgeleitet. Damit ergibt sich die Notwendigkeit, kürzere Zeichenketten, die in
anderen längeren enthalten sind, diesen im Array nachzustellen. Die Reihenfolge der SuchZeichenketten geht also von speziell (längere Zeichenkette) zu allgemein (kürzere Zeichenkette).
Den Zeichenketten im Index des Arrays werden als Werte jeweils Bezeichner für die verschiedenen
Seitentypen zugeordnet. Diese Bezeichner müssen im TypoScript definiert sein und es muss ihnen
jeweils die dazugehörige Seiten-ID zugewiesen worden sein (vgl. Kapitel „Notwendige TypoScriptKonfiguration“). Wird kein Treffer erzielt oder ist der Zielseitentyp nicht definiert, wird eine FallbackSeite angesprungen, die ebenfalls im TypoScript definiert ist.
Verarbeitung der LSF-Datenfelder im Container
System: TYPO3
Konfigurationsdatei: typo3conf/ext/dmc_browse_soap/tmpl/lsfconfig.inc.php
Während das Gesamtlayout der Darstellung in den HTML-Vorlagen festgelegt wird, wird hier die
Verarbeitung der einzelnen Feldinhalte aus LSF konfiguriert. So wird beispielsweise in Abhängigkeit
der Sprache der Telefonnummer aus LSF der Bezeichner „Tel.:“ oder „Phone“ vorangestellt.
Das Konfigurationsarray $containerStuff ist in folgende Bereiche unterteilt:
Kontextabhängige Wrap-Konfiguration (kontextrelevant)
Text (text)
Links (extlinks)
Konkatenation (concat)
Kontextabhängige Wrap-Konfiguration
Hier kann für einen Marker in einem umgebenden Subpart eine abweichende Wrapkonfiguration
festgelegt werden.
Beispiel:
In der HTML-Vorlage wird der Marker ###URL### mehrfach verwendet:
<!-- ###ADDRESS### begin -->
...
###URL###
...
<!-- ###ADDRESS### end -->
...
<!-- ###LINK### begin -->
...
###URL###
...
<!-- ###LINK### end -->
Für das Wrappen wird die subpartabhängige Wrapkonfiguration verwendet:
17
'address###URL###' => array(
'wrap'
=> '<tr>|</tr>',
'labelWrap' => '<td><strong>|</strong></td>',
'valueWrap' => '<td><a href="###URL###"
target="_blank">|</a></td>',
'doubleRep' => 1,
),
'link###URL###' => array(
'wrap'
=> '<tr>|</tr>',
'labelWrap' => '<td><strong>|</strong></td>',
'valueWrap' => '<td><a href="###URL###"
target="_blank">|</a></td>',
'doubleRep' => 1,
),
Text
Hiermit lassen sich multilinguale Texte ausgeben. Dazu muss im Template ein neuer Marker
eingefügt werden. Hier muss ein Kontextarray angelegt werden und darin eine Liste mit solchen
Textmarkern. In der Datei locallang.xml muss für den Marker und den Kontextbereich ein deutscher
und ein englischer Text eingetragen sein.
Optional kann noch eine Wrapkonfiguration wie bei jedem anderen Marker definiert werden, wobei
dort nur das Feld "labelWrap" genutzt wird.
Beispiel:
<!-- ###PERSON### begin -->
...
<tr><th>Einrichtung</th><th>Kontakt</th><th>Sprechzeiten</th><th>Aufgaben</
th></tr>
...
<!-- ###PERSON### end -->
Hier gibt es einen Subpart ###PERSON### und darin einen festen Text "Einrichtung", der multilingual
gemacht werden.
Dazu wird der Text durch einen neuen Marker ###EINRICHTUNG### ersetzt:
<!-- ###PERSON### begin -->
...
<tr><th>###EINRICHTUNG###</th><th>Kontakt</th><th>Sprechzeiten</th><th>Aufg
aben</th></tr>
...
<!-- ###PERSON### end -->
Unter dem Arraykey 'text' wird für den Subpart "person" nun eine Konfiguration für den Link
###EINRICHTUNG### angelegt, in dem alle solchen Textmarker aufgelistet werden:
"text" => array (
'person' => array (
'###EINRICHTUNG###',
),
18
Allgemein:
"text" => array (
"subpart" => array (
'###TEXT1###',
'###TEXT2###',
'###TEXT3###',
...
),
),
// Name des Subparts kleingeschrieben
// Textmarker 1
// Textmarker 2
// Textmarker 3
Links
Hier können neue Links aus Markerinhalten zusammengesetzt werden, die unmittelbar im gleichen
Kontext verfügbar sind. Pro Link muss ein Konfigarray angelegt werden. Key des Arrays ist ein
Markername.
Beispiel
<!-- ###PICTURE### begin -->
<div class="picture">
<img src="###URL###" alt="###ALT###" title="###TITLE###" />
</div>
<!-- ###PICTURE### end -->
Hier gibt es einen Subpart ###PICTURE### und darin einen Link, der aus den Markern ###URL###,
###ALT### und ###TITLE### gebildet wird. Dieser Link soll jetzt dynamisch erzeugt werden.
Dazu wird der Link durch einen neuen Marker ###EXTPIC### ersetzt:
<!-- ###PICTURE### begin -->
<div class="picture">###EXTPIC###</div>
<!-- ###PICTURE### end -->
Unter dem Arraykey 'extlinks' wird für den Subpart "picture" nun eine Konfiguration für den Link
###EXTPIC### angelegt, in dem mitgeteilt wird, aus welchen Markerinhalten dieser gebildet
werden soll:
"picture" => array (
"###EXTPIC###" => array (
"url"
=> '###URL###',
"alt"
=> '###ALT###',
'title'
=> '###TITLE###',
"type"
=> 'img',
),
),
Optional kann noch eine Wrapkonfiguration wie bei jedem anderen Marker definiert werden.
Allgemein:
"subpart" => array (
// Name des Subparts kleingeschr.
"###EXTLINK###" => array (
// Markername des neuen Links
"url"
=> '###URL###',
// LSF-Marker, der die URL enthält
19
"text"
=> '###TEXT###',
// optional: LSF-Marker, der den Linktext enthält
//(keine Verwendung bei Bildern)
"target"
=> '_blank',
// optional
"alt"
=> '###ALT###',
// optional: LSF-Marker, der den Alt-Text enthält
'title'
=> '###TITLE###',
// optional: LSF-Marker, der den Title-Text enthält
"type"
=> 'img',
// optional: img = Bildlink, mail = Maillink,
// default: Weblink (Download/Webseite)
"textsplit" => 20,
// optional: Einfügen eines Leerzeichens alle 20 Zeichen
"textsplitBC" => '@',
// optional: Einfügen eines Leerzeichens vor "@"
// oder einem bel. anderen String
"class"
=> 'className',
// optional: Zuordnung einer oder mehrerer Klassen
// (z.B. "imgLeft" )
"style"
=> 'cssDef',
// optional: Zuordnung einer oder mehrerer CSS-Inlinestyles
// (z.B. "margin:30px")
"width"
=> '80',
// optional: Festlegung einer Breite in px für Bilder
),
),
Konkatenation
Hier kann ein neuer Marker aus 2 anderen Markern zusammengesetzt werden, die unmittelbar im
gleichen Kontext verfügbar sind. Ein Trennstring kann definiert werden, der nur dann zwischen den
Inhalten beider Marker eingefügt wird, wenn auch beide einen Wert enthalten.
Pro Kontext sollte nur ein Konfig-Array angelegt werden, in dem alle neuen Marker dieses Subparts
definiert werden.
Beispiel:
<!-- ###PUBLICATION### begin -->
...
<div class="spacer05 publisher"><span
class="label">Verlag: ###PUBLISH_NAME###, ###PUBLISH_CITY###</span>
...
Hier kann man jetzt beide Marker zusammenfassen, indem man diese durch einen neuen Marker
ersetzt:
<!-- ###PUBLICATION### begin -->
...
<span class="label">Verlag: ###CVERLAG###</span>
...
Im Concat-Array wird für diesen Subpart (falls er nocht nicht definiert ist - Achtung!) folgendes Array
definiert:
20
"publication-publication" => array (
...
array (
"marker"
=> '###CVERLAG###',
// neuer Markername, der in der
// Designvorlage vorkommen muss
"value1"
=> '###PUBLISH_NAME###',
// bestehender Marker, der als erstes verwendet wird
"separator" => ', ',
// optionaler Trennstring, der nur angezeigt
//wird, wenn value1 und value2 ungleich NULL
"value2"
=> '###PUBLISH_CITY###',
// bestehender Marker, der als erstes verwendet wird
),
),
Bei Bedarf kann dieser neue Marker gewrapt werden:
<!-- ###PUBLICATION### begin -->
...
###CVERLAG###
...
und:
'publication-publication###CVERLAG###' => array(
'wrap'
=> '<span class="label">|</span>',
'labelWrap' => '|',
'valueWrap' => '|',
),
Die Concat-Definitionen eines Subparts werden der Reihe nach von oben nach unten abgearbeitet.
Daher ist es möglich, auch mehr als nur 2 Marker zusammenzufassen, indem man sie der Reihe nach
zusammenfasst:
"personKurzInf-person" => array (
array (
"marker"
=> '###CNAME1###',
"value1"
=> '###FORNAME###',
"separator" => ' ',
"value2"
=> '###NAME###',
),
array (
"marker"
=> '###CNAME###',
"value1"
=> '###TITLE###',
"separator" => '<br />',
"value2"
=> '###CNAME1###',
),
),
Möglich ist auch eine "Namensänderung" eines Markers, indem man nur einen Quellmarker angibt.
Dies macht dann Sinn, wenn innerhalb eines Subparts ein Marker mehrfach vorkommt, aber
unterschiedlich gewrapt werden soll:
21
array (
"marker"
"value1"
"separator"
"value2"
),
=>
=>
=>
=>
'###TYPE-LIST###',
'',
'',
'###TYPE###',
Allgemein:
"subpartAussen-subpartInnen" => array ( //Subpart, um den es geht
array (
"marker"
=> '###MARKER###', //Name d.neuen zusammenf.Markers
"value1"
=> '###MARKER1###' // Name des ersten Markers
"separator" => ', ',
// optional: Trennstring
"value2"
=> '###MARKER2###', // optional:Name des 2. Markers
),
Konfiguration der SOAP-Schnittstelle von LSF
System: LSF
Konfigurationsdatei: WEB-INF/conf/dbinterface/soapgetdata_$$$.xml
In dieser Konfigurationsdatei werden alle ausführbaren Abfragen spezifiziert. Umschlossen wird alles
von einem (einzigen) <publishDetail ...>-Tag. Innerhalb dieses Tags wird jede Abfrage mit
einem eigenen Tag eingeleitet, wobei das Tag dem Schlüsselwort im Feld LSF-Verweis in TYPO3
entspricht, also z.B. allPersons.
Innerhalb der Abfrage wird mit <Transform.SQL ...> die Hauptabfrage an die Datenbank
eingeleitet. Eventuelle Unterabfragen können mit Hilfe des Tags <Transform.SubSQL ...>
ausgeführt werden. Alle Unterabfragen werden im Normalfall von <Transform.Parent ...>
umschlossen und befinden sich immer innerhalb des <Transform.SQL ...>-Tags.
Weitere wichtige Unterelemente der Abfrage sind der Bezug auf eine andere Entität (Relation)
innerhalb der LSF-Daten <SOAPRelation> und Suchabfragen <SOAPSearch>. Letztere werden
nur ausgewertet, falls auch wirklich ein Suchbegriff übergeben wurde. Andernfalls wird eine normale
Listenansicht generiert.
Referenz
Aufbau der Datei
<publishDetail ueberschreiben="y">
Alle SOAP-Abfragen werden innerhalb des Tags publishDetail spezifiziert. Für jede SOAP-Abfrage wird
ein Tag eingeführt, das mit dem Bezeichner der Abfrage beginnt.
Listenabfragen (hier: Einrichtungen)
<allInstitutions RootName="institutions" extDataAccess="y" context="admin"
database="lsf" statistics="small" conditionTables="einrichtung,
r_hierarchie">
Innerhalb des “Abfrage”-Tags wird spezifiziert, wie das äußerste XML-Tag der Rückgabe benannt wird
(RootName), ob in der Abfrage auf externe Tabellen zugegriffen wird (extDataAccess) und welche
Tabellen benötigt werden (conditionTables).
22
Detailabfragen (hier: Person)
<persons ResultCache="personal.pid" CacheObject="person" RootName="persons"
extDataAccess="y" context="admin" database="lsf" statistics="small"
conditionTables="personal" authentication="y">
Darüberhinaus kann ein LSF-internes Caching bewirkt werden, indem ein eindeutiger Bezeichner für
den Objekttyp (CacheObject) und für den jeweiligen Datensatz (also die UID, ResultCache)
festgelegt wird. Mit authentication="y" lässt sich eine Unterscheidung der zurückgegebenen
Ergebnisse für eingeloggte und nicht-eingeloggte Benutzer erreichen.
SQL-Hauptabfrage
<Transform.SQL ElementName="event" useLangID="id" emptySet="n"
ignoreEmptyTags="y">
Innerhalb des Abfrage-Tags wird die Hauptanfrage mit Transform.SQL spezifiziert. Die Attribute des
Tags bestimmen das Tag in der XML-Rückgabe (ElementName), Anwendung einer Lokalisierung
(deutsch/englisch, useLangID), das Ausfiltern von leeren Datensätzen (emptySet) und von leeren
Feldern (ignoreEmptyTags).
Unterabfragen
<Transform.Parent ElementName="terms">
Unterabfragen werden innerhalb des Transform.SQL-Tags von einem Transform.Parent-Tag
umschlossen.
SQL-Unterabfrageausdrücke
<Transform.SubSQL ElementName="term" ignoreFields="TerID, TerRaumID"
emptySet="n" ignoreEmptyTags="y">
Innerhalb des Transform.Parent-Tags wird dann eine oder mehrere SQL-Abfragen mit
Transform.SubSQL spezifiziert. Einzelne Tabellenspalten können mit ignoreFields ausgefiltert
werden.
BLOB-Felder auswerten
<Transform.Blob ElementName="longdescription" table="veranstaltung"
column="bemerkung" checkID="id" />
Um Tabelleninhalte, die als BLOB gespeichert sind, müssen explizit in der Abfrage angegeben
werden. Dabei werden Tabelle (table) und Spalte (column) sowie die Benennung in der XMLRückgabe (ElementName) spezifiziert.
Externe Dateien
<Transform.ExternalFile GroupElementName="documents" ElementName="document"
table="veranstaltung" checkID="id" mediatype="document" ExternalSystem="y">
Ebenso wird mit Verweisen auf externe Dateien verfahren.
23
Sichtbarkeiten (Privacy)
<Transform.SubSQL ElementName="address" singleTag="phone, mail"
emptySet="n" privacy="personal.pid" privacyGroup="contactData"
privDirection="negative">
Können zu einem bestimmten Objekttyp in LSF Sichtbarkeiten konfiguriert werden (insb. betrifft das
Personen), so lässt sich mit den Tags privacy, privacyGroup sowie privDirection die
Auswertung dieser Sichtbarkeiten konfigurieren.
Relationen zu anderen Datenbanktabellen
<SOAPRelation>
<einrichtung>
<einrichtung.eid />
</einrichtung>
<person>
<personal.pid />
</person>
</SOAPRelation>
Relationen zu kompletten anderen Objekttypen lassen sich innerhalb des Abfrage-Tags (vor der SQLHauptabfrage) mit Hilfe von SOAPRelation realisieren. Dabei muss das aktuell abgefragte Objekt
(der Hauptabfrage) innerhalb von LSF eine Relation zu anderen Objekten beinhalten (z.B.
Veranstalter = Veranstaltung -> Person).
Suchabfragen
<SOAPSearch>
<searchWord>
<filter operator="OR">
<veranstaltung.veranstnr />
<veranstaltung.dtxt />
<veranstaltung.ltxt />
<veranstaltung.literatur />
</filter>
</searchWord>
</SOAPSearch>
Suchabfragen, die der SOAP-Schnittstelle übergeben werden, werden mit Hilfe des Tags ausgewertet.
Innerhalb dieses Tags wird ein Tag angegeben, das dem Bezeichner des übergebenen „Suchwort“Feldes entspricht und darin wiederum die Behandlung des Suchwortes, also Operator „OR“ bzw.
„AND“ und die zu durchsuchenden Felder wie in obigem Beispiel.
24
UNIVERSITÄT HOHENHEIM
HOCHSCHULKOMMUNIKATION
Webmaster (AH3)
Raphael Heilmann
E-Mail: [email protected]
Stand: 24. Februar 2011
Herunterladen