export Lizenzkonformität Open-Source Web-Design

Ein sauberes Cookie-Management — mit bootScore

Einen adäqua­ten Coo­kie-Dia­log ein­zu­blen­den ist das eine. Ihm eine ech­te Bedeu­tung zu geben, das ande­re. Denn die Abfra­ge allein reicht nicht. Wir müs­sen die Ant­wor­ten unse­rer Lese­rin­nen auch aus­wer­ten. Wir dür­fen aus­schließ­lich sol­che Coo­kies auf deren Rech­nern able­gen, die zu schrei­ben sie oder das Gesetz uns erlaubt haben. Ein Java­Script-Funk­ti­on, die das gewähr­leis­tet, imple­men­tiert die Seman­tik des Coo­kie-Dia­logs und eta­bliert ein sau­be­res Coo­kie-Manage­ment.

Das Plug­in bs-Coo­kie-Set­tings selbst lie­fert nur die Coo­kie-Abfra­ge. Wie man die akti­viert, hat­te ich bereits beschrie­ben. Die ent­spre­chen­de Seman­tik zu imple­men­tie­ren, sieht bootS­core als Auf­ga­be der jewei­li­gen Web-Desi­gne­rin. Hier eine Vari­an­te, die gern all­ge­mein wie­der­ver­wen­det wer­den darf:

[ de | en ]

Lösung

  • Lade die JS-Coo­kie-Biblio­thek von z.B. cdnpkg.com her­un­ter und lege sie (ent­packt) unter dem Namen js/js.cookie.min.js in Dei­nem Child-The­me-Ord­ner ab.
  • Erwei­te­re in Dei­ner Datei functions.php die Funk­ti­on bootscore_child_enqueue_styles() um den Ein­trag
wp_enqueue_script('js-cookie',get_stylesheet_directory_uri().'/js/js-cookie-min.js',false, '', true););
  • Erwei­te­re die Datei js/custom.js Dei­nes Child-The­mes so:
jQuery(function ($) {

  $(document).ready(function(){
    const bsCookieSettings='bs_cookie_settings';
    const analytics = 'analytics';
    const advertising = 'advertising';
    const analyticDemoCookie='bsAnalyticCookie';
    const advertisingDemoCookie='bsAdvertisingCookie';
    const necessaryDemoCookie='bsNecessaryCookie';
    const demoCookieValue='demo-cookie';

    // alert("adding cookie writing algorithm");
    const bsv=Cookies.get(bsCookieSettings);
    if (bsv) {
      const allowedCookies=JSON.parse(bsv);
      // alert(allowedCookies.level);

      if (allowedCookies.level.includes(analytics)) {
        // alert("writing analytic cookies");
        if (!(Cookies.get(analyticDemoCookie))) { 
          Cookies.set(analyticDemoCookie, demoCookieValue, { expires: 100, path: '/' });
        };
      };
      if (allowedCookies.level.includes(advertising)) { 
        // alert("writing advertising cookies"); 
        if (!(Cookies.get(advertisingDemoCookie))) { 
          Cookies.set(advertisingDemoCookie, demoCookieValue, { expires: 10, path: '/' });
        };
      };
      // alert("writing necessary cookies"); 
      if (!(Cookies.get(necessaryDemoCookie))) { 
        Cookies.set(necessaryDemoCookie, demoCookieValue, { expires: 14, path: '/' });
      };
    };
  });

  // Do your other stuff here

}); // jQuery End

Hintergrund

Coo­kies könn­ten wir mit nati­vem Java­script set­zen und eva­lu­ie­ren. Mit fer­ti­gen Biblio­the­ken geht es ein­fa­cher. Word­Press bringt jQuery bereits mit. Und bootS­core hat dies schon akti­viert und uns eine Mög­lich­keit geschaf­fen, eige­ne Java­Script-/JQuery-Funk­tio­nen in unser bootS­core-Child­the­me ein­zu­bau­en.

