Jetzt kümmern wir uns um die Einzelansicht eines Bildes. Hierfür soll ein neues Fenster geöffnet werden, wenn der Benutzer auf ein Bild klickt. Zu diesem Zweck packen wir das img-Tag in einen Link ein, dessen Ziel wiederum das Bild ist. Dafür, dass sich ein neues Fenster öffnet, sorgen wir mit etwas JavaScript-Code. Diesen Code schreiben wir ganz an den Anfang unseres Sublayouts:
<script type="text/javascript">
function OpenWindow(address) {
ImgWindow = window.open(address,"poster","width=150,height=200,left=650,top=100");
ImgWindow.focus();
}
</script>Hierdurch wird eine JavaScript-Funktion definiert, der eine URL
(address) übergeben werden muss. window.open öffnet die URL in
einem Fenster namens poster, das die angegebene Größe und Position hat.
Anschließend erweitern wir den Code innerhalb der
table-Anweisung. Für das href-Tag des
a-Elements, in dem sich das Bild befindet, benötigen wir den
kompletten Pfad des Bildes. Er besteht aus dem Basispfad der CMS-Instanz,
prefixUrl, ergänzt um den Pfad des Bildes in der Ordnerhierarchie,
visiblePath. Diese beiden Bestandteile fügen wir mit
Hilfe einer Exportvariablen, imgurl, zusammen. Hier das
komplette Sublayout:
<script type="text/javascript">
function OpenWindow(address) {
ImgWindow = window.open(address,"poster","width=150,height=200,left=650,top=100");
ImgWindow.focus();
}
</script>
<npsobj list="ip_galleryFolders">
<npsobj modifyvar="clear" varname="images" />
<npsobj list="destination.children">
<npsobj condition="isEqual" name1="objType" value2="image">
<npsobj modifyvar="append" varname="images" name="self" />
</npsobj>
</npsobj>
<npsobj table="images" columns="3">
<!-- Pfad des Bildes in der Export-Variablen imgurl speichern.
Bitte aus den folgenden 3 Zeilen die Umbrüche entfernen! -->
<npsobj modifyvar="set" varname="imgurl">
<npsobj insertvalue="var" name="urlPrefix" /><npsobj insertvalue="var" name="visiblePath" />
</npsobj>
<a href="@imgurl" onclick="OpenWindow(this.href); return false">
<npsobj insertvalue="image" name="self" width="80" title="@self.title" />
</a>
</npsobj>
</npsobj>Der Pfad des Bildes wird mit einer
modifyvar="set"-Anweisung
ermittelt und gespeichert. Hier hat die Anweisung kein
name-Attribut, wodurch der Variablen imgurl nicht
der Wert eines Feldes, sondern der Inhalt des npsobj-Elements
zugewiesen wird. Dieses wiederum enthält zwei
insertvalue="var"-Anweisungen, mit denen der komplette Pfad des Bildes
ermittelt wird.
In dem darauf folgenden a-Tag wird imgurl mit Hilfe
einer @-Referenz als Wert des href-Attributs angegeben. Beim
onclick-Ereignis, d.h., wenn das
verlinkte Bild angeklickt wird, wird die oben definierte Funktion
OpenWindow mit der URL als Argument aufgerufen.
Öffnen Sie die Vorschau und probieren Sie Ihr Sublayout aus. Je nach Browser und dessen Einstellungen werden die verlinkten Bilder mit oder ohne Rahmen angezeigt.
