Remote-Zugriff
FirstSpirit ermöglicht den Zugriff aus einem Projekt auf andere Projekte (sogenannte „Remote-Projekte“), die sich auf demselben FirstSpirit-Server befinden. Auf diese Weise können beispielsweise Objekte (z. B. Medien), die in einem zentralen Projekt verwaltet werden, von verschiedenen Projekten (auch „Zielprojekte“ genannt) verwendet werden. Die Objekte werden in den Zielprojekten dabei lediglich referenziert, verbleiben physikalisch aber im Remote-Projekt.
In FirstSpirit sind drei unterschiedliche Arten des Remote-Zugriffs möglich:
- Remote-Media (siehe unten)
- Verwandte Projekte (siehe FirstSpirit Handbuch für Administratoren)
- Remote-Schemata (siehe Dokumentation zum Modul FirstSpirit DynamicDatabaseAccess)
Remote-Media
Für die Verwendung der Remote-Media-Funktionalität muss eine entsprechende Lizenz vorliegen. Dazu muss der Parameter license.REMOTEPROJECT der Lizenz (z. B. einsehbar im FirstSpirit Server Monitoring, Menüpunkt „FirstSpirit – Konfiguration – Lizenz“) auf den Wert 1 gesetzt sein.
Weitere Informationen zur Konfiguration siehe Dokumentation zu FirstSpirit CorporateMedia und FirstSpirit Handbuch für Administratoren.
Zugriff auf Remote-Projekte
Mithilfe der in den unten aufgeführten Eingabekomponenten bzw. mit Verweisvorlagen kann auf Medien und andere Objekte aus Remote-Projekten zugegriffen werden.
Parameter und Tags, die für die Eingabekomponenten relevant sind, können im Kapitel Formulare bei der jeweiligen Eingabekomponente nachgeschlagen werden. Allgemein handelt es sich dabei um folgende Tags und Parameter:
- REMOTE mit
- name
- autoReleaseAfterUpload
- uploadFolder - CATEGORY mit
- name - FOLDER mit
- name
- store - upload (in Kombination mit REMOTE und/oder CATEGORY)
Zugriff über | Bedeutung |
---|---|
Eingabekomponente zum Anlegen und Bearbeiten von Verweisen. Für diese Eingabekomponente sind Verweisvorlagen erforderlich. | |
Eingabekomponente, über die eine beliebige Referenz ausgewählt werden kann. Zusätzlich können über FS_REFERENCE Medien in Remote-Projekte hochgeladen werden. | |
Eingabekomponente zur Eingabe von Text, die auch Formatierungen und Verlinkungen erlaubt. Für diese Eingabekomponente sind Verweisvorlagen erforderlich. | |
Eingabekomponente zur Eingabe von Text in Tabellenform, die auch Formatierungen und Verlinkungen erlaubt. Für diese Eingabekomponente sind Verweisvorlagen erforderlich. | |
FS_LIST | Eingabekomponente zur Erstellung von Verweislisten. Für diese Eingabekomponente sind Verweisvorlagen erforderlich. |
Eingabekomponente, über die Bilder aus Remote-Projekten ausgewählt und referenziert sowie mit verweis-sensitiven Flächen versehen werden können. Für diese Eingabekomponente sind Verweisvorlagen erforderlich. | |
CMS_INPUT_LINKLIST | Eingabekomponente zur Erstellung von Verweislisten. Für diese Eingabekomponente sind Verweisvorlagen erforderlich. |
CMS_INPUT_PICTURE | Eingabekomponente, über die Bilder aus Remote-Projekten ausgewählt und referenziert werden können. Zusätzlich können über CMS_INPUT_PICTURE Bilder in Remote-Projekte hochgeladen werden. |
CMS_INPUT_FILE | Eingabekomponente, über die Dateien aus Remote-Projekten ausgewählt und referenziert werden können. Zusätzlich können über CMS_INPUT_FILE Dateien in Remote-Projekte hochgeladen werden. |
CMS_INPUT_PAGEREF | Eingabekomponente, über die Verweise auf Seitenreferenzen aus der Struktur-Verwaltung sowie Medien aus der Medien-Verwaltung ausgewählt werden können. |
Beispiele für Remote-Verweise:
Soll eine Auswahl aus einem Remote-Projekt über Verweisvorlagen erfolgen, ist dazu FS_REFERENCE mit Angabe des gewünschten Remote-Projekts über die Tags PROJECTS / REMOTE erforderlich.
Dabei können je nach Bedarf verschiedene Einschränkungen auf Verwaltungen und / oder Projekt realisiert werden:
Folgende Konfiguration ermöglicht eine Auswahl von Seitenreferenzen aus der Struktur- und Medien aus der Medien-Verwaltung des (lokalen) Zielprojekts als auch des Remote-Projekts:
<FS_REFERENCE name="lt_reference" useLanguages="no">
<FILTER>
<ALLOW type="pageref"/>
<ALLOW type="media"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Link target (remote project)"/>
<LANGINFO lang="DE" label="Verweisziel"/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="sitestore"/>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</LOCAL>
<REMOTE name="remote">
<SOURCES>
<FOLDER name="root" store="sitestore"/>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</REMOTE>
</PROJECTS>
</FS_REFERENCE>
Folgende Konfiguration ermöglicht eine Auswahl von Seitenreferenzen aus der Struktur- und Medien aus der Medien-Verwaltung nur des Remote-Projekts:
<FS_REFERENCE name="lt_reference" useLanguages="no">
<FILTER>
<ALLOW type="pageref"/>
<ALLOW type="media"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Link target (remote project)"/>
<LANGINFO lang="DE" label="Verweisziel (Remote-Projekt)"/>
</LANGINFOS>
<PROJECTS>
<REMOTE name="remote">
<SOURCES>
<FOLDER name="root" store="sitestore"/>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</REMOTE>
</PROJECTS>
</FS_REFERENCE>
Folgende Konfiguration ermöglicht eine Bildauswahl aus der Medien-Verwaltung des Remote-Projekts:
<FS_REFERENCE name="lt_image_remote" useLanguages="no">
<FILTER>
<HIDE type="file"/>
<ALLOW type="picture"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Select an image (remote project)"/>
<LANGINFO lang="DE" label="Bildauswahl (Remote-Projekt)"/>
</LANGINFOS>
<PROJECTS>
<REMOTE name="remote">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</REMOTE>
</PROJECTS>
</FS_REFERENCE>
Folgende Konfiguration ermöglicht eine Bildauswahl aus der Medien-Verwaltung des Remote-Projekts als auch des Zielprojekts:
<FS_REFERENCE name="lt_image" useLanguages="no">
<FILTER>
<HIDE type="file"/>
<ALLOW type="picture"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="Select an image"/>
<LANGINFO lang="DE" label="Bildauswahl"/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</LOCAL>
<REMOTE name="remote">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</REMOTE>
</PROJECTS>
</FS_REFERENCE>
Ausgabe von Referenzen auf Remote-Projekte
Medien und Seiten aus Remote-Projekten werden über $CMS_REF(...)$ oder $CMS_VALUE(ref:...)$ auf der Webseite ausgegeben.
Ausgabe eines internen Verweises zu einem Remote-Projekt:
<a href="$CMS_REF(lt_reference)$">$CMS_VALUE(lt_text)$</a>
Bildausgabe einer Medienreferenz aus einem Remote-Projekt:
<img src='$CMS_REF(lt_image_remote)$ ...>
Auflösungen in Remote-Projekten
Die Auflösungen in Remote- und Zielprojekten können unterschiedlich sein, d.h. sie können unterschiedliche Bezeichnungen oder / und unterschiedliche Breiten bzw. Höhen haben.
Bei der Vorlagenentwicklung müssen diese unterschiedlichen Auflösungen berücksichtigt werden. Weiterführende Informationen siehe $CMS_REF(...)$.
Erzeugung von PDF-Dateien
Für die Erzeugung von PDF-Dateien über FOP werden innerhalb der Vorlagen absolute Verweise in das Generierungsverzeichnis benutzt: abs:3
Da Remote-Media-Objekte nicht in das Generierungsverzeichnis kopiert werden, wird bei der Generierung ein Pfad erzeugt, der in das Projektverzeichnis des Remote-Projekts verweist (Freigabestand).
Zugriff auf das Remote-Projekt über die Access-API
Der Zugriff auf das Remote-Projekt über die Access-API erfolgt über das Interface UserService. Das Interface UserService wurde um die Methode getRemoteUserService(String symbolicName) erweitert, die den UserService des Remote-Projekts zurückliefert.
Als Übergabeparameter wird der symbolische Name der Remote-Projekt-Konfiguration übergeben.
Auszug aus der API-Dokumentation:
UserService getRemoteUserService (java.lang.String symbolicName)
Gets the remote userservice by connecting to the project defined in the remote project configuration specified by the given symbolic name.
Parameters:
symbolicName - which specifies the remote project configuration
Returns:
the user service to of the remote project
Die Connections des Remote-Projekts werden in der Connection des Benutzers gehalten und beim disconnect() der Benutzer-Connection ebenfalls geschlossen.
Aufruf des RemoteUserService über die Beanshell-Konsole im Zielprojekt:
bsh %
e.getProject().getUserService().getRemoteUserService("sym-Name")
Unterstützung für mehrsprachige Medien
Die Mehrsprachigkeit von Medien wird unterstützt. Das bedeutet, sprachabhängige Remote-Medien können in allen gepflegten Sprachen (des Remote-Projekts) im Zielprojekt ausgegeben werden.
Bei der Angabe des optionalen Parameters lang bzw. language wird bei der Auflösung einer Referenz zusätzlich die angegebene (Remote-)Projektsprache berücksichtigt. Wird der Parameter nicht angegeben, so wird die Referenz mit der aktuellen Sprache (Vorschau und Generierung) aufgelöst.
Als Wert ist ein für das Remote-Projekt gültiges Sprachkürzel, in doppelten Hochkommata eingefasst, anzugeben. Statt einer fest definierten Bezeichnung kann auch das Objekt language (z. B. #global.language) verwendet werden.
Die Sprachen von Remote- und Zielprojekten können unterschiedlich sein. Bei der Vorlagenentwicklung müssen diese unterschiedlichen Sprachen berücksichtigt werden. Referenziert der Vorlagenentwickler ein Remote-Medium in einer Sprache, die im Remote-Projekt nicht vorhanden ist, kann das zu Fehlern beim Anfordern einer Vorschau und bei der Generierung führen. |
Identische Sprachen im Zielprojekt und in den Remote-Projekten: In diesem Fall sollten keine Fehler beim Anfordern einer Vorschau und bei der Generierung auftreten.
Unterschiedliche Sprachen im Zielprojekt und in den Remote-Projekten: In diesem Fall kann es zu Fehlern kommen, wenn der Vorlagenentwickler eine Sprache innerhalb des Ausgabekanals über das Attribut lang bzw. language einstellt, die im Remote-Projekt nicht vorhanden ist. Wählt der Redakteur nun ein Medium aus der Remote-Medien-Verwaltung aus, wird beispielsweise beim Erzeugen einer Vorschau, die vom Vorlagenentwickler voreingestellte Sprache im Remote-Projekt nicht gefunden. Das Medium wird in diesem Fall in der Mastersprache (des Remote-Projekts) ausgegeben (Standardwert).
Dagegen ist es möglich, ein Remote-Medium in einer Sprache auszugeben, die nur im Remote-Projekt, nicht aber im Zielprojekt vorhanden ist. Das sprachabhängige Medium liegt physikalisch im Remote-Projekt. Damit können die sprachabhängigen Medieninhalte des Remote-Projekts über den CorporateMedia-Zugriff im Zielprojekt referenziert werden.
Dabei gilt: Es werden nur die Sprachen aus dem Projekt ausgewertet, aus denen das ausgewählte Medium stammt. Wird ein Bild aus einer Remote-Medien-Verwaltung ausgewählt, werden nur die sprachabhängigen Medieninhalte berücksichtigt, die für das Remote-Projekt konfiguriert wurden. Wird stattdessen ein Bild aus der lokalen Medien-Verwaltung ausgewählt, werden die sprachabhängigen Medieninhalte des lokalen Zielprojekts berücksichtigt.
Eine feste Spracheinstellung innerhalb der Vorlagen sollte nur konfiguriert werden, wenn entweder die Sprachen im Zielprojekt und in den Remote-Projekten identisch sind, oder sichergestellt werden kann, aus welcher Medien-Verwaltung die ausgewählten Medien stammen. |
Ausgabe über das Objekt language: Statt innerhalb der Vorlagen über den Parameter lang/ language einen festen Wert vorzugeben, kann der Vorlagenentwickler auch das Objekt language aus dem Remote-Projekt holen und übergeben. Über folgende Anweisung kann der Vorlagenentwickler beispielsweise eine Referenz auf ein Bild aus einem Remote-Projekt mit allen im Remote-Projekt vorhandenen Sprachen ausgeben (Beispiel für die Eingabekomponente FS_REFERENCE):
$CMS_IF(!st_remotepic.isEmpty)$
$CMS_FOR(_lang, st_remotepic.media.project.languages)$
<pre>
$CMS_VALUE(_lang)$=$CMS_REF(st_remotepic, remote: st_remotepic.remoteSymName, lang:_lang)$
</pre>
$CMS_END_FOR$
$CMS_END_IF$