Frü­her gab es für das Coo­kie-Manage­ment ein ech­tes jQuery-coo­kie Plug­in. Das ist mitt­ler­wei­le archi­viert und in eine von jQuery unab­hän­gi­ge Java­script-Biblio­thek js-coo­kie über­führt wor­den. Um die zu nut­zen, laden wir Datei js-cookie-min.js her­un­ter und legen sie im Java­Script-Ord­ner unse­res Child-The­mes ab. Außer­dem erwei­tern wir die Funk­ti­on bootscore_child_enqueue_styles() in unser Datei functions.php so, dass die Biblio­thek js/js.cookie.min.js auch gela­den wird.

Den Algo­rith­mus zur Eva­lua­ti­on der Coo­kie-Set­tings imple­men­tie­ren wir danach in der Datei js/custom.js. Er wirkt so:

  • Zuerst ver­su­chen wir den vom bs-Coo­kie-Plug­in unter dem Namen bs_cookie_settings abge­leg­ten Coo­kie zu lesen.
  • Wenn es ihn noch nicht gibt, hat unse­re Lese­rin der Nut­zung von Coo­kies noch nicht zuge­stimmt. Also dür­fen wir noch kei­ne schreiben.((Übrigens auch die tech­nisch not­wen­di­gen nicht. Die dür­fen wir zwar von geset­zes­we­gen able­gen, wir müs­sen unse­re Lese­rin aber zuvor infor­mie­ren, dass wir das tun. Und dass wir das getan haben, kön­nen wir wie­der­um anhand des Coo­kies bs_cookie_settings ‘bele­gen’. ))
  • Sobald unse­re Lese­rin den Coo­kie-Dia­log in wel­chem Umfang auch immer ‘bestä­tigt’ hat, legt das bs-Coo­kie-Plug­in den Coo­kie bs_cookie_settings ab. Sein Wert ent­hält ein JSON-Objekt:
{  "level": 
    [   "necessary",
        "analytics",
        "advertising"
    ],
    "revision":0,
    "data":null,
    "rfc_cookie":false
}
  • Das müs­sen wir also erst par­sen las­sen, bevor wir — auf Java­Script-Ebe­ne — auf die Lis­te der erlaub­ten Coo­kie-Grup­pen via allowedCookies.level zugrei­fen und über die Metho­de includes eines Lis­ten­ob­jek­tes abfra­gen kön­nen, wel­che der Coo­kie-Grup­pen neces­sa­ry, ana­ly­tics und /oder adver­ti­sing uns unse­re Lese­rin zu schrei­ben erlaubt hat.
  • Und zu jeder zuge­las­sen Grup­pen schrei­ben wir dann die ent­spre­chen­den Cookies.((wobei wir uns bei den tech­nisch not­wen­di­gen Coo­kies auf die gesetz­li­che Erlaub­nis beru­fen.))

Und ein letz­ter Tipp noch: Java­Script erzeugt Sei­ten dyna­misch. Gecacht wer­den die Ergeb­nis­se. Des­halb müs­sen wir gelengt­lich den Cache löschen, um die Ergeb­nis­se unse­rer Ver­än­de­run­gen sehen zu kön­nen.


Und in welchem Zusammenhang …

… steht das mit unse­rer Migra­ti­on zu bootS­core? Nun, zuletzt muss die Web-Desi­gne­rin im Rah­men ihrer Anpas­sun­gen auch recht­li­che Vor­ga­ben beach­ten, sei­en es die der DSGVO, die für eine Coo­kie-Zustim­mung und deren Beach­tung oder die zur Erstel­lun­gen einer Daten­schutz­er­klä­rung. In die­sen Kon­text gehö­ren dann auch die Fra­gen nach dem Zweck eines Bild­ver­zeich­nis­ses, nach einem adäqua­ten Impres­sum oder nach einer hin­rei­chen­den Open-Source-Lizenz­er­fül­lung. Dies ins rech­te Licht zu rücken, will auch die­ser Post unter­stüt­zen.


Im Übri­gen: Män­ner sind mit­ge­meint.

To top