EU Cookie Banner in Wicket

Tutorial zur Erstellung einer EU-konformen Warnung über die Verwendung von Cookies

Ein detaillierter Artikel über die EU "E-Privacy" Richtlinie von von http://www.sitepoint.com/europe-website-cookie-privacy-law(Craig Buckler auf sitepoint.com) veröffentlicht. Eine klare Empfehlung des Autors war es, alle Besucher einer Webseite über die Verwendung von Cookies (und generell über die Tracking-Methoden) zu informieren.

Eine einfache Möglichkeit dem EU-Gesetz zu entsprechen ist einen Banner mit den geforderten Information einzublenden. In diesem Tutorial erstellen wir mit Apache Wicket einen Banner, der vom User geschlossen werden kann und auf die Seite mit den Nutzungsbedingungen verweist.

Am Anfang erstellen wir eine Klasse EuCookieBanner , die von Wicket's Panel -Klasse erbt. Um die Sichtbarkeit des EuCookieBanner zu kontrollieren und sicherzustellen, dass der Banner nicht eingeblendet wird nachdem die Nutzungsbedingungen vom Nutzer akzeptiert wurden, verwenden wir ein Cookie und überschreiben die Methode onConfigure :

@Override
protected void onConfigure() {
  WebRequest webRequest = (WebRequest) RequestCycle.get().getRequest();
  if (webRequest.getCookie(COOKIE_NAME) != null) {
    setVisible(false);
  } 
  super.onConfigure();
}

In der Konstante COOKIE_NAME legen wir den Namen für den Cookie fest.

Um den Banner zu schliessen und damit auch die Nutzungsbedingungen zu akzeptieren muss der Besucher auf einen Button klicken. Dazu implementieren wir einen einfachen Click-Handler:

String jsClickHandler = 
    "javascript:document.getElementById('euCookiePanel').style.display='none';" +  
     "document.cookie='%s=1;expires=%s';return false;";

Der HTML-Code für den EuCookieBanner besteht aus einem div mit einer eindeutigen id euCookiePanel. Damit wird der Banner mit JavaScript über style.display='none' geschlossen.

Der Beispiel-Code enthält zwei Platzhalter (markiert mit %s ), die jeweils mit dem Ablaufdatum des Cookies und dem Namen des Cookies gesetzt werden. Das Ablaufdatum wird mit SimpleDateFormat("dd MMM yyyy kk:mm:ss z") im GMT-Format erzeugt.

Anschliessend kann das JavaScript über AttributeModifier.replace("onclick", …) an den Button gesetzt werden.

Dieses Beispiel mit Quellcode:

https://github.com/matrak/wicket-eu-cookie-panel