projektbezogene #global-Aufrufe
Die Anforderungen einer Web-Site können es erforderlich machen, auf die Einstellungen oder andere Projektinformationen zuzugreifen. Soll beispielsweise innerhalb der Web-Site ein Sprachwechsel ermöglicht werden, ist es sinnvoll zuvor die definierten Projektsprachen zu ermitteln.
Für solche Einsatzzwecke bietet das Systemobjekt #global die Möglichkeit auf Eigenschaften des Projekts zuzugreifen. Dazu wird der Ausdruck #global.project verwendet, der ein Objekt vom Datentyp Project zurückliefert.
In der nachfolgenden Tabelle sind die wichtigsten Aufrufe aufgeführt:
Aufruf | Bedeutung | Rückgabedatentyp |
---|---|---|
#global.project.brokenLinkMedia | Liefert den Namen des eingestellten Ersatzmediums zurück | String |
#global.project.brokenLinkPage | Liefert den Namen der eingestellten Ersatzseite zurück. | String |
#global.project.description | Liefert die Beschreibung des Projekts zurück | String |
#global.project.id | Liefert die ID des Projekts zurück. | |
#global.project.groups | Liefert alle Gruppen eines Projektes zurück (siehe dazu auch Seite zu Projekteigenschaften im Bereich "Tutorials"). | |
#global.project.languages | Liefert alle Sprachen eines Projektes zurück (siehe dazu Seite zu Server- und Projekteigenschaften im Bereich "Tutorials"). Mit der Methode .shouldGenerate() des Datentyps Language kann geprüft werden, ob eine Sprache generiert wird oder nicht. | |
#global.project.masterLanguage | Liefert die Mastersprache eines Projekts zurück | |
#global.project.masterLanguage.abbreviation | Liefert das Kürzel der Mastersprache eines Projekts zurück. | String |
#global.project.masterLanguage.name | Liefert den Namen der Mastersprache zurück, z. B. Deutsch, English usw. | String |
#global.project.name | Liefert den Namen des Projekts zurück | String |
#global.project.originalResolution | Liefert die Originalauflösung zurück | |
#global.project.resolutions | Liefert alle Auflösungen eines Projektes zurück | |
#global.project.templateSets | Liefert alle Vorlagensätze eines Projektes zurück. | |
#global.project.users | Liefert alle Benutzer eines Projektes zurück | |
#global.project.remoteProjectConfigurations | Liefert alle Remote-Projektkonfigurationen zurück | |
Beispiele
Nachfolgend werden einige Beispiele zur Verwendung der Anweisung innerhalb von Vorlagen gezeigt. Die Beispiele sollen die konkrete Auswirkung der Anweisung verdeutlichen und eine Hilfe für den Vorlagenentwickler bei der Erstellung eigener Vorlagen sein.
Für die Verwendung innerhalb eines Projekts, müssen die hier gezeigten Beispiele angepasst werden! Beispielsweise müssen Variablennamen auf die spezifischen Variablennamen des Projekts geändert werden, in dem die Anweisung verwendet werden soll. |
1. Beispiel: Drop-Down-Box mit allen generierten Projektsprachen
<select size="1" name="language" onchange="window.location.href=this.options[this.selectedIndex].value">
$CMS_FOR(l, #global.project.languages)$
$CMS_IF(l.shouldGenerate)$
<option value="$CMS_REF(#global.node, lang:l.abbreviation)$">$CMS_VALUE(l.name + " (" + l.abbreviation + ")")$</option>
$CMS_END_IF$
$CMS_END_FOR$
</select>
Im Beispiel werden alle Projektsprachen mit #global.project.languages ermittelt. Mit der $CMS_FOR(...)$-Anweisung wird nun jede einzelne Projektsprache behandelt. Ist die Option Sprache generieren für die Sprache aktiviert (Projekteinstellungen: Sprachen; Überprüfung mit .shouldGenerate()), wird ein Drop-Down-Box-Eintrag ausgegeben. In der Drop-Down-Box wird der Name der Sprache und zusätzlich (in Klammern eingefasst) die Abkürzung angezeigt. Das Ziel des Eintrags ist die aktuelle Seite in der entsprechenden Sprache.
Exemplarische Ausgabe:
<select size="1" name="language" onchange="window.location.href=this.options[this.selectedIndex].value">
<option value="/preview/671041/show/site/DE/current/671044/681046">Deutsch (DE)</option>
<option value="/preview/671041/show/site/EN/current/671044/681046">English (EN)</option>
<option value="/preview/671041/show/site/ES/current/671044/681046">Español (ES)</option>
</select>
2. Beispiel: Ausgabe eines Bildes in allen Projektauflösungen
$CMS_FOR(r, #global.project.resolutions)$
<p>
$CMS_IF(r.isOriginal)$
<img src="$CMS_REF(media:"florida")$"/>
<p>Bild -
unskaliert
- ($CMS_VALUE(ref(media:"florida").width)$x$CMS_VALUE(ref(media:"florida").height)$)</p>
$CMS_ELSE$
<img src="$CMS_REF(media:"florida", res:r)$" />
<p>Bild -
$CMS_IF(r.width > 0)$
breitenskaliert
$CMS_IF(r.height > 0)$
und höhenskaliert
$CMS_END_IF$
$CMS_ELSIF(r.height > 0)$
höhenskaliert
$CMS_END_IF$
- ($CMS_VALUE(ref(media:"florida", res:r).width)$x$CMS_VALUE(ref(media:"florida", res:r).height)$)</p>
$CMS_END_IF$
</p>
$CMS_END_FOR$
Im Beispiel werden alle Auflösungen mit #global.project.resolutions ermittelt. Mit der $CMS_FOR(...)$-Anweisung wird nun jede Auflösung einzeln behandelt:
- Handelt es sich um die Originalauflösung (.isOriginal), so wird das Bild unskaliert mit dem Text "Bild - unskaliert - " und der Breite und Höhe in Pixel ausgegeben.
- Bei anderen Auflösungen wird das Bild in der entsprechenden Auflösung ausgegeben. Dabei wird ermittelt, ob das Bild in der Breite und/oder Höhe skaliert wird und anschließend die entsprechende Breite und Höhe in Pixel ausgegeben. Ein Bild wird immer dann skaliert, wenn entweder die Breiten- oder die Höhenangabe in der Auflösung einen Wert größer als 0 aufweist.
Exemplarische Ausgabe:
<p>
<img src="/preview/671041/show/media/DE/current/773042/ORIGINAL"/>
<p>Bild - unskaliert - (4134x2766)</p>
</p>
<p>
<img src="/preview/671041/show/media/DE/current/773042/W100" />
<p>Bild - breitenskaliert -(100x67)</p>
</p>
<p>
<img src="/preview/671041/show/media/DE/current/773042/H100" />
<p>Bild - höhenskaliert -(149x100)</p>
</p>
3. Beispiel: Filtern von Projekteigenschaften
In manchen Fällen kann es von Bedeutung sein, aus der Menge von Projekteigenschaften (wie z. B. Sprachen, Auflösungen, Vorlagensätze, Benutzer) einige nach bestimmten Kriterien herauszufiltern, um auf diese dann wiederum spezielle Methoden anwenden zu können.
Dazu kann die Methode .filter verwendet werden. (Siehe dazu auch Seite Abbildungs-Ausdrücke (Lambda).)
Menge | Syntax |
---|---|
alle Sprachen eines Projekts | $CMS_VALUE(#global.project.languages)$ |
alle Sprachen eines Projekts außer der Mastersprache | $CMS_VALUE(#global.project.languages.filter(x -> !x.masterLanguage))$ |
alle Sprachen eines Projekts, die generiert werden | $CMS_VALUE(#global.project.languages.filter(x -> x.shouldGenerate))$ |
alle Sprachen, die generiert werden, außer der Mastersprache | $CMS_VALUE(#global.project.languages.filter(x -> !x.masterLanguage && x.shouldGenerate))$ |
alle Auflösungen eines Projekts | $CMS_VALUE(#global.project.resolutions)$ |
alle Auflösungen eines Projekts außer der Auflösung ORIGINAL | $CMS_VALUE(#global.project.resolutions.filter(x -> !x.original))$ |
alle Benutzer eines Projekts | $CMS_VALUE(#global.project.users)$ |
alle Benutzer des Projekts, die Projekt-Administrator sind | $CMS_VALUE(#global.project.users.filter(x -> x.isProjectAdmin(#global.project)))$ |
alle Remote-Projektkonfigurationen eines Projekts | $CMS_VALUE(#global.project.remoteProjectConfigurations)$ |
alle Remote-Projektkonfigurationen außer dem lokalen Projekt | $CMS_VALUE(#global.project.remoteProjectConfigurations.filter(x -> x.projectName != #global.project.name))$ |