single.php
< Beitrag von Dirk Theisen

Pop-up für Disclaimer, Nutzungsbedingungen oder AGBs für SharePoint

In vielen Kundenprojekten treffen wir auf die Anforderung (meist aus den Bereichen Recht oder Datenschutz), die Benutzer auf unserem SharePoint-Portal mit einer kurzen Meldung zu begrüßen, in der sie die AGBs, Nutzungsbedingungen oder auch einen Haftungsausschluss bestätigen sollen. Dieses macht natürlich insbesondere bei Extranet-Szenarien, wie beispielsweise einem Kunden-Download-Portal, Sinn, findet jedoch häufig auch bei internen Systemen Anwendung.

Auch wenn sich die Feinheiten abhängig vom konkreten Anwendungsfall unterscheiden, so kann das Prinzip auf viele Anwendungsfälle angewandt werden. Im Folgenden werde ich die Umsetzung eines Disclaimer-Pop-ups mit automatischem Logging der Benutzerbestätigungen inklusive Gültigkeitsstatus vorstellen.

Disclaimer-Pop-up-Umsetzung

Zunächst brauchen wir dazu eine SharePoint-Seite, auf der wir den Inhalt unserer Meldung platzieren können. Ich erstelle in diesem Falle eine Webpart-Seite in der Website-Seiten (SitePages)-Bibliothek mit dem Namen „Disclaimer.aspx“. Hierdurch können die Inhalte leicht in der Benutzeroberfläche eingepflegt und angepasst werden. Nachdem der Haftungsausschluss auf der Seite mit Hilfe eines Inhalts-Editor-Webparts platziert wird, betten wir auf dieser Seite folgenden HTML-Code ein:

Dieses Skript blendet zunächst die (im Pop-up-Fenster) unnötigen Seitenelemente wie den Ribbon aus und reduziert Seitenabstände. Weiterhin fügt es einen „Akzeptieren“-Button für die Benutzerinteraktion hinzu, durch welchen das modale Fenster geschlossen und ein Rückgabewert an den Aufrufenden übergeben wird.

Hier empfiehlt es sich (wie häufig), nicht das Skript-Editor-Webpart zu verwenden, sondern o.g. Code in einer HTML-Datei auf dem SharePoint abzulegen und mittels des Inhalts-Editor-Webparts einzubetten, um bei der Bearbeitung (insb. in Verbindung mit Javascripts und CSS-Anpassungen) flexibel zu sein und die Seite nicht jedes Mal bearbeiten und speichern zu müssen.

Disclaimer Seite

Steuerung des Disclaimer-Pop-up-Aufrufs mittels Log-Liste

Nun zum spannenden Teil – dem Aufruf des Disclaimer-Pop-ups:

Da unser Disclaimer nicht bei jedem Seitenaufruf bestätigt werden soll, sondern nur einmal und anschließend für einen gewissen Zeitraum nicht mehr erscheinen soll, verwenden wir eine Log-Liste, in der wir die Bestätigungen der Disclaimer-Meldung durch den Benutzer wegschreiben. Dazu legen wir eine benutzerdefinierte Liste mit einer zusätzlichen Spalte „Status“ vom Typ „Auswahl“ mit den beiden Optionen „Gültig“ und „Abgelaufen“ an, wo bei „Gültig“ als Standardwert hinterlegt wird. Die Spalte „Erstellt von“ benennen wir in „Benutzer“ um. Zusätzlich wird die Titelspalte im Formular (Listeninhaltstyp) ausgeblendet und die Ansicht auf die Spalten „Benutzer“, „Status“ und „Erstellt“ eingeschränkt.

Weiterhin muss natürlich auch die Berechtigung auf diese Liste angepasst werden. Dazu konfigurieren wir in den erweiterten Einstellungen der Liste den lesenden und schreibenden Zugriff so, dass jeder Benutzer nur seine eigenen Einträge sehen kann. Weiterhin benötigen wir eine Berechtigungsstufe, welche nur das Hinzufügen von Einträgen und nicht das Bearbeiten oder Löschen erlaubt. Diese wenden wir dann für alle Benutzer unseres Portals auf der Log-Liste an.

