Zielgruppe EntwicklungVersion: GSB10.1Objekte und Methoden
In allen Dokumenttypen, die das Velocity-Framework nutzen, stehen vordefinierte Objekte zur Verfügung. Für den Dokumenttyp Layoutgitter-Template werden weitere Objekt bereitgestellt.
Ausgewählte Objekte in allen Dokumenttypen
In der folgenden Tabelle finden Sie die am häufigsten verwendeten Objekte:
Objektname | Beschreibung |
navnode | Zugriff auf Methoden des aktuellen Navigationspunktes (NavNode) |
navtarget | Zugriff auf Methoden des aktuellen Navigationsziels (NavTarget) |
calledDocument | Zugriff auf Methoden des aktuell aufgerufenen Dokuments |
container | Zugriff auf Methoden des aktuellen Container-Dokuments, z.B. generische Tabelle |
language | Zugriff auf Methoden des aktuellen Sprachdokuments (MILanguage) |
basehref | Ausgabe des aktuellen Basispfads (vgl. HTML-Tag base-href) |
site | Ausgabe des aktuellen Mandanten- oder Subsitenamens |
cms | Zugriff auf Methoden von cms |
document | Zugriff auf Methoden des aktuellen Dokuments |
Dokumenttyp-abhängige Objekte sind in dem entsprechenden Kapitel zu dem jeweiligen Dokumenttyp angegeben.
Methoden von cms
Methode | Beschreibung |
include() | Bindet das angegebene Dokument mit der angegebenen View-Variante ein. |
link() | Gibt einen Link auf das Dokument oder die Property aus. |
message() | Liefert die sprachspezifische Ausgabe des angegebenen Labels. |
escapeXml() | Maskiert Sonderzeichen im Text zur Ausgabe im HTML-Format. |
emptyMarkup() | Prüft, ob das angegebene Richtext-Feld leer ist. |
plainText() | Liefert den Inhalt des angegebenen Richtext-Feldes als String zurück. Absätze werden durch einfache Umbrüche ersetzt. Hinweis: Sonderzeichen werden nicht maskiert. |
hyphenate() | Fügt nach jeder Silbe des Textes ein Soft-Hyphen hinzu.
|
hyphenateMarkup() | Fügt nach jeder Silbe des Textes ein Soft-Hyphen hinzu, wobei HTML-Markup ignoriert wird. Die Trennmuster werden anhand der aktuellen Sprache automatisch ermittelt. |
Beispiele zur Linkgenerierung
Das Object cms stellt entsprechende Methoden zur Generierung von Links zur Verfügung. Der folgende Aufruf erstellt einen Link auf ein Dokument oder eine Blob-Property mit der Default-Ansicht.
#Link auf ein Dokument$cms.link($document)#Link auf eine Blob-Property$cms.link($favicon.normal)
Der nächste Aufruf erstellt einen Link auf ein Dokument mit der angegebenen Ansicht.
$cms.link($document, "renderKurz")
Wichtig: Die Links dürfen unter keinen Umständen durch Anhängen von Strings o.ä. nachbearbeitet werden, da sie sonst in anderen Serverumgebungen (z.B. Portalserver) nicht mehr funktionieren.
Beispiel zur Maskierung von Ausgaben
Um Sonderzeichen für die Ausgabe im HTML-Format zu maskieren, stellt das Objekt cms folgende Methode zur Verfügung.
$cms.escapeXml($sSecondLevelTitle)
Beispiel zur Ausgabe von Labels
Das Object cms stellt entsprechende Methoden zur Erstellung von Labels zur Verfügung.
$cms.message("SieSindHierBreadcrumb")
Bei der Ausgabe von Labels ist auch das Übergeben von bis zu vier Parametern möglich. Diese können im Label durch den Platzhalter {0} – {3} ausgelesen werden.
$cms.message("SucheSieSindHier", "$page")
Methoden von document
Für jedes Objekt vom Typ Dokument stehen folgende Methoden zur Verfügung:
Methode | Beschreibung |
id_ | Liefert die Dokument-Id des Dokuments. |
name | Liefert den Dokumentnamen des Dokuments. |
getFormattedDateOfIssue() | Liefert das Datumsfeld „Erscheinungsdatum (DateOfIssue)“ unter Verwendung der globalen Formatierung unterhalb von /mandant/_config/ResourceBundleEntries/Format |
getFormattedMoveToArchiveDate() | Liefert das Datumsfeld „Archivierungsdatum (MoveToArchive)“ unter Verwendung der globalen Formatierung unterhalb von /mandant/_config/ResourceBundleEntries/Format ohne Zeitangabe |
getFormattedMoveToArchiveTime() | Liefert das Datumsfeld „Archivierungsdatum (MoveToArchive)“ unter Verwendung der globalen Formatierung unterhalb von /mandant/_config/ResourceBundleEntries/Format mit Zeitangabe |
getFormattedStartDate() | Liefert das Datumsfeld „Beginn (StartDate)“ unter Verwendung der globalen Formatierung unterhalb von /mandant/_config/ResourceBundleEntries/Format Hinweis: Nicht bei allen Dokumenttypen vorhanden |
getFormattedStopDate() | Liefert das Datumsfeld „Ende (StopDate)“ unter Verwendung der globalen Formatierung unterhalb von /mandant/_config/ResourceBundleEntries/Format Hinweis: Nicht bei allen Dokumenttypen vorhanden |
Zusätzlich zu den in der Tabelle genannten Methoden kann jedes vorhandene Feld mit der technischen Bezeichnung aus dem Dokument ausgelesen werden. Der technische Name eines Feldes ist im Tooltip zum jeweiligen Feld enthalten.
$document.title
Dokumenttyp Layoutgitter-Template
Alle in dem Feld Parameter (cl2Parameters) verlinkten Dokumente sind unter dem im entsprechenden Text-Classifier eingetragenen Namen verfügbar.
Zusätzlich zu den oben genannten Objekten gibt es folgendes:
Methode | Beschreibung |
slots | Eine Liste aller Slots mit den enthaltenen Dokumenten. |
Methoden von slots
Methode | Beschreibung |
get() | Liefert den Slot mit dem angegebenen Namen. |
Methoden von Slot
Mit der oben genannten Methode get erhält man das Object Slot.
Methode | Beschreibung |
getName() | Liefert den Namen des Slots. |
getAllEntries() | Liefert die Liste aller Einträge, über die iteriert werden kann. |
getEntries() | Liefert die Liste der Einträge der aktuellen Seite. |
isEmpty() | Prüft, ob der Slot Einträge enthält. |
getNumTotalEntries() | Liefert die Gesamtzahl der Einträge (nicht nur der aktuellen Seite). |
getEntriesPerPage() | Liefert die Anzahl der auf einer Seite dargestellten Einträge. |
getNumPages() | Liefert die Anzahl der Seiten. |
getPageNumbers() | Liefert eine Liste der Seitennummern, über die iteriert werden kann. |
getPageNumbersExtract() | Liefert eine Liste der Seitennummern, die zum Blättern angezeigt werden soll. |
getPageIndex() | Liefert die aktuelle Seitennummer (1-basiert). |
getFirstEntryIndex() | Liefert den 0-basierten Index des ersten angezeigten Elements dieser Seite. |
getLastEntryIndex() | Liefert den 0-basierten Index des letzten angezeigten Elements dieser Seite. |
getPageLink() | Liefert einen Link auf die angegebene Seite. |
getSortOrderLink() | Liefert einen Link auf die aktuelle Seite mit der angegebenen Sortier-Reihenfolge. |
Methoden von SlotEntry
Mit der oben genannten Methode getAllEntries erhält man eine Liste aller Einträge innerhalb des Slot. Die folgende Methode kann auf die Einträge angewandt werden:
Methode | Beschreibung |
getDocument | Liefert den Eintrag in dem Slot. |
Beispiele für Layouts in generischen Tabellen
Blättern-Links ohne Zusammenfassung
<ul id="searchResultIndex" class="navIndex"> #foreach( $page in $slot.pageNumbers ) #if( $slot.getPageIndex() == $page) <li><strong title="$cms.message("SucheSieSindHier", "$page")">$page</strong></li> #else <li><a href="$slot.getPageLink($page)" title="$cms.message("SucheSeite", "$page")">$page</a></li> #end #end </ul>
Blättern-Links mit Zusammenfassung
<ul id="searchResultIndex" class="navIndex"> #foreach( $page in $slot.getPageNumbersExtract(1,2,2,1)) #if( $slot.pageIndex == $page) <li><strong title="$cms.message("SucheSieSindHier", "$page")">$page</strong></li> #elseif( $page == 0 ) <li> … </li> #else <li><a href="$slot.getPageLink($page)" title="$cms.message("SucheSeite", "$page")">$page</a></li> #end #end </ul>
Blättern-Links für eine Seite vor und eine Seite zurück
<ul id="searchResultIndex" class="navIndex"> #if( $slot.pageIndex > 1) #set( $iPageLink= $slot.pageIndex - 1)) <li> <a href="$slot.getPageLink($iPageLink)" title="$cms.message("SucheSeite", "$iPage")"> <img src="$cms.link($bild_zurueck.normal)" alt="$cms.message("PfeilLinks")" /> </a> </li> #end #if( $slot.pageIndex < $slot.numPages) #set( $iPageLink= $slot.pageIndex+1 ) <li> <a href="$slot.getPageLink($iPageLink)" title="$cms.message("SucheSeite", "$iPageLink")"> <img src="$cms.link($bild_weiter.normal)" alt="$cms.message("PfeilRechts")" /> </a> </li> #end</ul>
Sortierungs-Links bei generischen Tabellen
<thead> <tr> <th>#set( $dateOfIssueOrder = "+dateOfIssue" )#set( $dateOfIssueLabel = $cms.message("Datum") )#set( $linkTitleLabel = $cms.message("Absteigend") )#if( ($slot.currentSortOrder == "") || ( $slot.currentSortOrder != "+dateOfIssue" ) ) #set( $sLink = $slot.getSortOrderLink("+dateOfIssue") ) #set( $linkLabel = $cms.message("AufsteigendSortieren") ) <a href="$sLink" title="$linkLabel"><img src="$cms.link($icon_sort_up_active.normal)" alt="$linkLabel" /></a> #else <img src="$cms.link($icon_sort_up_inactive.normal)" alt="$cms.message("AufsteigendSortiert")" />#end#if( ($slot.currentSortOrder == "") || ( $slot.currentSortOrder != "-dateOfIssue" ) ) #set( $sLink = $slot.getSortOrderLink("-dateOfIssue") ) #set( $linkLabel = $cms.message("AbsteigendSortieren") )<a href="$sLink" title="$linkLabel"><img src="$cms.link($icon_sort_down_active.normal)" alt="$linkLabel" /></a> #else<img src="$cms.link($icon_sort_down_inactive.normal)" alt="$cms.message("AbsteigendSortiert")" />#end$cms.escapeXml($dateOfIssueLabel)<br/> </th> <th>#set( $titleOrder = "+title" )#set( $titleLabel = $cms.message("Titel") )#if( ($slot.currentSortOrder == "") || ( $slot.currentSortOrder != "+title" ) ) #set( $sLink = $slot.getSortOrderLink("+title") ) #set( $linkLabel = $cms.message("AufsteigendSortieren") ) <a href="$sLink" title="$linkLabel"><img src="$cms.link($icon_sort_up_active.normal)" alt="$linkLabel" /></a>#else <img src="$cms.link($icon_sort_up_inactive.normal)" alt="$cms.message("AufsteigendSortiert")" />#end#if( ($slot.currentSortOrder == "") || ( $slot.currentSortOrder != "-title" ) ) #set( $sLink = $slot.getSortOrderLink("-title") ) #set( $linkLabel = $cms.message("AbsteigendSortieren") ) <a href="$sLink" title="$linkLabel"><img src="$cms.link($icon_sort_down_active.normal)" alt="$linkLabel" /></a> #else <img src="$cms.link($icon_sort_down_inactive.normal)" alt="$cms.message("AbsteigendSortiert")" />#end $cms.escapeXml($titleLabel)<br/> </th> </tr></thead>
Beispiel für das Glossar-Layout
Für das Glossar sind folgende Slot-Namen vordefiniert: GlossarLevel1, GlossarLevel2 und GlossarLevel3.
## display level 1#set( $level1 = $slots.get("GlossarLevel1") )#if( ! $level1.isEmpty() )<ul id="glossaryIndex" class="navIndex"> #foreach( $entrySecondLevel in $level1.entries ) #set( $docSecondLevel = $entrySecondLevel.document ) #set( $sSecondLevelTitle = $cms.plainText($docSecondLevel.title) ) #set( $sGesetzt = $docSecondLevel.internalComments ) #if( ! $sGesetzt.equals("Gesetzt") ) <li>$cms.escapeXml($sSecondLevelTitle)</li> #elseif( $docSecondLevel.equals($container.secondLevel) ) #if( $level3.isEmpty() ) #set( $sTitle = $cms.message("GlossarAusgewaehlt", "$cms.escapeXml($sSecondLevelTitle)") ) <li><strong>$cms.escapeXml($sSecondLevelTitle)</strong></li> #else #set( $sLink = $cms.link($container, null, ["lv2Link", $docSecondLevel]) ) <li><strong><a href="$sLink" title="$cms.escapeXml($sSecondLevelTitle)">$cms.escapeXml($sSecondLevelTitle)</a></strong></li> #end #else #set( $sLink = $cms.link($container, null, ["lv2Link", $docSecondLevel]) ) <li><a href="$sLink" title="$cms.escapeXml($sSecondLevelTitle)">$cms.escapeXml($sSecondLevelTitle)</a></li> #end #end</ul>## display level 2 #set( $level2 = $slots.get("GlossarLevel2") ) #if( ! $level2.isEmpty() )<ul id="glossaryHits"> #foreach( $entrySecondLevel in $level2.entries ) #if( ! $container.parameterData.documentsByTextClassifier.viewLevel2.isEmpty() )$entrySecondLevel #else #set( $docEntry = $entrySecondLevel.document ) #set( $displayTitleEscaped = $cms.escapeXml($docEntry.displayTitle) ) #set( $sLink = $cms.link($container, null, ["lv2Link", $docSecondLevel,"lv3Link", $docEntry]) ) #if( $docEntry.equals($container.thirdLevel) ) #set( $titleAusgewaehlt = $cms.message("GlossarAusgewaehlt", $displayTitleEscaped) )<li><strong title="$titleAusgewaehlt"><a href="$sLink" title="$displayTitleEscaped">$displayTitleEscaped</a></strong></li> #else<li><a href="$sLink" title="$displayTitleEscaped">$displayTitleEscaped</a></li> #end #end #end</ul> #end## display level 3 #set( $level3 = $slots.get("GlossarLevel3") ) #if( ! $level3.isEmpty() )$level3 #end#end
Ausgewählte Objekte im Dokumenttyp PageStructure
Die vordefinierten Objekte und alle Methoden von cms können ausschließlich vom PSTemplate verwendet werden. Für die Varianten PSISB, PSDiv und PSPlain kann kein Velocity eingesetzt werden.
Alle in dem Feld Parameter (cl2Parameters) verlinkten Dokumente sind über den Namen im Feld Text verfügbar.
Dokumenttyp HTMLFragment
Alle in dem Feld Parameter (cl2RelatedEnts) verlinkten Dokumente sind über den Namen im Feld Text verfügbar.
Dokumenttyp HFTextSeparator
Alle in dem Feld Formular-Füll-Parameter (cl2FormFillerProps) verlinkten Dokumente sind über den Namen im Feld Text verfügbar.
Das aktuelle Formular ist mit der Variablen „$form“ erreichbar.
Dokumenttyp RSSNewsfeed
Alle in dem Feld Parameter (cl2RelatedEnts) verlinkten Dokumente sind über den Namen im Feld Text verfügbar. Das komplette Template muss in dem Feld Header-Template (headerTemplate) eingetragen werden.
Die Liste der Einträge steht in der Variablen $items. Hierüber muss an der gewünschten Stelle iteriert werden:
#foreach( $item in $items ) $item#end
Dokumenttyp Konfiguration-Resource Message
In diesem Dokumenttyp stehen die globalen Objekte „navnode“, „navtarget“ und „language“ nicht zur Verfügung, weiterhin sind die Objekte „document“ und „basehref“ noch nicht richtig initialisiert (document enthält das aufgerufene Formular anstelle der Zielseite). Die genannten Objekte sollten in den Resource-Messages daher nicht verwendet werden.
Alle in dem Feld Parameter (cl2RelatedEnts) verlinkten Dokumente sind über den Namen im Feld Text verfügbar.
Bei dem Einsatz von Selectboxen muss beachtet werden, dass die Werte aus einem Label ausgelesen werden, da ansonsten aus technischen Gründen keine Sprachwechsel erfolgen können. Im unteren Beispiel werden Labels mittels der Methode cms.message für die Anrede (salutation) und das Land (country) genutzt.
Beispiele
Folgende Bestellung wurde aufgegeben:$OrderItemsEmpfänger:$cms.message($salutation)$firstName $lastName$company$address$postalCode $city$cms.message($country)Email: $email