Teil1: JSLink: you’ve got the whole SharePoint in your hands
Teil2: JSLink: was man sonst noch wissen sollte (dieser Artikel)
Teil3: JSLink – Problemfall Minimal Download Strategy (MDS)
Das grundlegende Prinzip und die genaue Verwendung von JS Link habe ich euch in meinem letzten Artikel "JS Link: you’ve got the whole SharePoint in your hands" bereits erläutert. Ein paar Details sollten jedoch noch einmal angesprochen werden, die Euch den Umgang mit JS Link noch etwas erleichtern könnten.
Mehrere JavaScript Dateien gleichzeitig verwenden
Der erste interessante Fakt ist, dass mehrere JavaScript Dateien verwendet werden können. Der ein oder andere fragt sich dabei vielleicht, was das für einen Sinn macht. Das habe ich am Anfang auch getan, bis sich der erste Anwendungsfall von selbst ergab. Folgende beiden Anwendungsfälle sind meines Erachtens sinnvoll.
- Beim Einsatz komplexerer Funktionen, die eventuell in mehreren Klassen über mehrere Dateien verteilt werden.
- Unter Umständen können Standard SharePoint Funktionen nach dem Einsatz von JS Link nicht mehr funktionieren. Zum Beispiel die Einfärbung der überfälligen Aufgaben innerhalb einer Aufgabenliste. (Siehe Punkt 2)
Um zwei oder mehr Skripte gleichzeitig einzusetzen, muss der Separator "|" verwendet werden.
"~site/_catalogs/masterpage/script1.js|~site/_catalogs/masterpage/script2.js"
Standard SharePoint Funktionen zerstört durch JS Link
Wie unter Punkt 1 bereits erwähnt, ist es möglich Standard Funktionen von SharePoint, durch den Einsatz von JS Link, zu zerstören. Aufgefallen ist mir dieses Verhalten beim Anpassen der SharePoint Aufgabenliste. Nach Hinzufügen des JS Link Skriptes wurden überfällige Aufgaben nicht mehr rot markiert. Eine mögliche Lösung für dieses Problem, ist das zusätzliche Laden der Datei "hierarchytaskslist.js". Hierbei kommt der Separator "|" zum Einsatz. Nach Einbinden beider Skripte werden die Aufgaben wieder rot eingefärbt.
Mehr Informationen findet Ihr hier: Link
"~sitecollection/_layouts/15/hierarchytaskslist.js|~site/_catalogs/masterpage/script1.js"
JavaScript onDemand mittels JS Link laden
In manchen Situationen ist es von Nöten, Skripte erst bei Bedarf nachzuladen. Paradebeispiel dafür, sind Timing Probleme beim Laden der Seite. SharePoint bietet hierfür einen nützlichen Mechanismus um Skripte bei Bedarf dynamisch nachzuladen - Die Klasse SP.SOD (SharePoint Scripts on Demand).
SP.SOD wird von SharePoint selbst sehr häufig verwendet, um Seiten schon aufzubauen, bevor alle Skripte geladen wurden.
Skripte, welche per RegisterSod nachgeladen werden sollen, müssen durch das Tag "(d)" gekennzeichnet werden.
"~site/_catalogs/masterpage/script1.js(d)|~site/_catalogs/masterpage/script2.js(d)"
JS Link verhält sich merkwürdig in Kombination mit MDS
Die Minimal Download Strategy (MDS) wurde mit SharePoint 2013 zusammen eingeführt und soll für schnelleren Seitenaufbau, durch dynamisches Nachladen von Inhalten, sorgen.
JS Link und MDS sind nicht die besten Freunde. Wie Ihr damit am besten umgeht erfahrt Ihr in Teil 3 der Artikelserie.
Token welche durch JS Link ersetzt werden können
Folgende Token können verwendet werden, um sich die Angabe von Pfaden mit JS Link zu vereinfachen:
- ~site
- Referenz zum aktuellen Web (SharePoint Site)
- ~sitecollection
- Referenz zur aktuellen SiteCollection
- ~layouts
- Referenz zum aktuellen SharePoint Layouts Ordner der Webapplikation (/_layouts/15)
- ~sitecollectionlayouts
- Referenz zur relativen Url der Site Colelction + " /_layouts/15"
- ~sitelayouts
- Referenz zur relativen Url der Webseite + " /_layouts/15"
Im ersten Artikel der Serie wurde bereits ein alltagstauglicher Anwendungsfall gezeigt. Zusammen mit den Grundlagen aus diesem Artikel kann JS Link nun schon eingesetzt werden um eigene Anwendungsfälle abzudecken.
Noch mehr Beispiele für den alltäglichen Einsatz von JS Link und einige weitere Tipps und Tricks werden in den nächsten Artikeln der Serie gezeigt.
Vielen Dank für diese schöne Zusammenfassung! 🙂
Hi Torsten,
vielen Dank für den ausgezeichneten Beitrag, zu welchem ich noch eine weiterführende Frage habe:
In einer Ansicht einer SP2013 Taskliste habe ich genau das umgesetzt, was du hier vorgestellt hast. Die Ansicht enthält auch die Spalte "Completed", über die man die Tasks per Klick auf die Checkbox als erledigt markieren kann. Leider funktioneren meine Designänderungen nur genau bis zum ersten Klick auf eine dieser Checkboxen. Ein ähnliches Problem wird es auch sein, dass bei aktivierter Gruppierung (default: collapsed) verhindert, dass die Designänderungen angewandt werden.
Irgendeine Idee, wie das (auch noch) zum Laufen gebracht werden kann?
Vielen Dank!
Gruß,
Alex