Im nächsten Schritt benötigen wir nun unser Haupt-Skript, welches zunächst in der soeben erstellten Liste nachprüft, ob der aktuelle Nutzer bereits den Disclaimer bestätigt hat – es also einen Listen-Eintrag mit dem Status „Gültig“ von ihm gibt. Ist dieser nicht vorhanden, so wird ein modales Fenster (Pop-up) mit unserem oben erstellten Disclaimer angezeigt. Dieses muss der Benutzer nun bestätigen, um weiter im Portal navigieren zu können.

Zwei Varianten für die Platzierung des Disclaimer-Pop-ups

Hier gilt es zunächst zu entscheiden, wo das Pop-up erscheinen soll:

(a) auf einer oder mehreren bestimmten SharePoint-Seiten, wie z. B. der Startseite unseres Portals

(b) auf allen SharePoint-Seiten innerhalb eines SharePoint-Portals

Das Prinzip unterscheidet sich zwischen beiden Varianten nicht, in Variante (a) wird das Skript auf einer/mehreren ASPX-Seite(n) (z. B. Wikiseite) platziert, bei Variante (b) in der Masterpage eingebunden. Natürlich kann man auch in Variante (b) mittels Überprüfung der aktuellen URL den Aufruf auf einzelne Seiten einschränken, dies möchte ich hier allerdings außen vor lassen.

Im Folgenden betrachte ich die Variante (a). Dazu platzieren wir nun folgendes Skript auf der Startseite unseres Portals:

In diesem Skript werden zunächst in der Liste „Disclaimer-Log“ die gültigen Einträge für den aktuellen Benutzer abgerufen. Wenn diese Abfrage keine Elemente erhält, wird die oben erstellte Disclaimer.aspx-Seite in einem modalen Fenster geladen und angezeigt. Bestätigt der Benutzer schließlich die Meldung mit Klick auf den „Akzeptieren“-Button, so wird ein Eintrag in der Log-Liste erstellt, so dass bei der nächsten Prüfung das Pop-up nicht mehr erscheint.

Diclaimer Popup

Mit Hilfe der Log-Liste und der Spalte „Status“ hat man nun die Möglichkeit, die Disclaimer-Meldung nach bestimmten Ereignissen, wie geänderten Inhalten oder nach einem gewissen Intervall, erneut den Benutzern anzuzeigen, indem man (beispielsweise über ein Powershell-Skript) alle gültigen Einträge auf „Abgelaufen“ setzt. Dies wäre prinzipiell auch durch Löschen der Einträge möglich, allerdings behält man somit die Historie, wer zu welchem Zeitpunkt eine Meldung bestätigt hat, was bei vielen Kunden oder Szenarien häufig gewünscht ist.

Folgen
X

Folgen

E-mail : *
Kategorie: SharePoint | Schlagwörter: , , , , | Kommentare: 4

Beitrag kommentieren

CAPTCHA * Time limit is exhausted. Please reload CAPTCHA.

Kommentare

  • 24.01.2016 von Fahad Haseeb Khan

    Hi Dirk Theisen
    This is the solution i was looking. Thanks Dirk,
    Can you help me in one thing. when i placed the solution on the site. user can accept the disclaimer popup in Edit Page mode. When i published the page and disclaimer popup is appear. when i try to accept(Button) for disclaimer popup nothing happened. I search it out sharepoint dialogbox is appear on edit mode of the page.
    How can i figure it out this small problem?

    • 28.01.2016 von Dirk Theisen

      Hi Fahad,

      what kind of page are you using (wiki-page, publishing page) ? Do you get any javascript errors in Developer Mode (IE F12)?

      Best regards, Dirk

  • 02.02.2016 von Fahad Haseeb Khan

    Actually i am using publishing page. There is no error coming of javascript. The button code is only working on edit mode. when i checkout the page. i can able to save the value(User) inside the list.but on publishing page i am unable to save. even i press many time on the button but still no luck.

    • 24.02.2016 von Dirk Theisen

      Hi Fahad,
      I found the bug... sp.js was not loaded in publishing pages. Therefore, the accept button's function ("SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK);") didn't work. I fixed it in the code above.
      BR Dirk