UNPKG

scrivito-another-cookie-banner

Version:

This cookie banner can be used for multiple subdomains. It saves cookie consent as domain wide cookie.

175 lines (151 loc) 4.64 kB
# Scrivito another cookie banner This cookie banner can be used for multiple subdomains. It saves cookie consent as domain wide cookie. ## Configuration Banner can be configurated via JSON structure. Example: ``` { "name": "_bima_cookie_consent", "technicalNames": { "gmap": [], "authentication": ["_doorkeeper_session", "rack.session"], "cookie_consent": ["_cookie_consent"] }, "blocks": [ { "name": "functional", "preset": "declined", "editable": true, "cookies": [ "gmap" ] }, { "name": "essential", "preset": "accepted", "editable": false, "cookies": [ "authentication", "cookie_consent" ] } ] } ``` ## Translations I18next is used for localization. There are some standard localization which can be overwritten by configuration. Some blocks in translation files depends on cookies configurations. `CookieDeclinedPlaceholder`: contains translations for Gatekeeper-Component. To define diffrent localization for different cookies you have to define new block under `CookieDeclinedPlaceholder` which have same name like your cookie. e.g for cookie named `gmap` you should create block: ``` "gmap": { "iconClass": "fas fa-map-marked-alt", "title": "Cookies abgelehnt", "text": "Sie haben der Verwendung von Cookies nicht zugestimmt. Solange Sie die Zustimmung nicht gegeben haben, wird dieses Element nicht dargestellt." } ``` Next dynamic blocks are translations for expanded banner view. Under the key `cookieDefinitions` you have to define blocks for each cookie-group. Inside of such groups you alse have to define descriptions for every cookie. ``` "cookieDefinitions": { "functional": { "buttons": { "all": { "title": "Alle Cookies" } }, "title": "Funktionell", "description": "Mit dieses Cookies werden Ihnen auf der Webseite zusätzliche Funktionen bereitgestellt.", "cookies": { "gmap": { "title": "Google Maps", "description": { "title": "Google", "text": "Dieses Cookie wird vom Google ('google.com') gesetzt." } }, "vimeo": { "title": "Vimeo Video", "description": { "title": "Vimeo", "text": "Dieses Cookie wird vom Video-Host-Service 'vimeo.com' gesetzt." } } } }, "essential": { "title": "Essentiell", "description": "Diese Cookies werden für die Grundfunktionen der Website benötigt.", "cookies": { "authentication": { "title": "Authentifizierung", "description": { "title": "Authentifizierung", "text": "In diesem Cookie wird die Information über den aktuell an der Seite angemeldenten Benutzer gespeichert." } }, "cookie_consent": { "title": "Cookie-Zustimmung", "description": { "title": "Cookie-Zustimmung", "text": "In diesem Cookie wird Ihre Zustimmung über die Verwendung der Cookies gepeichert." } } } } }, ``` ## Usage in React.js ### User Cookie Context Provider ``` import { CookieConsentProvider, CookieBanner } from "scrivito-cookie-banner"; import cookieConfig from "./config/cookieBannerConfig.json"; import cookieBannerTranslationsDe from "./config/locales/cookieBanner/de.json"; import logoUrl "./assets/logoUrl.json .... const cookieBannerTranslations = {de: cookieBannerTranslationsDe}; ... <CookieConsentProvider cookieConfig={cookieConfig} language="de" translations={cookieBannerTranslations} logoUrl={logoUrl} > .... <CookieBanner hideOnLoad={Scrivito.isEditorLoggedIn()} /> </CookieConsentProvider ... </CookiesProvider> ``` #### Open Cookie Banner from link ``` import { useCookieConsent } from "scrivito-cookie-banner"; function Footer() { const { setBannerVisibility } = useCookieConsent(); return ( <a href="#bottom" onClick={() => setBannerVisibility(true)}> Open cookie settings </a> ) } export default Footer; ``` #### Use Gatekeeper component ``` import { CookieGatekeeper } from "scrivito-cookie-banner"; function MapComponent() { return ( <CookieGatekeeper cookieName="gmap"> <GoogleMapComponent /> </CookieGatekeeper> ) } ``` As long as user don't accepted usage of Cookie named gmap (s. configuration) children component wont be rendered. ### Debug Mode Set debug mode in `window.localStorage`. ``` window.localStorage.setItem("ScrivitoCookieBanner.debug", "true") ```