GSB 7.0 Standardlösung

Objekte 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:

ObjektnameBeschreibung
navnodeZugriff auf Methoden des aktuellen Navigationspunktes (NavNode)
navtargetZugriff auf Methoden des aktuellen Navigationsziels (NavTarget)
calledDocumentZugriff auf Methoden des aktuell aufgerufenen Dokuments
containerZugriff auf Methoden des aktuellen Container-Dokuments, z.B. generische Tabelle
languageZugriff auf Methoden des aktuellen Sprachdokuments (MILanguage)
basehrefAusgabe des aktuellen Basispfads (vgl. HTML-Tag base-href)
siteAusgabe des aktuellen Mandanten- oder Subsitenamens
cmsZugriff auf Methoden von cms
documentZugriff auf Methoden des aktuellen Dokuments

Dokumenttyp-abhängige Objekte sind in dem entsprechenden Kapitel zu dem jeweiligen Dokumenttyp angegeben.

Methoden von cms

MethodeBeschreibung
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.
  • Die Trennmuster werden anhand der aktuellen Sprache automatisch ermittelt.
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:

MethodeBeschreibung
id_Liefert die Dokument-Id des Dokuments.
nameLiefert 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:

MethodeBeschreibung
slotsEine Liste aller Slots mit den enthaltenen Dokumenten.

Methoden von slots

MethodeBeschreibung
get()Liefert den Slot mit dem angegebenen Namen.

Methoden von Slot

Mit der oben genannten Methode get erhält man das Object Slot.

MethodeBeschreibung
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:

MethodeBeschreibung
getDocumentLiefert 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