diff --git a/README.md b/README.md index a81ba9f..4a91692 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/SASAICAGENCY) +[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/SASAICAGENCY) [![](https://data.jsdelivr.com/v1/package/gh/AmauriC/tarteaucitron.js/badge)](https://www.jsdelivr.com/package/gh/AmauriC/tarteaucitron.js) + tarteaucitron.js @@ -19,92 +20,6 @@ Bonus: - Load service when user click on Allow (without reload of the page), - Incorporate a fallback system (display a link instead of social button and a static banner instead of advertising). -## Supported services -* Advertising network - * Ad Up Technology (ads) - * Ad Up Technology (conversion) - * Ad Up Technology (retargeting) - * Amazon - * Clicmanager - * Criteo - * FERank (pub) - * Google Adsense - * Google Adsense Search (form) - * Google Adsense Search (result) - * Google Adwords (conversion) - * Google Adwords (remarketing) - * Pubdirecte - * Twenga - * vShop - -* APIs - * Google jsapi - * Google Maps - * Google Tag Manager - * Timeline JS - * Typekit (adobe) - -* Audience measurement - * Alexa - * Clicky - * Crazyegg - * FERank - * Get+ - * Google Analytics (ga.js) - * Google Analytics (universal) - * StatCounter - * VisualRevenue - * Xiti - -* Comment - * Disqus - * Facebook (commentaire) - -* Marketing Automation & CRM - * Mautic - * Webmecanik Automation - * Koban - -* Social network - * AddThis - * AddToAny (feed) - * AddToAny (share) - * eKomi - * Facebook - * Facebook (like box) - * Google+ - * Google+ (badge) - * Linkedin - * Pinterest - * Shareaholic - * ShareThis - * Twitter - * Twitter (cards) - * Twitter (timelines) - -* Support - * UserVoice - * Zopim - -* Video - * Calameo - * Dailymotion - * Prezi - * SlideShare - * Vimeo - * YouTube - * Issuu - - -## Visitors outside the EU -In PHP for example, you can bypass all the script by setting this var `tarteaucitron.user.bypass = true;` if the visitor is not in the EU. - -## Tested on -- IE 6+ -- FF 3+ -- Safari 4+ -- Chrome 14+ -- Opera 10+ # Installation guide [Visit opt-out.ferank.eu](https://opt-out.ferank.eu/) @@ -117,15 +32,24 @@ In PHP for example, you can bypass all the script by setting this var `tarteauci ``` diff --git a/css/tarteaucitron.css b/css/tarteaucitron.css index 3b0951d..854c637 100644 --- a/css/tarteaucitron.css +++ b/css/tarteaucitron.css @@ -1,3 +1,75 @@ +.modal-open{ + overflow: hidden; + height: 100%; +} + +#contentWrapper {display:unset;} + +/*** +* Reset CSS +*/ +#tarteaucitronRoot div, #tarteaucitronRoot span, #tarteaucitronRoot applet, #tarteaucitronRoot object, #tarteaucitronRoot iframe, #tarteaucitronRoot h1, #tarteaucitronRoot h2, #tarteaucitronRoot h3, #tarteaucitronRoot h4, #tarteaucitronRoot h5, #tarteaucitronRoot h6, #tarteaucitronRoot p, #tarteaucitronRoot blockquote, #tarteaucitronRoot pre, #tarteaucitronRoot a, #tarteaucitronRoot abbr, #tarteaucitronRoot acronym, #tarteaucitronRoot address, #tarteaucitronRoot big, #tarteaucitronRoot cite, #tarteaucitronRoot code, #tarteaucitronRoot del, #tarteaucitronRoot dfn, #tarteaucitronRoot em, #tarteaucitronRoot img, #tarteaucitronRoot ins, #tarteaucitronRoot kbd, #tarteaucitronRoot q, #tarteaucitronRoot s, #tarteaucitronRoot samp, #tarteaucitronRoot small, #tarteaucitronRoot strike, #tarteaucitronRoot strong, #tarteaucitronRoot sub, #tarteaucitronRoot sup, #tarteaucitronRoot tt, #tarteaucitronRoot var, #tarteaucitronRoot b, #tarteaucitronRoot u, #tarteaucitronRoot i, #tarteaucitronRoot center, #tarteaucitronRoot dl, #tarteaucitronRoot dt, #tarteaucitronRoot dd, #tarteaucitronRoot ol, #tarteaucitronRoot ul, #tarteaucitronRoot li, #tarteaucitronRoot fieldset, #tarteaucitronRoot form, #tarteaucitronRoot label, #tarteaucitronRoot legend, #tarteaucitronRoot table, #tarteaucitronRoot caption, #tarteaucitronRoot tbody, #tarteaucitronRoot tfoot, #tarteaucitronRoot thead, #tarteaucitronRoot tr, #tarteaucitronRoot th, #tarteaucitronRoot td,article, #tarteaucitronRoot aside, #tarteaucitronRoot canvas, #tarteaucitronRoot details, #tarteaucitronRoot embed, #tarteaucitronRoot figure, #tarteaucitronRoot figcaption, #tarteaucitronRoot footer, #tarteaucitronRoot header, #tarteaucitronRoot hgroup, #tarteaucitronRoot menu, #tarteaucitronRoot nav, #tarteaucitronRoot output, #tarteaucitronRoot ruby, #tarteaucitronRoot section, #tarteaucitronRoot summary, #tarteaucitronRoot time, #tarteaucitronRoot mark, #tarteaucitronRoot audio, #tarteaucitronRoot video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + background: initial; + text-align: initial; + text-shadow: initial; +} +/* HTML5 display-role reset for older browsers */ +#tarteaucitronRoot article, #tarteaucitronRoot aside, #tarteaucitronRoot details, #tarteaucitronRoot figcaption, #tarteaucitronRoot figure, #tarteaucitronRoot footer, #tarteaucitronRoot header, #tarteaucitronRoot hgroup, #tarteaucitronRoot menu, #tarteaucitronRoot nav, #tarteaucitronRoot section { + display: block; +} +#tarteaucitronRoot ol, #tarteaucitronRoot ul { + list-style: none; +} +#tarteaucitronRoot blockquote, #tarteaucitronRoot q { + quotes: none; +} +#tarteaucitronRoot blockquote:before, #tarteaucitronRoot blockquote:after, #tarteaucitronRoot q:before, #tarteaucitronRoot q:after { + content: ''; + content: none; +} +#tarteaucitronRoot table { + border-collapse: collapse; + border-spacing: 0; +} + +#tarteaucitronRoot a:focus, #tarteaucitronRoot button:focus { + /*outline: 2px solid #cb3333;*/ +} + +/*** + * Better scroll management + */ +div#tarteaucitronMainLineOffset { + margin-top: 0!important; +} + +div#tarteaucitronServices { + margin-top: 21px!important; +} + +#tarteaucitronServices::-webkit-scrollbar { + width: 5px; +} + +#tarteaucitronServices::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 0 rgba(0,0,0,0); +} + +#tarteaucitronServices::-webkit-scrollbar-thumb { + background-color: #ddd; + outline: 0px solid slategrey; +} + +div#tarteaucitronServices { + box-shadow: 0 0 35px #575757; +} + /*** * Responsive layout for the control panel */ @@ -37,6 +109,18 @@ #tarteaucitron #tarteaucitronServices .tarteaucitronTitle { text-align: left !important; } + + .tarteaucitronName h2 { + max-width: 80%; + } + + #tarteaucitron #tarteaucitronServices .tarteaucitronLine .tarteaucitronAsk { + text-align: center !important; + } + + #tarteaucitron #tarteaucitronServices .tarteaucitronLine .tarteaucitronAsk button { + margin-bottom: 5px; + } } @media screen and (min-width:768px) and (max-width:991px) { @@ -56,6 +140,16 @@ zoom: 1; } +#tarteaucitronRoot div#tarteaucitron { + left: 0; + right: 0; + margin: auto; +} + +#tarteaucitronRoot button#tarteaucitronBack { + background: #eee; +} + #tarteaucitron .clear { clear: both; } @@ -67,15 +161,30 @@ text-decoration: none; } +#tarteaucitronRoot button { + background: transparent; + border: 0; +} + +#tarteaucitronAlertBig strong, #tarteaucitronAlertSmall strong, #tarteaucitronAlertBig a, #tarteaucitronAlertSmall a { color: #fff; } -#tarteaucitron b { +#tarteaucitron strong { font-size: 22px; font-weight: 500; } +#tarteaucitron ul { + padding: 0; +} + +.cookie-list { + list-style: none; + padding: 0; + margin: 0; +} /*** * Root div added just before */ @@ -96,6 +205,23 @@ vertical-align: initial; } +#tarteaucitronRoot h1 { + font-size: 1.5em; + text-align: center; + color: #fff; + margin: 15px 0 28px; +} + +#tarteaucitronRoot h2 { + display: inline-block; + margin: 12px 0 0 10px; + color: #fff; +} + +h2#tarteaucitronCookiesNumberBis { + margin-left: 0; +} + /*** * Control panel */ @@ -153,9 +279,13 @@ width: 80%; } -#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList .tarteaucitronHidden, +.tarteaucitronSelfLink, #tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList .tarteaucitronHidden, #tarteaucitron #tarteaucitronServices .tarteaucitronHidden { background: rgba(51, 51, 51, 0.07); +}a.tarteaucitronSelfLink { + text-align: center!important; + display: block; + padding: 7px!important; } #tarteaucitron #tarteaucitronServices .tarteaucitronHidden { @@ -163,11 +293,15 @@ position: relative; } -#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList .tarteaucitronTitle, -#tarteaucitron #tarteaucitronServices .tarteaucitronTitle, +#tarteaucitronCookiesList h3.tarteaucitronTitle { + width: 100%; + box-sizing: border-box; +} + +#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList .tarteaucitronTitle button, +#tarteaucitron #tarteaucitronServices .tarteaucitronTitle button, #tarteaucitron #tarteaucitronInfo, #tarteaucitron #tarteaucitronServices .tarteaucitronDetails { - background: #333; color: #fff; display: inline-block; font-size: 14px; @@ -199,6 +333,7 @@ #tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList .tarteaucitronTitle { padding: 5px 10px; + margin: 0; } #tarteaucitron #tarteaucitronInfo, @@ -250,7 +385,7 @@ margin-top: 2px; } -#tarteaucitron #tarteaucitronServices .tarteaucitronMainLine .tarteaucitronName b { +#tarteaucitron #tarteaucitronServices .tarteaucitronMainLine .tarteaucitronName button { color: #fff; } @@ -289,6 +424,7 @@ text-align: center; text-decoration: none; width: auto; + border: 0; } #tarteaucitron #tarteaucitronServices .tarteaucitronLine .tarteaucitronName .tarteaucitronListCookies { @@ -296,6 +432,16 @@ font-size: 12px; } +#tarteaucitron h3 { + font-size: 18px; +} + +#tarteaucitron #tarteaucitronMainLineOffset .tarteaucitronName { + width: auto!important; + margin-left: 0!important; + font-size: 14px; +} + /*** * Big alert */ @@ -307,7 +453,7 @@ bottom: 0; } -#tarteaucitronAlertBig { +#tarteaucitronRoot #tarteaucitronAlertBig { background: #333; color: #fff; display: none; @@ -316,22 +462,29 @@ padding: 5px 5%; position: fixed; text-align: center; - width: 90%; box-sizing: content-box; z-index: 2147483645; + text-align: center; + padding: 10px; + margin: auto; + width: 100%; } #tarteaucitronAlertBig #tarteaucitronDisclaimerAlert, -#tarteaucitronAlertBig #tarteaucitronDisclaimerAlert b { +#tarteaucitronAlertBig #tarteaucitronDisclaimerAlert strong { font: 15px verdana; color: #fff; } -#tarteaucitronAlertBig #tarteaucitronDisclaimerAlert b { +#tarteaucitronAlertBig #tarteaucitronDisclaimerAlert strong { font-weight: 700; } -#tarteaucitronAlertBig #tarteaucitronCloseAlert, #tarteaucitronAlertBig #tarteaucitronPersonalize { +#tarteaucitronAlertBig #tarteaucitronPrivacyUrl { + cursor: pointer; +} + +#tarteaucitronAlertBig #tarteaucitronCloseAlert, #tarteaucitronAlertBig #tarteaucitronPersonalize, #tarteaucitron #tarteaucitronPrivacyUrl { background: #008300; color: #fff; cursor: pointer; @@ -342,7 +495,7 @@ margin-left: 7px; } -#tarteaucitronAlertBig #tarteaucitronCloseAlert { +#tarteaucitronAlertBig #tarteaucitronCloseAlert, #tarteaucitron #tarteaucitronPrivacyUrl { background: #fff; color: #333; font-size: 13px; @@ -352,7 +505,7 @@ } #tarteaucitronPercentage { - background: #0A0; + background: #0A0!important; box-shadow: 0 0 2px #fff, 0 1px 2px #555; height: 5px; left: 0; @@ -461,7 +614,7 @@ text-align: left; } -#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList b { +#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList strong { color: #333; } @@ -472,7 +625,7 @@ text-align: left; } -#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesTitle b { +#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesTitle strong { color: #fff; font-size: 16px; } @@ -497,7 +650,7 @@ width: 50%; } -#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList .tarteaucitronCookiesListMain .tarteaucitronCookiesListLeft a b { +#tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList .tarteaucitronCookiesListMain .tarteaucitronCookiesListLeft a strong { color: darkred; } @@ -531,7 +684,7 @@ vertical-align: middle; } -.tac_activate .tac_float b { +.tac_activate .tac_float strong { color: #fff; } @@ -551,3 +704,41 @@ div.amazon_product { height:240px; width:120px; } +.tarteaucitronIsAllowed .tarteaucitronDeny { + opacity: 0.4!important; +}.tarteaucitronIsDenied .tarteaucitronAllow { + opacity: 0.4!important; +}.tarteaucitronIsAllowed .tarteaucitronAllow { + opacity: 1!important; +}.tarteaucitronIsDenied .tarteaucitronDeny { + opacity: 1!important; +} +.tarteaucitronLine .tarteaucitronAllow, .tarteaucitronLine .tarteaucitronAllow { + opacity: 0.4; +} + +div#tarteaucitronInfo { + display: block!important; + position: initial!important; + text-align: center!important; + max-width: 80%!important; + padding: 15px 0!important; + margin: -10px auto 40px!important; + font-size: 1em!important; + border-bottom: 1px solid; + border-top: 1px solid; + border-color: #555; +} + +a.tarteaucitronSelfLink { + position: absolute; + left: 0; + right: 0; + padding-top: 13px!important; + display: block; + text-shadow: 0 0 14px white; + text-transform: uppercase; +}.tarteaucitronMainLine h2 { + font-size: 1.2em!important; + margin-top: 4px!important; +} diff --git a/lang/tarteaucitron.cs.js b/lang/tarteaucitron.cs.js index 057d71f..1120254 100644 --- a/lang/tarteaucitron.cs.js +++ b/lang/tarteaucitron.cs.js @@ -13,6 +13,8 @@ tarteaucitron.lang = { "personalize": "Přizpůsobit", "acceptAll": "OK, přijmout vše", "close": "Zavřít", + + "privacyUrl": "Zásady ochrany osobních údajů", "all": "Nastavení všech služeb", @@ -27,6 +29,14 @@ tarteaucitron.lang = { "more": "Dozvědět se více", "source": "Zobrazit oficiální stránku", "credit": "Správce cookies od tarteaucitron.js", + + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", "fallback": "je vypnutý.", diff --git a/lang/tarteaucitron.de.js b/lang/tarteaucitron.de.js index 23cdc5f..c39a1bd 100644 --- a/lang/tarteaucitron.de.js +++ b/lang/tarteaucitron.de.js @@ -13,6 +13,8 @@ tarteaucitron.lang = { "personalize": "Personalisieren", "acceptAll": "OK, akzeptiere alles", "close": "Beenden", + + "privacyUrl": "Datenschutz-Bestimmungen", "all": "Präferenz für alle Dienste", @@ -27,6 +29,14 @@ tarteaucitron.lang = { "more": "Weiter lesen", "source": "Zur offiziellen Webseite", "credit": "Cookies manager von tarteaucitron.js", + + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", "fallback": "ist deaktiviert.", diff --git a/lang/tarteaucitron.en.js b/lang/tarteaucitron.en.js index 90c8ebb..0d4bc0b 100644 --- a/lang/tarteaucitron.en.js +++ b/lang/tarteaucitron.en.js @@ -13,6 +13,8 @@ tarteaucitron.lang = { "personalize": "Personalize", "acceptAll": "OK, accept all", "close": "Close", + + "privacyUrl": "Privacy policy", "all": "Preference for all services", @@ -27,6 +29,14 @@ tarteaucitron.lang = { "more": "Read more", "source": "View the official website", "credit": "Cookies manager by tarteaucitron.js", + + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", "fallback": "is disabled.", diff --git a/lang/tarteaucitron.es.js b/lang/tarteaucitron.es.js index 512d805..402b0b5 100644 --- a/lang/tarteaucitron.es.js +++ b/lang/tarteaucitron.es.js @@ -1,32 +1,42 @@ /*global tarteaucitron */ tarteaucitron.lang = { - "adblock": "Hola! Este sitio web es transparente y le da la opción de activar los servicios de terceros.", - "adblock_call": "Por favor deshabilite su AdBlocker para empezar a personalizar los servicios.", + "adblock": "¡Hola! Este sitio web es transparente y te da la opción de activar los servicios de terceros.", + "adblock_call": "Por favor deshabilita tu AdBlocker para empezar a personalizar los servicios.", "reload": "Actualizar esta página", - "alertBigScroll": "Al continuar para desplazarse,", + "alertBigScroll": "Al continuar desplazándote,", "alertBigClick": "Si continuas navegando por este sitio web,", - "alertBig": "estar permitiendo servicios terceros", + "alertBig": "estás permitiendo servicios terceros", - "alertBigPrivacy": "Este sitio web usa cookies y te permite controlar lo que deseas activar", + "alertBigPrivacy": "Este sitio web usa cookies y te permite controlar las que deseas activar", "alertSmall": "Gestionar servicios", "personalize": "Personalizar", "acceptAll": "OK, aceptar todas", "close": "Cerrar", + + "privacyUrl": "Política de privacidad", "all": "Ajustes para todos los servicios", "info": "Protegiendo tu privacidad", - "disclaimer": "Aceptando estos servicios terceros, estas aceptando sus cookies y el uso de tecnologías de rastreo necesarias para su correcto funcionamiento.", + "disclaimer": "Aceptando estos servicios de terceros, estás aceptando sus cookies y el uso de tecnologías de rastreo necesarias para su correcto funcionamiento.", "allow": "Permitir", "deny": "Denegar", - "noCookie": "Este servicio no usa cookie.", + "noCookie": "Este servicio no usa cookies.", "useCookie": "Este servicio puede instalar", "useCookieCurrent": "Este servicio ha instalado", "useNoCookie": "Este servicio no ha instalado ninguna cookie.", "more": "Leer más", "source": "Ver sitio web oficial", "credit": "Gestor de cookies realizada por tarteaucitron.js", + + "toggleInfoBox": "Mostrar/ocultar información sobre almacenamiento de cookies", + "title": "Panel de gestión de cookies", + "cookieDetail": "Detalles de las cookies para", + "ourSite": "en nuestra web", + "newWindow": "(ventana nueva)", + "allowAll": "Permitir todas las cookies", + "denyAll": "Denegar todas las cookies", "fallback": "está deshabilitado.", @@ -35,8 +45,8 @@ tarteaucitron.lang = { "details": "Las redes publicitarias pueden generar ingresos mediante la venta de espacios publicitarios en el sitio." }, "analytic": { - "title": "Mediciión de audiencia", - "details": "Los servicios de medición de audiencia se usan para generar asistencia estadísticas útiles para mejorar el sitio." + "title": "Medición de audiencia", + "details": "Los servicios de medición de audiencia se usan para generar estadísticas útiles para mejorar el sitio." }, "social": { "title": "Redes sociales", diff --git a/lang/tarteaucitron.fr.js b/lang/tarteaucitron.fr.js index 6512403..882e312 100644 --- a/lang/tarteaucitron.fr.js +++ b/lang/tarteaucitron.fr.js @@ -14,6 +14,8 @@ tarteaucitron.lang = { "personalize": "Personnaliser", "close": "Fermer", + "privacyUrl": "Politique de confidentialité", + "all": "Préférence pour tous les services", "info": "Protection de votre vie privée", @@ -27,6 +29,14 @@ tarteaucitron.lang = { "more": "En savoir plus", "source": "Voir le site officiel", "credit": "Gestion des cookies par tarteaucitron.js", + + "toggleInfoBox": "Afficher/masquer les informations sur le stockage des cookies", + "title": "Panneau de gestion des cookies", + "cookieDetail": "Détail des cookies", + "ourSite": "sur notre site", + "newWindow": "(nouvelle fenêtre)", + "allowAll": "Autoriser tous les cookies", + "denyAll": "Interdire tous les cookies", "fallback": "est désactivé.", diff --git a/lang/tarteaucitron.it.js b/lang/tarteaucitron.it.js index 8b2faf1..e369860 100644 --- a/lang/tarteaucitron.it.js +++ b/lang/tarteaucitron.it.js @@ -13,6 +13,8 @@ tarteaucitron.lang = { "acceptAll": "Ok, accetta tutto", "personalize": "Personalizza", "close": "Chiudi", + + "privacyUrl": "Politica sulla riservatezza", "all": "Preferenze per tutti i servizi", @@ -27,6 +29,14 @@ tarteaucitron.lang = { "more": "Saperne di più", "source": "Vai al sito ufficiale", "credit": "Gestione dei cookies da tarteaucitron.js", + + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", "fallback": "è disattivato", diff --git a/lang/tarteaucitron.nl.js b/lang/tarteaucitron.nl.js index dda9e78..d2917a2 100644 --- a/lang/tarteaucitron.nl.js +++ b/lang/tarteaucitron.nl.js @@ -13,7 +13,9 @@ tarteaucitron.lang = { "personalize": "Personaliseer", "acceptAll": "OK, accepteer alle", "close": "Sluit", - + + "privacyUrl": "Privacybeleid", + "all": "Voorkeur voor alle diensten", "info": "Bescherming van uw privacy", @@ -30,6 +32,14 @@ tarteaucitron.lang = { "fallback": "is uitgeschakeld.", + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", + "ads": { "title": "Advertentienetwerk", "details": "Advertentienetwerken kunnen inkomsten genereren door advertentieruimte op de site te verkopen." diff --git a/lang/tarteaucitron.pl.js b/lang/tarteaucitron.pl.js index 6fe5b8e..3da7f46 100644 --- a/lang/tarteaucitron.pl.js +++ b/lang/tarteaucitron.pl.js @@ -13,6 +13,8 @@ tarteaucitron.lang = { "personalize": "Personalizacja", "acceptAll": "OK, akceptuję wszystko", "close": "zamknij", + + "privacyUrl": "Polityka prywatności", "all": "Preferencja dla wszystkich usług", @@ -27,6 +29,14 @@ tarteaucitron.lang = { "more": "Więcej informacji", "source": "Zobacz oficjalną stronę internetowa", "credit": "Cookies menadżer z tarteaucitron.js", + + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", "fallback": "jest nieaktywna.", diff --git a/lang/tarteaucitron.pt.js b/lang/tarteaucitron.pt.js index 690fd20..6c564e3 100644 --- a/lang/tarteaucitron.pt.js +++ b/lang/tarteaucitron.pt.js @@ -13,6 +13,9 @@ tarteaucitron.lang = { "personalize": "Personalizar", "acceptAll": "OK, aceitar tudo", "close": "Fechar", + + "privacyUrl": "Política de Privacidade", + "all": "Definições dos serviços", "info": "Proteger sua privacidade", "disclaimer": "Ao aceitar os serviços terceiros, você aceita o uso de cookies em conjunto de tecnologias de rastreamento que lhe são necessárias para funcionar", @@ -25,6 +28,15 @@ tarteaucitron.lang = { "more": "Ler mais", "source": "Ver o site oficial", "credit": "Gerenciador de cookies por tarteaucitron.js", + + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", + "fallback": "está desativado.", "ads": { "title": "Rede de anúncios", diff --git a/lang/tarteaucitron.ru.js b/lang/tarteaucitron.ru.js index d99370c..7be324d 100644 --- a/lang/tarteaucitron.ru.js +++ b/lang/tarteaucitron.ru.js @@ -13,6 +13,8 @@ tarteaucitron.lang = { "personalize": "Персонализировать", "acceptAll": "Ок, все активировать", "close": "Закрыть", + + "privacyUrl": "Политика конфиденциальности", "all": "Преференция всем сервисам", @@ -27,6 +29,14 @@ tarteaucitron.lang = { "more": "Подробнее", "source": "Посетите официальный сайт", "credit": "Кукис манаджер tarteaucitron.js", + + "toggleInfoBox": "Show/hide informations about cookie storage", + "title": "Cookies management panel", + "cookieDetail": "Cookie detail for", + "ourSite": "on our site", + "newWindow": "(new window)", + "allowAll": "Allow all cookies", + "denyAll": "Deny all cookies", "fallback": "Деактивирован.", diff --git a/tarteaucitron.js b/tarteaucitron.js index 39de7c1..9c00d3e 100644 --- a/tarteaucitron.js +++ b/tarteaucitron.js @@ -3,16 +3,20 @@ // define correct path for files inclusion var scripts = document.getElementsByTagName('script'), path = scripts[scripts.length - 1].src.split('?')[0], - cdn = path.split('/').slice(0, -1).join('/') + '/', + tarteaucitronForceCDN = (tarteaucitronForceCDN === undefined) ? '' : tarteaucitronForceCDN, + cdn = (tarteaucitronForceCDN === '') ? path.split('/').slice(0, -1).join('/') + '/' : tarteaucitronForceCDN, alreadyLaunch = (alreadyLaunch === undefined) ? 0 : alreadyLaunch, tarteaucitronForceLanguage = (tarteaucitronForceLanguage === undefined) ? '' : tarteaucitronForceLanguage, tarteaucitronForceExpire = (tarteaucitronForceExpire === undefined) ? '' : tarteaucitronForceExpire, + tarteaucitronCustomText = (tarteaucitronCustomText === undefined) ? '' : tarteaucitronCustomText, timeExipre = 31536000000, tarteaucitronProLoadServices, tarteaucitronNoAdBlocker = false; + + var tarteaucitron = { - "version": 323, + "version": 20181003, "cdn": cdn, "user": {}, "lang": {}, @@ -24,10 +28,14 @@ var tarteaucitron = { "parameters": {}, "isAjax": false, "reloadThePage": false, + "events": { + "init": function () {}, + "load": function () {}, + }, "init": function (params) { "use strict"; var origOpen; - + tarteaucitron.parameters = params; if (alreadyLaunch === 0) { alreadyLaunch = 1; @@ -47,13 +55,13 @@ var tarteaucitron = { if (document.getElementById('tarteaucitronAlertBig') !== null && !tarteaucitron.highPrivacy) { if (document.getElementById('tarteaucitronAlertBig').style.display === 'block') { heightPosition = document.getElementById('tarteaucitronAlertBig').offsetHeight + 'px'; - + if (scrollPos > (screen.height * 2)) { tarteaucitron.userInterface.respondAll(true); } else if (scrollPos > (screen.height / 2)) { - document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '' + tarteaucitron.lang.alertBigScroll + ' ' + tarteaucitron.lang.alertBig; + document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '' + tarteaucitron.lang.alertBigScroll + ' ' + tarteaucitron.lang.alertBig; } - + if (tarteaucitron.orientation === 'top') { document.getElementById('tarteaucitronPercentage').style.top = heightPosition; } else { @@ -63,6 +71,7 @@ var tarteaucitron = { } } }, false); + window.addEventListener("keydown", function (evt) { if (evt.keyCode === 27) { tarteaucitron.userInterface.closePanel(); @@ -79,7 +88,7 @@ var tarteaucitron = { tarteaucitron.userInterface.jsSizing('main'); } } - + if (document.getElementById('tarteaucitronCookiesListContainer') !== null) { if (document.getElementById('tarteaucitronCookiesListContainer').style.display === 'block') { tarteaucitron.userInterface.jsSizing('cookie'); @@ -102,11 +111,11 @@ var tarteaucitron = { if (document.getElementById('tarteaucitronAlertBig') !== null && !tarteaucitron.highPrivacy) { if (document.getElementById('tarteaucitronAlertBig').style.display === 'block') { heightPosition = document.getElementById('tarteaucitronAlertBig').offsetHeight + 'px'; - + if (scrollPos > (screen.height * 2)) { tarteaucitron.userInterface.respondAll(true); } else if (scrollPos > (screen.height / 2)) { - document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '' + tarteaucitron.lang.alertBigScroll + ' ' + tarteaucitron.lang.alertBig; + document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '' + tarteaucitron.lang.alertBigScroll + ' ' + tarteaucitron.lang.alertBig; } if (tarteaucitron.orientation === 'top') { document.getElementById('tarteaucitronPercentage').style.top = heightPosition; @@ -121,6 +130,21 @@ var tarteaucitron = { if (evt.keyCode === 27) { tarteaucitron.userInterface.closePanel(); } + + if ( evt.keyCode === 9 && focusableEls.indexOf(evt.target) >= 0) { + if ( evt.shiftKey ) /* shift + tab */ { + if (document.activeElement === firstFocusableEl) { + lastFocusableEl.focus(); + evt.preventDefault(); + } + } else /* tab */ { + if (document.activeElement === lastFocusableEl) { + firstFocusableEl.focus(); + evt.preventDefault(); + } + } + } + }); window.attachEvent("onhashchange", function () { if (document.location.hash === tarteaucitron.hashtag && tarteaucitron.hashtag !== '') { @@ -133,7 +157,7 @@ var tarteaucitron = { tarteaucitron.userInterface.jsSizing('main'); } } - + if (document.getElementById('tarteaucitronCookiesListContainer') !== null) { if (document.getElementById('tarteaucitronCookiesListContainer').style.display === 'block') { tarteaucitron.userInterface.jsSizing('cookie'); @@ -141,11 +165,11 @@ var tarteaucitron = { } }); } - + if (typeof XMLHttpRequest !== 'undefined') { origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function () { - + if (window.addEventListener) { this.addEventListener("load", function () { if (typeof tarteaucitronProLoadServices === 'function') { @@ -163,13 +187,17 @@ var tarteaucitron = { setTimeout(tarteaucitronProLoadServices, 1000); } } - + try { origOpen.apply(this, arguments); } catch (err) {} }; } } + + if(tarteaucitron.events.init) { + tarteaucitron.events.init(); + } }, "load": function () { "use strict"; @@ -181,25 +209,34 @@ var tarteaucitron = { defaults = { "adblocker": false, "hashtag": '#tarteaucitron', + "cookieName": 'tarteaucitron', "highPrivacy": false, "orientation": "top", "removeCredit": false, "showAlertSmall": true, "cookieslist": true, - "handleBrowserDNTRequest": false + "handleBrowserDNTRequest": false, + "AcceptAllCta" : false, + "moreInfoLink": true, + "privacyUrl": "" }, params = tarteaucitron.parameters; - + // Step 0: get params if (params !== undefined) { - tarteaucitron.extend(defaults, params); + + for (var k in defaults) { + if(!tarteaucitron.parameters.hasOwnProperty(k)) { + tarteaucitron.parameters[k] = defaults[k]; + } + } } - + // global - tarteaucitron.orientation = defaults.orientation; - tarteaucitron.hashtag = defaults.hashtag; - tarteaucitron.highPrivacy = defaults.highPrivacy; - tarteaucitron.handleBrowserDNTRequest = defaults.handleBrowserDNTRequest; + tarteaucitron.orientation = tarteaucitron.parameters.orientation; + tarteaucitron.hashtag = tarteaucitron.parameters.hashtag; + tarteaucitron.highPrivacy = tarteaucitron.parameters.highPrivacy; + tarteaucitron.handleBrowserDNTRequest = tarteaucitron.parameters.handleBrowserDNTRequest; // Step 1: load css linkElement.rel = 'stylesheet'; @@ -209,6 +246,10 @@ var tarteaucitron = { // Step 2: load language and services tarteaucitron.addScript(pathToLang, '', function () { + + if(tarteaucitronCustomText !== ''){ + tarteaucitron.lang = tarteaucitron.AddOrUpdate(tarteaucitron.lang, tarteaucitronCustomText); + } tarteaucitron.addScript(pathToServices, '', function () { var body = document.body, @@ -218,7 +259,7 @@ var tarteaucitron = { orientation = 'Top', cat = ['ads', 'analytic', 'api', 'comment', 'social', 'support', 'video', 'other'], i; - + cat = cat.sort(function (a, b) { if (tarteaucitron.lang[a].title > tarteaucitron.lang[b].title) { return 1; } if (tarteaucitron.lang[a].title < tarteaucitron.lang[b].title) { return -1; } @@ -227,96 +268,122 @@ var tarteaucitron = { // Step 3: prepare the html html += '
'; - html += '
'; - html += '
'; - html += '
'; + html += ''; + html += ''; + html += ' '; html += '
'; html += '
'; + html += '

'+ tarteaucitron.lang.title + '

'; + html += '
'; + html += ' ' + tarteaucitron.lang.disclaimer; + if (tarteaucitron.parameters.privacyUrl !== "") { + html += '

'; + html += ' '; + } + html += '
'; html += '
'; - html += ' ' + tarteaucitron.lang.all + ''; + html += '

' + tarteaucitron.lang.all + '

'; html += '
'; html += '
'; - html += '
'; - html += ' ✓ ' + tarteaucitron.lang.allow; - html += '
'; - html += '
'; - html += ' ✗ ' + tarteaucitron.lang.deny; - html += '
'; + html += ' '; + html += ' '; html += '
'; html += '
'; - html += '
'; - html += ' ' + tarteaucitron.lang.disclaimer; - if (defaults.removeCredit === false) { - html += '

'; - html += ' ' + tarteaucitron.lang.credit + ''; - } - html += '
'; - html += '
'; - html += '
'; + html += '
'; + html += '
    '; for (i = 0; i < cat.length; i += 1) { - html += '
    '; + html += '
  • '; html += '
    '; - html += ' ' + tarteaucitron.lang[cat[i]].title; + html += ' '; html += '
    '; html += '
    '; html += ' ' + tarteaucitron.lang[cat[i]].details; html += '
    '; - html += '
  • '; - html += '
    '; + html += '
      '; } + html += '
    '; html += '
    '; + if (tarteaucitron.parameters.removeCredit === false) { + html += ' 🍋 ' + tarteaucitron.lang.credit + ''; + } html += '
    '; html += '
    '; html += '
    '; - - if (defaults.orientation === 'bottom') { + + if (tarteaucitron.parameters.orientation === 'bottom') { orientation = 'Bottom'; } - - if (defaults.highPrivacy) { + + if (tarteaucitron.parameters.highPrivacy && !tarteaucitron.parameters.AcceptAllCta) { html += '
    '; html += ' '; html += ' ' + tarteaucitron.lang.alertBigPrivacy; html += ' '; - html += ' '; + html += ' '; + + if (tarteaucitron.parameters.privacyUrl !== "") { + html += ' '; + } + html += '
    '; } else { html += '
    '; html += ' '; - html += ' ' + tarteaucitron.lang.alertBigClick + ' ' + tarteaucitron.lang.alertBig; + + if (tarteaucitron.parameters.highPrivacy) { + html += ' ' + tarteaucitron.lang.alertBigPrivacy; + } else { + html += ' ' + tarteaucitron.lang.alertBigClick + ' ' + tarteaucitron.lang.alertBig; + } + html += ' '; - html += ' '; + html += ' '; + html += ' '; + + if (tarteaucitron.parameters.privacyUrl !== "") { + html += ' '; + } + html += '
    '; html += '
    '; } - - if (defaults.showAlertSmall === true) { + + if (tarteaucitron.parameters.showAlertSmall === true) { html += '
    '; - html += '
    '; + html += '
    0
    '; + html += ' '; + if (tarteaucitron.parameters.cookieslist === true) { + html += ' '; html += '
    '; - html += '
    '; + html += '
    '; + html += ' '; html += '
    '; - html += ' 0 cookie'; + html += '

    0 cookie

    '; html += '
    '; html += '
    '; html += '
    '; @@ -325,9 +392,22 @@ var tarteaucitron = { } html += '
    '; } - + tarteaucitron.addScript(tarteaucitron.cdn + 'advertising.js?v=' + tarteaucitron.version, '', function () { - if (tarteaucitronNoAdBlocker === true || defaults.adblocker === false) { + if (tarteaucitronNoAdBlocker === true || tarteaucitron.parameters.adblocker === false) { + + // create a wrapper container at the same level than tarteaucitron so we can add an aria-hidden when tarteaucitron is opened + /*var wrapper = document.createElement('div'); + wrapper.id = "contentWrapper"; + + while (document.body.firstChild) + { + wrapper.appendChild(document.body.firstChild); + } + + // Append the wrapper to the body + document.body.appendChild(wrapper);*/ + div.id = 'tarteaucitronRoot'; body.appendChild(div, body); div.innerHTML = html; @@ -340,7 +420,7 @@ var tarteaucitron = { } else { tarteaucitron.job = [] } - + tarteaucitron.isAjax = true; tarteaucitron.job.push = function (id) { @@ -363,29 +443,42 @@ var tarteaucitron = { tarteaucitron.launch[id] = false; tarteaucitron.addService(id); }; - + if (document.location.hash === tarteaucitron.hashtag && tarteaucitron.hashtag !== '') { tarteaucitron.userInterface.openPanel(); } - + tarteaucitron.cookie.number(); setInterval(tarteaucitron.cookie.number, 60000); } - }, defaults.adblocker); - - if (defaults.adblocker === true) { + }, tarteaucitron.parameters.adblocker); + + if (tarteaucitron.parameters.adblocker === true) { setTimeout(function () { if (tarteaucitronNoAdBlocker === false) { - html = '
    '; - html += ' '; + html = ''; html += '
    '; + + // create wrapper container + /*var wrapper = document.createElement('div'); + wrapper.id = "contentWrapper"; + + while (document.body.firstChild) + { + wrapper.appendChild(document.body.firstChild); + } + + // Append the wrapper to the body + document.body.appendChild(wrapper);*/ + div.id = 'tarteaucitronRoot'; body.appendChild(div, body); div.innerHTML = html; @@ -397,6 +490,10 @@ var tarteaucitron = { } }); }); + + if(tarteaucitron.events.load) { + tarteaucitron.events.load(); + } }, "addService": function (serviceId) { "use strict"; @@ -406,7 +503,7 @@ var tarteaucitron = { cookie = tarteaucitron.cookie.read(), hostname = document.location.hostname, hostRef = document.referrer.split('/')[2], - isNavigating = (hostRef === hostname) ? true : false, + isNavigating = (hostRef === hostname && window.location.href !== tarteaucitron.parameters.privacyUrl) ? true : false, isAutostart = (!service.needConsent) ? true : false, isWaiting = (cookie.indexOf(service.key + '=wait') >= 0) ? true : false, isDenied = (cookie.indexOf(service.key + '=false') >= 0) ? true : false, @@ -416,35 +513,37 @@ var tarteaucitron = { if (tarteaucitron.added[service.key] !== true) { tarteaucitron.added[service.key] = true; - - html += '
    '; + + html += '
  • '; html += '
    '; - html += ' ' + service.name + '
    '; + html += '

    ' + service.name + '

    '; html += '
    '; - html += ' '; - html += ' ' + tarteaucitron.lang.more; - html += ' '; - html += ' - '; - html += ' '; - html += ' ' + tarteaucitron.lang.source; - html += ' '; + if (tarteaucitron.parameters.moreInfoLink == true) { + html += ' '; + html += ' ' + tarteaucitron.lang.more; + html += ' '; + html += ' - '; + html += ' '; + html += ' ' + tarteaucitron.lang.source; + html += ' '; + } html += '
    '; html += '
    '; - html += '
    '; + html += '
    '; - html += '
    '; + html += ' '; + html += '
    '; + html += ' '; html += '
    '; - html += '
  • '; - + html += ''; + tarteaucitron.userInterface.css('tarteaucitronServicesTitle_' + service.type, 'display', 'block'); - + if (document.getElementById('tarteaucitronServices_' + service.type) !== null) { document.getElementById('tarteaucitronServices_' + service.type).innerHTML += html; } - + tarteaucitron.userInterface.order(service.type); } @@ -453,7 +552,7 @@ var tarteaucitron = { isAllowed = true; tarteaucitron.cookie.create(service.key, true); } - + if ((!isResponded && (isAutostart || (isNavigating && isWaiting)) && !tarteaucitron.highPrivacy) || isAllowed) { if (!isAllowed) { tarteaucitron.cookie.create(service.key, true); @@ -495,7 +594,7 @@ var tarteaucitron = { out = [], obj = {}, s = tarteaucitron.services; - + for (i = 0; i < len; i += 1) { if (!obj[arr[i]]) { obj[arr[i]] = {}; @@ -504,13 +603,13 @@ var tarteaucitron = { } } } - + out = out.sort(function (a, b) { if (s[a].type + s[a].key > s[b].type + s[b].key) { return 1; } if (s[a].type + s[a].key < s[b].type + s[b].key) { return -1; } return 0; }); - + return out; }, "userInterface": { @@ -526,7 +625,7 @@ var tarteaucitron = { service, key, index = 0; - + for (index = 0; index < tarteaucitron.job.length; index += 1) { service = s[tarteaucitron.job[index]]; key = service.key; @@ -547,16 +646,16 @@ var tarteaucitron = { "respond": function (el, status) { "use strict"; var key = el.id.replace(new RegExp("(Eng[0-9]+|Allow|Deni)ed", "g"), ''); - + // return if same state if (tarteaucitron.state[key] === status) { return; } - + if (status === false && tarteaucitron.launch[key] === true) { tarteaucitron.reloadThePage = true; } - + // if not already launched... launch the service if (status === true) { if (tarteaucitron.launch[key] !== true) { @@ -587,10 +686,16 @@ var tarteaucitron = { tarteaucitron.userInterface.css(key + 'Line', 'borderLeft', '5px solid ' + greenDark); tarteaucitron.userInterface.css(key + 'Allowed', 'backgroundColor', greenDark); tarteaucitron.userInterface.css(key + 'Denied', 'backgroundColor', gray); + + document.getElementById(key + 'Line').classList.add('tarteaucitronIsAllowed'); + document.getElementById(key + 'Line').classList.remove('tarteaucitronIsDenied'); } else if (status === false) { tarteaucitron.userInterface.css(key + 'Line', 'borderLeft', '5px solid ' + redDark); tarteaucitron.userInterface.css(key + 'Allowed', 'backgroundColor', gray); tarteaucitron.userInterface.css(key + 'Denied', 'backgroundColor', redDark); + + document.getElementById(key + 'Line').classList.remove('tarteaucitronIsAllowed'); + document.getElementById(key + 'Line').classList.add('tarteaucitronIsDenied'); } // check if all services are allowed @@ -603,31 +708,33 @@ var tarteaucitron = { nbAllowed += 1; } } - + tarteaucitron.userInterface.css(c + 'DotGreen', 'width', ((100 / sum) * nbAllowed) + '%'); tarteaucitron.userInterface.css(c + 'DotYellow', 'width', ((100 / sum) * nbPending) + '%'); tarteaucitron.userInterface.css(c + 'DotRed', 'width', ((100 / sum) * nbDenied) + '%'); - + if (nbDenied === 0 && nbPending === 0) { tarteaucitron.userInterface.css(c + 'AllAllowed', 'backgroundColor', greenDark); - tarteaucitron.userInterface.css(c + 'AllDenied', 'backgroundColor', gray); + tarteaucitron.userInterface.css(c + 'AllDenied', 'opacity', '0.4'); + tarteaucitron.userInterface.css(c + 'AllAllowed', 'opacity', '1'); } else if (nbAllowed === 0 && nbPending === 0) { - tarteaucitron.userInterface.css(c + 'AllAllowed', 'backgroundColor', gray); + tarteaucitron.userInterface.css(c + 'AllAllowed', 'opacity', '0.4'); + tarteaucitron.userInterface.css(c + 'AllDenied', 'opacity', '1'); tarteaucitron.userInterface.css(c + 'AllDenied', 'backgroundColor', redDark); } else { - tarteaucitron.userInterface.css(c + 'AllAllowed', 'backgroundColor', gray); - tarteaucitron.userInterface.css(c + 'AllDenied', 'backgroundColor', gray); + tarteaucitron.userInterface.css(c + 'AllAllowed', 'opacity', '0.4'); + tarteaucitron.userInterface.css(c + 'AllDenied', 'opacity', '0.4'); } - + // close the alert if all service have been reviewed if (nbPending === 0) { tarteaucitron.userInterface.closeAlert(); } - + if (tarteaucitron.services[key].cookies.length > 0 && status === false) { tarteaucitron.cookie.purge(tarteaucitron.services[key].cookies); } - + if (status === true) { if (document.getElementById('tacCL' + key) !== null) { document.getElementById('tacCL' + key).innerHTML = '...'; @@ -641,29 +748,81 @@ var tarteaucitron = { }, "openPanel": function () { "use strict"; + tarteaucitron.userInterface.css('tarteaucitron', 'display', 'block'); tarteaucitron.userInterface.css('tarteaucitronBack', 'display', 'block'); tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'display', 'none'); + + document.getElementById('tarteaucitronClosePanel').focus(); + //document.getElementById('contentWrapper').setAttribute("aria-hidden", "true"); + document.getElementsByTagName('body')[0].classList.add('modal-open'); + tarteaucitron.userInterface.focusTrap(); tarteaucitron.userInterface.jsSizing('main'); }, "closePanel": function () { "use strict"; - + if (document.location.hash === tarteaucitron.hashtag) { document.location.hash = ''; } tarteaucitron.userInterface.css('tarteaucitron', 'display', 'none'); tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'display', 'none'); - + tarteaucitron.fallback(['tarteaucitronInfoBox'], function (elem) { elem.style.display = 'none'; }, true); - + if (tarteaucitron.reloadThePage === true) { window.location.reload(); } else { tarteaucitron.userInterface.css('tarteaucitronBack', 'display', 'none'); } + if (document.getElementById('tarteaucitronCloseAlert') !== null) { + document.getElementById('tarteaucitronCloseAlert').focus(); + } + //document.getElementById('contentWrapper').setAttribute("aria-hidden", "false"); + document.getElementsByTagName('body')[0].classList.remove('modal-open'); + + }, + "focusTrap": function() { + "use strict"; + + var focusableEls, + firstFocusableEl, + lastFocusableEl, + filtered; + + focusableEls = document.getElementById('tarteaucitron').querySelectorAll('a[href], button'); + filtered = []; + + // get only visible items + for (var i = 0, max = focusableEls.length; i < max; i++) { + if (focusableEls[i].offsetHeight > 0) { + filtered.push(focusableEls[i]); + } + } + + firstFocusableEl = filtered[0]; + lastFocusableEl = filtered[filtered.length - 1]; + + //loop focus inside tarteaucitron + document.getElementById('tarteaucitron').addEventListener("keydown", function (evt) { + + if ( evt.key === 'Tab' || evt.keyCode === 9 ) { + + if ( evt.shiftKey ) /* shift + tab */ { + if (document.activeElement === firstFocusableEl) { + lastFocusableEl.focus(); + evt.preventDefault(); + } + } else /* tab */ { + if (document.activeElement === lastFocusableEl) { + firstFocusableEl.focus(); + evt.preventDefault(); + } + } + } + }) }, "openAlert": function () { "use strict"; @@ -683,11 +842,11 @@ var tarteaucitron = { "toggleCookiesList": function () { "use strict"; var div = document.getElementById('tarteaucitronCookiesListContainer'); - + if (div === null) { return; } - + if (div.style.display !== 'block') { tarteaucitron.cookie.number(); div.style.display = 'block'; @@ -706,11 +865,11 @@ var tarteaucitron = { "toggle": function (id, closeClass) { "use strict"; var div = document.getElementById(id); - + if (div === null) { return; } - + if (closeClass !== undefined) { tarteaucitron.fallback([closeClass], function (elem) { if (elem.id !== id) { @@ -718,7 +877,7 @@ var tarteaucitron = { } }, true); } - + if (div.style.display !== 'block') { div.style.display = 'block'; } else { @@ -735,11 +894,13 @@ var tarteaucitron = { if (main === null) { return; } - + allDivs = main.childNodes; - + if (typeof Array.prototype.map === 'function') { Array.prototype.map.call(main.children, Object).sort(function (a, b) { + //var mainChildren = Array.from(main.children); + //mainChildren.sort(function (a, b) { if (tarteaucitron.services[a.id.replace(/Line/g, '')].name > tarteaucitron.services[b.id.replace(/Line/g, '')].name) { return 1; } if (tarteaucitron.services[a.id.replace(/Line/g, '')].name < tarteaucitron.services[b.id.replace(/Line/g, '')].name) { return -1; } return 0; @@ -767,18 +928,18 @@ var tarteaucitron = { paddingBox, alertSmallHeight, cookiesNumberHeight; - + if (type === 'box') { if (document.getElementById('tarteaucitronAlertSmall') !== null && document.getElementById('tarteaucitronCookiesNumber') !== null) { - + // reset tarteaucitron.userInterface.css('tarteaucitronCookiesNumber', 'padding', '0px 10px'); - + // calculate alertSmallHeight = document.getElementById('tarteaucitronAlertSmall').offsetHeight; cookiesNumberHeight = document.getElementById('tarteaucitronCookiesNumber').offsetHeight; paddingBox = (alertSmallHeight - cookiesNumberHeight) / 2; - + // apply tarteaucitron.userInterface.css('tarteaucitronCookiesNumber', 'padding', paddingBox + 'px 10px'); } @@ -792,79 +953,79 @@ var tarteaucitron = { // height of the services list container if (document.getElementById('tarteaucitron') !== null && document.getElementById('tarteaucitronClosePanel') !== null && document.getElementById('tarteaucitronMainLineOffset') !== null) { - + // reset - tarteaucitron.userInterface.css('tarteaucitronScrollbarParent', 'height', 'auto'); - + tarteaucitron.userInterface.css('tarteaucitronServices', 'height', 'auto'); + // calculate mainHeight = document.getElementById('tarteaucitron').offsetHeight; closeButtonHeight = document.getElementById('tarteaucitronClosePanel').offsetHeight; - headerHeight = document.getElementById('tarteaucitronMainLineOffset').offsetHeight; - + // apply - servicesHeight = (mainHeight - closeButtonHeight - headerHeight + 1); - tarteaucitron.userInterface.css('tarteaucitronScrollbarParent', 'height', servicesHeight + 'px'); + servicesHeight = (mainHeight - closeButtonHeight + 2); + tarteaucitron.userInterface.css('tarteaucitronServices', 'height', servicesHeight + 'px'); + tarteaucitron.userInterface.css('tarteaucitronServices', 'overflow-x', 'auto'); } - + // align the main allow/deny button depending on scrollbar width - if (document.getElementById('tarteaucitronScrollbarParent') !== null && document.getElementById('tarteaucitronScrollbarChild') !== null) { - + if (document.getElementById('tarteaucitronServices') !== null && document.getElementById('tarteaucitronScrollbarChild') !== null) { + // media query if (e[a + 'Width'] <= 479) { tarteaucitron.userInterface.css('tarteaucitronScrollbarAdjust', 'marginLeft', '11px'); } else if (e[a + 'Width'] <= 767) { scrollbarMarginRight = 12; } - - scrollbarWidthParent = document.getElementById('tarteaucitronScrollbarParent').offsetWidth; + + scrollbarWidthParent = document.getElementById('tarteaucitronServices').offsetWidth; scrollbarWidthChild = document.getElementById('tarteaucitronScrollbarChild').offsetWidth; tarteaucitron.userInterface.css('tarteaucitronScrollbarAdjust', 'marginRight', ((scrollbarWidthParent - scrollbarWidthChild) + scrollbarMarginRight) + 'px'); } - + // center the main panel if (document.getElementById('tarteaucitron') !== null) { - + // media query if (e[a + 'Width'] <= 767) { mainTop = 0; } else { mainTop = ((windowInnerHeight - document.getElementById('tarteaucitron').offsetHeight) / 2) - 21; } - + // correct if (mainTop < 0) { mainTop = 0; } - + if (document.getElementById('tarteaucitronMainLineOffset') !== null) { if (document.getElementById('tarteaucitron').offsetHeight < (windowInnerHeight / 2)) { mainTop -= document.getElementById('tarteaucitronMainLineOffset').offsetHeight; } } - + // apply tarteaucitron.userInterface.css('tarteaucitron', 'top', mainTop + 'px'); } } else if (type === 'cookie') { - + // put cookies list at bottom if (document.getElementById('tarteaucitronAlertSmall') !== null) { tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'bottom', (document.getElementById('tarteaucitronAlertSmall').offsetHeight) + 'px'); } - + // height of cookies list if (document.getElementById('tarteaucitronCookiesListContainer') !== null) { - + // reset tarteaucitron.userInterface.css('tarteaucitronCookiesList', 'height', 'auto'); - + // calculate cookiesListHeight = document.getElementById('tarteaucitronCookiesListContainer').offsetHeight; cookiesCloseHeight = document.getElementById('tarteaucitronClosePanelCookie').offsetHeight; cookiesTitleHeight = document.getElementById('tarteaucitronCookiesTitle').offsetHeight; - + // apply tarteaucitron.userInterface.css('tarteaucitronCookiesList', 'height', (cookiesListHeight - cookiesCloseHeight - cookiesTitleHeight - 2) + 'px'); } @@ -886,7 +1047,7 @@ var tarteaucitron = { expireTime = time + timeExipre, // 365 days regex = new RegExp("!" + key + "=(wait|true|false)", "g"), cookie = tarteaucitron.cookie.read().replace(regex, ""), - value = 'tarteaucitron=' + cookie + '!' + key + '=' + status, + value = tarteaucitron.parameters.cookieName + '=' + cookie + '!' + key + '=' + status, domain = (tarteaucitron.parameters.cookieDomain !== undefined && tarteaucitron.parameters.cookieDomain !== '') ? 'domain=' + tarteaucitron.parameters.cookieDomain + ';' : ''; if (tarteaucitron.cookie.read().indexOf(key + '=' + status) === -1) { @@ -898,7 +1059,7 @@ var tarteaucitron = { }, "read": function () { "use strict"; - var nameEQ = "tarteaucitron=", + var nameEQ = tarteaucitron.parameters.cookieName + "=", ca = document.cookie.split(';'), i, c; @@ -917,7 +1078,7 @@ var tarteaucitron = { "purge": function (arr) { "use strict"; var i; - + for (i = 0; i < arr.length; i += 1) { document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/;'; document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=.' + location.hostname + ';'; @@ -932,7 +1093,7 @@ var tarteaucitron = { html = '', i, status = document.cookie.indexOf(key + '=true'); - + if (status >= 0 && nb === 0) { html += tarteaucitron.lang.useNoCookie; } else if (status >= 0) { @@ -947,7 +1108,7 @@ var tarteaucitron = { } } } - + if (nbCurrent > 0) { html += tarteaucitron.lang.useCookieCurrent + ' ' + nbCurrent + ' cookie'; if (nbCurrent > 1) { @@ -966,7 +1127,7 @@ var tarteaucitron = { } html += '.'; } - + if (document.getElementById('tacCL' + key) !== null) { document.getElementById('tacCL' + key).innerHTML = html; } @@ -997,7 +1158,7 @@ var tarteaucitron = { regex = /^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i, regexedDomain = (tarteaucitron.cdn.match(regex) !== null) ? tarteaucitron.cdn.match(regex)[1] : tarteaucitron.cdn, host = (tarteaucitron.domain !== undefined) ? tarteaucitron.domain : regexedDomain; - + cookies = cookies.sort(function (a, b) { namea = a.split('=', 1).toString().replace(/ /g, ''); nameb = b.split('=', 1).toString().replace(/ /g, ''); @@ -1007,52 +1168,53 @@ var tarteaucitron = { if (c + a < d + b) { return -1; } return 0; }); - + if (document.cookie !== '') { for (i = 0; i < nb; i += 1) { name = cookies[i].split('=', 1).toString().replace(/ /g, ''); if (tarteaucitron.cookie.owner[name] !== undefined && tarteaucitron.cookie.owner[name].join(' // ') !== savedname) { savedname = tarteaucitron.cookie.owner[name].join(' // '); html += '
    '; - html += '
    '; + html += '

    '; html += ' ' + tarteaucitron.cookie.owner[name].join(' // '); - html += '

    '; - html += '
    '; + html += ' '; + html += '
    '; } else { html += '
    '; - html += '
    -
    '; + html += '
    -
    '; html += '
    '; html += '
    '; } - + html += '
    '; - + if (document.getElementById('tarteaucitronCookiesList') !== null) { document.getElementById('tarteaucitronCookiesList').innerHTML = html; } - + if (document.getElementById('tarteaucitronCookiesNumber') !== null) { document.getElementById('tarteaucitronCookiesNumber').innerHTML = nb; } - + if (document.getElementById('tarteaucitronCookiesNumberBis') !== null) { document.getElementById('tarteaucitronCookiesNumberBis').innerHTML = nb + ' cookie' + s; } - + for (i = 0; i < tarteaucitron.job.length; i += 1) { tarteaucitron.cookie.checkCount(tarteaucitron.job[i]); } @@ -1061,7 +1223,7 @@ var tarteaucitron = { "getLanguage": function () { "use strict"; if (!navigator) { return 'en'; } - + var availableLanguages = 'cs,en,fr,es,it,de,nl,pt,pl,ru', defaultLanguage = 'en', lang = navigator.language || navigator.browserLanguage || @@ -1073,7 +1235,7 @@ var tarteaucitron = { return tarteaucitronForceLanguage; } } - + if (availableLanguages.indexOf(userLanguage) === -1) { return defaultLanguage; } @@ -1082,11 +1244,11 @@ var tarteaucitron = { "getLocale": function () { "use strict"; if (!navigator) { return 'en_US'; } - + var lang = navigator.language || navigator.browserLanguage || navigator.systemLanguage || navigator.userLang || null, userLanguage = lang.substr(0, 2); - + if (userLanguage === 'fr') { return 'fr_FR'; } else if (userLanguage === 'en') { @@ -1109,7 +1271,7 @@ var tarteaucitron = { "use strict"; var script, done = false; - + if (execute === false) { if (typeof callback === 'function') { callback(); @@ -1120,7 +1282,7 @@ var tarteaucitron = { script.id = (id !== undefined) ? id : ''; script.async = true; script.src = url; - + if (attrName !== undefined && attrVal !== undefined) { script.setAttribute(attrName, attrVal); } @@ -1134,7 +1296,7 @@ var tarteaucitron = { } }; } - + document.getElementsByTagName('head')[0].appendChild(script); } }, @@ -1152,12 +1314,12 @@ var tarteaucitron = { document.writeln = function (content) { tarteaucitron.makeAsync.buffer += content.concat("\n"); }; - + setTimeout(function () { document.write = savedWrite; document.writeln = savedWriteln; }, 20000); - + tarteaucitron.makeAsync.getAndParse(url, id); }, "getAndParse": function (url, id) { @@ -1185,7 +1347,7 @@ var tarteaucitron = { if (document.getElementById(id) === null) { return; } - + scripts = document.getElementById(id).getElementsByTagName('script'); for (i = 0; i < scripts.length; i += 1) { type = (scripts[i].getAttribute('type') !== null) ? scripts[i].getAttribute('type') : ''; @@ -1230,17 +1392,22 @@ var tarteaucitron = { "engage": function (id) { "use strict"; var html = '', - r = Math.floor(Math.random() * 100000); - + r = Math.floor(Math.random() * 100000), + engage = tarteaucitron.services[id].name + ' ' + tarteaucitron.lang.fallback; + + if (tarteaucitron.lang['engage-' + id] !== undefined) { + engage = tarteaucitron.lang['engage-' + id]; + } + html += '
    '; html += '
    '; - html += ' ' + tarteaucitron.services[id].name + ' ' + tarteaucitron.lang.fallback; - html += '
    '; + html += ' ' + engage; + html += '
    '; + html += ' '; html += '
    '; html += '
    '; - + return html; }, "extend": function (a, b) { @@ -1269,21 +1436,40 @@ var tarteaucitron = { var div = document.getElementById('tarteaucitronPremium'), timestamp = new Date().getTime(), url = '//opt-out.ferank.eu/premium.php?'; - + if (div === null) { return; } - + url += 'domain=' + tarteaucitron.domain + '&'; url += 'uuid=' + tarteaucitron.uuid + '&'; url += 'c=' + encodeURIComponent(tarteaucitron.proTemp) + '&'; url += '_' + timestamp; - + div.innerHTML = ''; - + tarteaucitron.proTemp = ''; } - + tarteaucitron.cookie.number(); + }, + "AddOrUpdate" : function(source, custom){ + /** + Utility function to Add or update the fields of obj1 with the ones in obj2 + */ + for(key in custom){ + if(custom[key] instanceof Object){ + source[key] = tarteaucitron.AddOrUpdate(source[key], custom[key]); + }else{ + source[key] = custom[key]; + } + } + return source; + }, + "getElemWidth": function(elem) { + return elem.getAttribute('width') || elem.clientWidth; + }, + "getElemHeight": function(elem) { + return elem.getAttribute('height') || elem.clientHeight; } }; diff --git a/tarteaucitron.services.js b/tarteaucitron.services.js index b46d69b..0402745 100644 --- a/tarteaucitron.services.js +++ b/tarteaucitron.services.js @@ -1020,7 +1020,16 @@ tarteaucitron.services.gajs = { "use strict"; window._gaq = window._gaq || []; window._gaq.push(['_setAccount', tarteaucitron.user.gajsUa]); - window._gaq.push(['_trackPageview']); + + if (tarteaucitron.user.gajsAnonymizeIp) { + window._gaq.push (['_gat._anonymizeIp']); + } + + if (tarteaucitron.user.gajsPageView) { + window._gaq.push(['_trackPageview, ' + tarteaucitron.user.gajsPageView]); + } else { + window._gaq.push(['_trackPageview']); + } tarteaucitron.addScript('//www.google-analytics.com/ga.js', '', function () { if (typeof tarteaucitron.user.gajsMore === 'function') { @@ -1047,8 +1056,24 @@ tarteaucitron.services.analytics = { }; window.ga.l = new Date(); tarteaucitron.addScript('https://www.google-analytics.com/analytics.js', '', function () { - ga('create', tarteaucitron.user.analyticsUa, {'cookieExpires': 34128000}); - ga('send', 'pageview'); + var uaCreate = {'cookieExpires': 34128000}; + tarteaucitron.extend(uaCreate, tarteaucitron.user.analyticsUaCreate || {}); + ga('create', tarteaucitron.user.analyticsUa, uaCreate); + + if (tarteaucitron.user.analyticsAnonymizeIp) { + ga('set', 'anonymizeIp', true); + } + + if (typeof tarteaucitron.user.analyticsPrepare === 'function') { + tarteaucitron.user.analyticsPrepare(); + } + + if (tarteaucitron.user.analyticsPageView) { + ga('send', 'pageview', tarteaucitron.user.analyticsPageView); + } else { + ga('send', 'pageview'); + } + if (typeof tarteaucitron.user.analyticsMore === 'function') { tarteaucitron.user.analyticsMore(); } @@ -1104,7 +1129,7 @@ tarteaucitron.services.googlemaps = { } // Add Google Maps libraries if any (https://developers.google.com/maps/documentation/javascript/libraries) - var googleMapsLibraries; + var googleMapsLibraries = ''; if (tarteaucitron.user.googlemapsLibraries) { googleMapsLibraries = '&libraries=' + tarteaucitron.user.googlemapsLibraries; } @@ -1166,6 +1191,35 @@ tarteaucitron.services.googlemapssearch = { } }; +// googlemaps embed iframe +tarteaucitron.services.googlemapsembed = { + "key": "googlemapsembed", + "type": "api", + "name": "Google Maps Embed", + "uri": "http://www.google.com/ads/preferences/", + "needConsent": true, + "cookies": ['apisid', 'hsid', 'nid', 'sapisid', 'sid', 'sidcc', 'ssid', '1p_jar'], + "js": function () { + "use strict"; + tarteaucitron.fallback(['googlemapsembed'], function (x) { + var width = tarteaucitron.getElemWidth(x), + height = tarteaucitron.getElemHeight(x), + url = x.getAttribute("data-url"); + + return ''; + }); + }, + "fallback": function () { + "use strict"; + var id = 'googlemapsembed'; + tarteaucitron.fallback(['googlemapsembed'], function (elem) { + elem.style.width = tarteaucitron.getElemWidth(elem) + 'px'; + elem.style.height = tarteaucitron.getElemHeight(elem) + 'px'; + return tarteaucitron.engage(id); + }); + } +}; + // google tag manager tarteaucitron.services.googletagmanager = { "key": "googletagmanager", @@ -2225,7 +2279,7 @@ tarteaucitron.services.koban = { window.KobanObject = 'kb'; window.kb = window.kb || function() { window.kb.q = window.kb.q || []; - window.kb.q.push(arguments); + window.kb.q.push(arguments); }; window.kb.l = new Date(); kb('reg', tarteaucitron.user.kobanapi); @@ -2254,7 +2308,7 @@ tarteaucitron.services.matomo = { "type": "analytic", "name": "Matomo (formerly known as Piwik)", "uri": "https://matomo.org/faq/general/faq_146/", - "needConsent": true, + "needConsent": false, "cookies": ['_pk_ref', '_pk_cvar', '_pk_id', '_pk_ses', '_pk_hsr', 'piwik_ignore', '_pk_uid'], "js": function () { "use strict"; @@ -2269,28 +2323,34 @@ tarteaucitron.services.matomo = { window._paq.push(["trackPageView"]); window._paq.push(["setIgnoreClasses", ["no-tracking", "colorbox"]]); window._paq.push(["enableLinkTracking"]); + window._paq.push([function() { + var self = this; + function getOriginalVisitorCookieTimeout() { + var now = new Date(), + nowTs = Math.round(now.getTime() / 1000), + visitorInfo = self.getVisitorInfo(); + var createTs = parseInt(visitorInfo[2]); + var cookieTimeout = 33696000; // 13 mois en secondes + var originalTimeout = createTs + cookieTimeout - nowTs; + return originalTimeout; + } + this.setVisitorCookieTimeout( getOriginalVisitorCookieTimeout() ); + }]); tarteaucitron.addScript(tarteaucitron.user.matomoHost + 'piwik.js', '', '', true, 'defer', true); } }; // Hotjar - -/* + /* 1. Set the following variable before the initialization : - - tarteaucitron.user.hotjarId = YOUR_WEBSITE_ID; + tarteaucitron.user.hotjarId = YOUR_WEBSITE_ID; tarteaucitron.user.HotjarSv = XXXX; // Can be found in your website tracking code as "hjvs=XXXX" - - 2. Push the service : - - (tarteaucitron.job = tarteaucitron.job || []).push('hotjar'); - - 3. HTML + 2. Push the service : + (tarteaucitron.job = tarteaucitron.job || []).push('hotjar'); + 3. HTML You don't need to add any html code, if the service is autorized, the javascript is added. otherwise no. - - - */ + */ tarteaucitron.services.hotjar = { "key": "hotjar", "type": "analytic", @@ -2303,17 +2363,192 @@ tarteaucitron.services.hotjar = { if (tarteaucitron.user.hotjarId === undefined || tarteaucitron.user.HotjarSv === undefined) { return; } - - window.hj = window.hj || function() { + window.hj = window.hj || function() { (window.hj.q = window.hj.q || []).push(arguments) }; window._hjSettings = { hjid: tarteaucitron.user.hotjarId, hjsv: tarteaucitron.user.HotjarSv }; - - var uri = 'https://static.hotjar.com/c/hotjar-'; + var uri = 'https://static.hotjar.com/c/hotjar-'; var extension = '.js?sv='; tarteaucitron.addScript(uri + window._hjSettings.hjid + extension + window._hjSettings.hjsv); } }; + +// bing ads universal event tracking +tarteaucitron.services.bingads = { + 'key': 'bingads', + 'type': 'ads', + 'name': 'Bing Ads Universal Event Tracking', + 'uri': 'https://advertise.bingads.microsoft.com/en-us/resources/policies/personalized-ads', + 'needConsent': true, + 'cookies': ['_uetmsclkid'], + 'js': function () { + 'use strict'; + var u = tarteaucitron.user.bingadsTag || 'uetq'; + window[u] = window[u] || []; + + tarteaucitron.addScript('https://bat.bing.com/bat.js', '', function () { + var bingadsCreate = {ti: tarteaucitron.user.bingadsID}; + + if ('bingadsStoreCookies' in tarteaucitron.user) { + bingadsCreate['storeConvTrackCookies'] = tarteaucitron.user.bingadsStoreCookies; + } + + bingadsCreate.q = window[u]; + window[u] = new UET(bingadsCreate); + window[u].push('pageload'); + }); + } +}; + +//Matterport +/* +SERVICE INIT + (tarteaucitron.job = tarteaucitron.job || []).push('matterport'); + +HTML TAG +
    + +DELETE IFRAME + ' + */ +tarteaucitron.services.matterport = { + "key": "matterport", + "type": "other", + "name": "Matterport", + "uri": "https://matterport.com/es/legal/privacy-policy/", + "needConsent": true, + "cookies": ['__cfduid', 'ajs_anonymous_id', 'ajs_group_id', 'ajs_user_id'], + "js": function () { + "use strict"; + tarteaucitron.fallback(['matterport'], function (x) { + var matterport_id = x.getAttribute("matterportID"), + matterport_width = x.getAttribute("width"), + frame_width = 'width=', + matterport_height = x.getAttribute("height"), + frame_height = 'height=', + matterport_parameters = x.getAttribute("parameters"), + matterport_frame; + + if (matterport_id === undefined) { + return ""; + } + if (matterport_width !== undefined) { + frame_width += '"' + matterport_width + '" '; + } else { + frame_width += '"" '; + } + if (matterport_height !== undefined) { + frame_height += '"' + matterport_height + '" '; + } else { + frame_height += '"" '; + } + if (matterport_parameters === undefined) { + return ""; + } + + matterport_frame = ''; + return matterport_frame; + }); + }, + "fallback": function () { + "use strict"; + var id = 'matterport'; + tarteaucitron.fallback(['matterport'], function (elem) { + elem.style.width = elem.getAttribute('width') + 'px'; + elem.style.height = elem.getAttribute('height') + 'px'; + return tarteaucitron.engage(id); + }); + } +}; + +// Adform +tarteaucitron.services.adform = { + "key": "adform", + "type": "ads", + "name": "Adform", + "uri": "https://site.adform.com/privacy-center/overview/", + "needConsent": true, + "cookies": [], + "js": function () { + "use strict"; + + if (tarteaucitron.user.adformpm === undefined || tarteaucitron.user.adformpagename === undefined) { + return; + } + + window._adftrack = { + pm: tarteaucitron.user.adformpm, + divider: encodeURIComponent('|'), + pagename: encodeURIComponent(tarteaucitron.user.adformpagename) + }; + + tarteaucitron.addScript("https://track.adform.net/serving/scripts/trackpoint/async/"); + } +}; + +// Active Campaign +tarteaucitron.services.activecampaign = { + "key": "activecampaign", + "type": "ads", + "name": "Active Campaign", + "uri": "https://www.activecampaign.com/privacy-policy/", + "needConsent": true, + "cookies": [], + "js": function () { + "use strict"; + if (tarteaucitron.user.actid === undefined) { + return; + } + + window.trackcmp_email = ''; + + tarteaucitron.addScript('https://trackcmp.net/visit?actid='+tarteaucitron.user.actid+'&e='+encodeURIComponent(trackcmp_email)+'&r='+encodeURIComponent(document.referrer)+'&u='+encodeURIComponent(window.location.href)); + } +}; + +// tawk.to +tarteaucitron.services.tawkto = { + "key": "tawkto", + "type": "support", + "name": "Tawk.to chat", + "uri": "https://www.tawk.to/data-protection/", + "needConsent": true, + "cookies": [], + "js": function () { + "use strict"; + if (tarteaucitron.user.tawktoId === undefined) { + return; + } + + window.Tawk_API=window.Tawk_API||{}; + window.Tawk_LoadStart=new Date(); + + tarteaucitron.addScript('https://embed.tawk.to/' + tarteaucitron.user.tawktoId + '/default'); + } + +}; + +// getquanty +tarteaucitron.services.getquanty = { + "key": "getquanty", + "type": "analytic", + "name": "GetQuanty", + "uri": "https://www.getquanty.com/mentions-legales/", + "needConsent": true, + "cookies": [], + "js": function () { + "use strict"; + if (tarteaucitron.user.getguanty === undefined) { + return; + } + + window.webleads_site_ids = window.webleads_site_ids || []; + window.webleads_site_ids.push(tarteaucitron.user.getguanty); + + tarteaucitron.addScript('https://stats.webleads-tracker.com/js'); + tarteaucitron.addScript('https://get.smart-data-systems.com/track?site_id=' + tarteaucitron.user.getguanty); + } +};