« MediaWiki:Matomo-opt-out.js » : différence entre les versions

De Wiki Campus Cyber
Aller à :navigation, rechercher
Aucun résumé des modifications
Aucun résumé des modifications
 
(6 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
    var settings = {"showIntro":true,"divId":"matomo-opt-out","useSecureCookies":true,"cookiePath":null,"cookieDomain":null,"cookieSameSite":"Lax","OptOutComplete":"Cookie d'exclusion install\u00e9. Vos visites sur ce site web ne seront PAS enregistr\u00e9es par notre outil d'analyse web.","OptOutCompleteBis":"Note\u00a0: si vous nettoyez vos cookies et supprimez le cookie d'exclusion, ou bien si vous changez d'ordinateur et\/ou de navigateur, il vous faudra de nouveau effectuer la proc\u00e9dure d'exclusion.","YouMayOptOut2":"Vous pouvez vous opposer au suivi de votre navigation sur ce site web.","YouMayOptOut3":"Cela prot\u00e9gera votre vie priv\u00e9e, mais emp\u00eachera \u00e9galement le propri\u00e9taire d'apprendre de vos actions et de cr\u00e9er une meilleure exp\u00e9rience pour vous et les autres utilisateurs.","OptOutErrorNoCookies":"La fonctionnalit\u00e9 de d\u00e9sactivation du suivi n\u00e9cessite que les cookies soient autoris\u00e9s.","OptOutErrorNotHttps":"La fonctionnalit\u00e9 de d\u00e9sactivation du suivi pourrait ne pas fonctionner car ce site n'a pas \u00e9t\u00e9 charg\u00e9 en HTTPS. Veuillez recharger la page pour v\u00e9rifier que le statut de ce suivi a bien \u00e9t\u00e9 chang\u00e9.","YouAreNotOptedOut":"Vous n'\u00eates pas exclu(e).","UncheckToOptOut":"D\u00e9cochez cette case pour vous exclure.","YouAreOptedOut":"Vous n'\u00eates actuellement pas suivi(e).","CheckToOptIn":"Cochez cette case pour ne plus \u00eatre exclu(e)."};       
var settings = {
    document.addEventListener('DOMContentLoaded', function() {                           
  showIntro: true,
        window.MatomoConsent.init(settings.useSecureCookies, settings.cookiePath, settings.cookieDomain, settings.cookieSameSite);               
  divId: 'matomo-opt-out',
        showContent(window.MatomoConsent.hasConsent());       
  useSecureCookies: true,
    });   
  cookiePath: null,
   
  cookieDomain: null,
        function showContent(consent, errorMessage = null, useTracker = false) {
  cookieSameSite: 'Lax',
   
  OptOutComplete: "Cookie d'exclusion install\u00e9. Vos visites sur ce site web ne seront PAS enregistr\u00e9es par notre outil d'analyse web.",
            var errorBlock = '<p style="color: red; font-weight: bold;">';
  OptOutCompleteBis: "Note\u00a0: si vous nettoyez vos cookies et supprimez le cookie d'exclusion, ou bien si vous changez d'ordinateur et\/ou de navigateur, il vous faudra de nouveau effectuer la proc\u00e9dure d'exclusion.",
   
  YouMayOptOut2: 'Vous pouvez vous opposer au suivi de votre navigation sur ce site web.',
            var div = document.getElementById(settings.divId);
  YouMayOptOut3: "Cela prot\u00e9gera votre vie priv\u00e9e, mais emp\u00eachera \u00e9galement le propri\u00e9taire d'apprendre de vos actions et de cr\u00e9er une meilleure exp\u00e9rience pour vous et les autres utilisateurs.",
            if (!div) {
  OptOutErrorNoCookies: 'La fonctionnalit\u00e9 de d\u00e9sactivation du suivi n\u00e9cessite que les cookies soient autoris\u00e9s.',
                const warningDiv = document.createElement("div");
  OptOutErrorNotHttps: "La fonctionnalit\u00e9 de d\u00e9sactivation du suivi pourrait ne pas fonctionner car ce site n'a pas \u00e9t\u00e9 charg\u00e9 en HTTPS. Veuillez recharger la page pour v\u00e9rifier que le statut de ce suivi a bien \u00e9t\u00e9 chang\u00e9.",
                var msg = 'Unable to find opt-out content div: "'+settings.divId+'"';
  YouAreNotOptedOut: "Vous n'\u00eates pas exclu(e).",
                warningDiv.id = settings.divId+'-warning';
  UncheckToOptOut: 'D\u00e9cochez cette case pour vous exclure.',
                warningDiv.innerHTML = errorBlock+msg+'</p>';
  YouAreOptedOut: "Vous n'\u00eates actuellement pas suivi(e).",
                document.body.insertBefore(warningDiv, document.body.firstChild);
  CheckToOptIn: 'Cochez cette case pour ne plus \u00eatre exclu(e).',
                console.log(msg);
};
                return;
            }
           
            if (!navigator || !navigator.cookieEnabled) {
                div.innerHTML = errorBlock+settings.OptOutErrorNoCookies+'</p>';
                return;
            }
            if (location.protocol !== 'https:') {
                div.innerHTML = errorBlock+settings.OptOutErrorNotHttps+'</p>';
                return;
            }       
            if (errorMessage !== null) {
                div.innerHTML = errorBlock+errorMessage+'</p>';
                return;
            }
            var content = '';       
            if (consent) {
                if (settings.showIntro) {
                    content += '<p>'+settings.YouMayOptOut2+' '+settings.YouMayOptOut3+'</p>';                     
                }
                if (useTracker) {
                    content += '<input onclick="_paq.push([\'optUserOut\']);showContent(false, null, true);" id="trackVisits" type="checkbox" checked="checked" />';
                } else {
                    content += '<input onclick="window.MatomoConsent.consentRevoked();showContent(false);" id="trackVisits" type="checkbox" checked="checked" />';
                }
                content += '<label for="trackVisits"><strong><span>'+settings.YouAreNotOptedOut+' '+settings.UncheckToOptOut+'</span></strong></label>';                             
            } else {
                if (settings.showIntro) {
                    content += '<p>'+settings.OptOutComplete+' '+settings.OptOutCompleteBis+'</p>';
                }
                if (useTracker) {
                    content += '<input onclick="_paq.push([\'forgetUserOptOut\']);showContent(true, null, true);" id="trackVisits" type="checkbox" />';
                } else {
                    content += '<input onclick="window.MatomoConsent.consentGiven();showContent(true);" id="trackVisits" type="checkbox" />';
                }
                content += '<label for="trackVisits"><strong><span>'+settings.YouAreOptedOut+' '+settings.CheckToOptIn+'</span></strong></label>';
            }                 
            div.innerHTML = content;     
        }; 


        window.MatomoConsent = {                        
function showContent(consent, errorMessage = null, useTracker = false) {
            cookiesDisabled: (!navigator || !navigator.cookieEnabled),      
  const errorBlock = '<p style="color: red; font-weight: bold;">';
            CONSENT_COOKIE_NAME: 'mtm_consent', CONSENT_REMOVED_COOKIE_NAME: 'mtm_consent_removed',  
 
            cookieIsSecure: false, useSecureCookies: true, cookiePath: '', cookieDomain: '', cookieSameSite: 'Lax',    
  const div = document.getElementById(settings.divId);
            init: function(useSecureCookies, cookiePath, cookieDomain, cookieSameSite) {
  if (!div) {
                this.useSecureCookies = useSecureCookies; this.cookiePath = cookiePath;
    const warningDiv = document.createElement('div');
                this.cookieDomain = cookieDomain; this.cookieSameSite = cookieSameSite;
    const msg = `Unable to find opt-out content div: "${settings.divId}"`;
                if(useSecureCookies && location.protocol !== 'https:') {
    warningDiv.id = `${settings.divId}-warning`;
                    console.log('Error with setting useSecureCookies: You cannot use this option on http.');            
    warningDiv.innerHTML = `${errorBlock + msg}</p>`;
                } else {
    document.body.insertBefore(warningDiv, document.body.firstChild);
                    this.cookieIsSecure = useSecureCookies;
    console.log(msg);
                }
    return;
            },              
  }
            hasConsent: function() {
  if (!navigator || !navigator.cookieEnabled) {
                var consentCookie = this.getCookie(this.CONSENT_COOKIE_NAME);
    div.innerHTML = `${errorBlock + settings.OptOutErrorNoCookies}</p>`;
                var removedCookie = this.getCookie(this.CONSENT_REMOVED_COOKIE_NAME);
    return;
                if (!consentCookie && !removedCookie) {
  }
                    return true; // No cookies set, so opted in
  if (location.protocol !== 'https:') {
                }
    div.innerHTML = `${errorBlock + settings.OptOutErrorNotHttps}</p>`;
                if (removedCookie && consentCookie) {              
    return;
                    this.setCookie(this.CONSENT_COOKIE_NAME, '', -129600000);            
  }
                    return false;
  if (errorMessage !== null) {
                }              
    div.innerHTML = `${errorBlock + errorMessage}</p>`;
                return (consentCookie || consentCookie !== 0);          
    return;
            },      
  }
            consentGiven: function() {                                                      
  let content = '';
                this.setCookie(this.CONSENT_REMOVED_COOKIE_NAME, '', -129600000);
  if (consent) {
                this.setCookie(this.CONSENT_COOKIE_NAME, new Date().getTime(), 946080000000);
    if (settings.showIntro) {
            },    
      content += `<p>${settings.YouMayOptOut2} ${settings.YouMayOptOut3}</p>`;
            consentRevoked: function() {  
    }
                this.setCookie(this.CONSENT_COOKIE_NAME, '', -129600000);
    if (useTracker) {
                this.setCookie(this.CONSENT_REMOVED_COOKIE_NAME, new Date().getTime(), 946080000000);              
      content += '<input onclick="_paq.push([\'optUserOut\']);showContent(false, null, true);" id="trackVisits" type="checkbox" checked="checked" />';
            },                  
    } else {
            getCookie: function(cookieName) {          
      content += '<input onclick="window.MatomoConsent.consentRevoked();showContent(false);" id="trackVisits" type="checkbox" checked="checked" />';
                var cookiePattern = new RegExp('(^|;)[ ]*' + cookieName + '=([^;]*)'), cookieMatch = cookiePattern.exec(document.cookie);
    }
                return cookieMatch ? window.decodeURIComponent(cookieMatch[2]) : 0;
    content += `<label for="trackVisits"><strong><span>${settings.YouAreNotOptedOut} ${settings.UncheckToOptOut}</span></strong></label>`;
            },      
  } else {
            setCookie: function(cookieName, value, msToExpire) {                      
    if (settings.showIntro) {
                var expiryDate = new Date();
      content += `<p>${settings.OptOutComplete} ${settings.OptOutCompleteBis}</p>`;
                expiryDate.setTime((new Date().getTime()) + msToExpire);          
    }
                document.cookie = cookieName + '=' + window.encodeURIComponent(value) +
    if (useTracker) {
                    (msToExpire ? ';expires=' + expiryDate.toGMTString() : '') +
      content += '<input onclick="_paq.push([\'forgetUserOptOut\']);showContent(true, null, true);" id="trackVisits" type="checkbox" />';
                    ';path=' + (this.cookiePath || '/') +
    } else {
                    (this.cookieDomain ? ';domain=' + this.cookieDomain : '') +
      content += '<input onclick="window.MatomoConsent.consentGiven();showContent(true);" id="trackVisits" type="checkbox" />';
                    (this.cookieIsSecure ? ';secure' : '') +
    }
                    ';SameSite=' + this.cookieSameSite;              
    content += `<label for="trackVisits"><strong><span>${settings.YouAreOptedOut} ${settings.CheckToOptIn}</span></strong></label>`;
                if ((!msToExpire || msToExpire >= 0) && this.getCookie(cookieName) !== String(value)) {
  }
                    console.log('There was an error setting cookie `' + cookieName + '`. Please check domain and path.');              
  div.innerHTML = content;
                }
}
            }
 
        };
window.MatomoConsent = {
  cookiesDisabled: (!navigator || !navigator.cookieEnabled),
  CONSENT_COOKIE_NAME: 'mtm_consent',
  CONSENT_REMOVED_COOKIE_NAME: 'mtm_consent_removed',
  cookieIsSecure: false,
  useSecureCookies: true,
  cookiePath: '',
  cookieDomain: '',
  cookieSameSite: 'Lax',
  init(useSecureCookies, cookiePath, cookieDomain, cookieSameSite) {
    this.useSecureCookies = useSecureCookies; this.cookiePath = cookiePath;
    this.cookieDomain = cookieDomain; this.cookieSameSite = cookieSameSite;
    if (useSecureCookies && location.protocol !== 'https:') {
      console.log('Error with setting useSecureCookies: You cannot use this option on http.');
    } else {
      this.cookieIsSecure = useSecureCookies;
    }
  },
  hasConsent() {
    const consentCookie = this.getCookie(this.CONSENT_COOKIE_NAME);
    const removedCookie = this.getCookie(this.CONSENT_REMOVED_COOKIE_NAME);
    if (!consentCookie && !removedCookie) {
      return true; // No cookies set, so opted in
    }
    if (removedCookie && consentCookie) {
      this.setCookie(this.CONSENT_COOKIE_NAME, '', -129600000);
      return false;
    }
    return (consentCookie || consentCookie !== 0);
  },
  consentGiven() {
    this.setCookie(this.CONSENT_REMOVED_COOKIE_NAME, '', -129600000);
    this.setCookie(this.CONSENT_COOKIE_NAME, new Date().getTime(), 946080000000);
  },
  consentRevoked() {
    this.setCookie(this.CONSENT_COOKIE_NAME, '', -129600000);
    this.setCookie(this.CONSENT_REMOVED_COOKIE_NAME, new Date().getTime(), 946080000000);
  },
  getCookie(cookieName) {
    const cookiePattern = new RegExp(`(^|;)[ ]*${cookieName}=([^;]*)`); const
      cookieMatch = cookiePattern.exec(document.cookie);
    return cookieMatch ? window.decodeURIComponent(cookieMatch[2]) : 0;
  },
  setCookie(cookieName, value, msToExpire) {
    const expiryDate = new Date();
    expiryDate.setTime((new Date().getTime()) + msToExpire);
    document.cookie = `${cookieName}=${window.encodeURIComponent(value)
    }${msToExpire ? `;expires=${expiryDate.toGMTString()}` : ''
    };path=${this.cookiePath || '/'
    }${this.cookieDomain ? `;domain=${this.cookieDomain}` : ''
    }${this.cookieIsSecure ? ';secure' : ''
    };SameSite=${this.cookieSameSite}`;
    if ((!msToExpire || msToExpire >= 0) && this.getCookie(cookieName) !== String(value)) {
      console.log(`There was an error setting cookie \`${cookieName}\`. Please check domain and path.`);
    }
  },
};
document.addEventListener('DOMContentLoaded', () => {
  window.MatomoConsent.init(settings.useSecureCookies, settings.cookiePath, settings.cookieDomain, settings.cookieSameSite);
  showContent(window.MatomoConsent.hasConsent());
});

Dernière version du 15 novembre 2023 à 15:44

var settings = {
  showIntro: true,
  divId: 'matomo-opt-out',
  useSecureCookies: true,
  cookiePath: null,
  cookieDomain: null,
  cookieSameSite: 'Lax',
  OptOutComplete: "Cookie d'exclusion install\u00e9. Vos visites sur ce site web ne seront PAS enregistr\u00e9es par notre outil d'analyse web.",
  OptOutCompleteBis: "Note\u00a0: si vous nettoyez vos cookies et supprimez le cookie d'exclusion, ou bien si vous changez d'ordinateur et\/ou de navigateur, il vous faudra de nouveau effectuer la proc\u00e9dure d'exclusion.",
  YouMayOptOut2: 'Vous pouvez vous opposer au suivi de votre navigation sur ce site web.',
  YouMayOptOut3: "Cela prot\u00e9gera votre vie priv\u00e9e, mais emp\u00eachera \u00e9galement le propri\u00e9taire d'apprendre de vos actions et de cr\u00e9er une meilleure exp\u00e9rience pour vous et les autres utilisateurs.",
  OptOutErrorNoCookies: 'La fonctionnalit\u00e9 de d\u00e9sactivation du suivi n\u00e9cessite que les cookies soient autoris\u00e9s.',
  OptOutErrorNotHttps: "La fonctionnalit\u00e9 de d\u00e9sactivation du suivi pourrait ne pas fonctionner car ce site n'a pas \u00e9t\u00e9 charg\u00e9 en HTTPS. Veuillez recharger la page pour v\u00e9rifier que le statut de ce suivi a bien \u00e9t\u00e9 chang\u00e9.",
  YouAreNotOptedOut: "Vous n'\u00eates pas exclu(e).",
  UncheckToOptOut: 'D\u00e9cochez cette case pour vous exclure.',
  YouAreOptedOut: "Vous n'\u00eates actuellement pas suivi(e).",
  CheckToOptIn: 'Cochez cette case pour ne plus \u00eatre exclu(e).',
};

function showContent(consent, errorMessage = null, useTracker = false) {
  const errorBlock = '<p style="color: red; font-weight: bold;">';

  const div = document.getElementById(settings.divId);
  if (!div) {
    const warningDiv = document.createElement('div');
    const msg = `Unable to find opt-out content div: "${settings.divId}"`;
    warningDiv.id = `${settings.divId}-warning`;
    warningDiv.innerHTML = `${errorBlock + msg}</p>`;
    document.body.insertBefore(warningDiv, document.body.firstChild);
    console.log(msg);
    return;
  }
  if (!navigator || !navigator.cookieEnabled) {
    div.innerHTML = `${errorBlock + settings.OptOutErrorNoCookies}</p>`;
    return;
  }
  if (location.protocol !== 'https:') {
    div.innerHTML = `${errorBlock + settings.OptOutErrorNotHttps}</p>`;
    return;
  }
  if (errorMessage !== null) {
    div.innerHTML = `${errorBlock + errorMessage}</p>`;
    return;
  }
  let content = '';
  if (consent) {
    if (settings.showIntro) {
      content += `<p>${settings.YouMayOptOut2} ${settings.YouMayOptOut3}</p>`;
    }
    if (useTracker) {
      content += '<input onclick="_paq.push([\'optUserOut\']);showContent(false, null, true);" id="trackVisits" type="checkbox" checked="checked" />';
    } else {
      content += '<input onclick="window.MatomoConsent.consentRevoked();showContent(false);" id="trackVisits" type="checkbox" checked="checked" />';
    }
    content += `<label for="trackVisits"><strong><span>${settings.YouAreNotOptedOut} ${settings.UncheckToOptOut}</span></strong></label>`;
  } else {
    if (settings.showIntro) {
      content += `<p>${settings.OptOutComplete} ${settings.OptOutCompleteBis}</p>`;
    }
    if (useTracker) {
      content += '<input onclick="_paq.push([\'forgetUserOptOut\']);showContent(true, null, true);" id="trackVisits" type="checkbox" />';
    } else {
      content += '<input onclick="window.MatomoConsent.consentGiven();showContent(true);" id="trackVisits" type="checkbox" />';
    }
    content += `<label for="trackVisits"><strong><span>${settings.YouAreOptedOut} ${settings.CheckToOptIn}</span></strong></label>`;
  }
  div.innerHTML = content;
}

window.MatomoConsent = {
  cookiesDisabled: (!navigator || !navigator.cookieEnabled),
  CONSENT_COOKIE_NAME: 'mtm_consent',
  CONSENT_REMOVED_COOKIE_NAME: 'mtm_consent_removed',
  cookieIsSecure: false,
  useSecureCookies: true,
  cookiePath: '',
  cookieDomain: '',
  cookieSameSite: 'Lax',
  init(useSecureCookies, cookiePath, cookieDomain, cookieSameSite) {
    this.useSecureCookies = useSecureCookies; this.cookiePath = cookiePath;
    this.cookieDomain = cookieDomain; this.cookieSameSite = cookieSameSite;
    if (useSecureCookies && location.protocol !== 'https:') {
      console.log('Error with setting useSecureCookies: You cannot use this option on http.');
    } else {
      this.cookieIsSecure = useSecureCookies;
    }
  },
  hasConsent() {
    const consentCookie = this.getCookie(this.CONSENT_COOKIE_NAME);
    const removedCookie = this.getCookie(this.CONSENT_REMOVED_COOKIE_NAME);
    if (!consentCookie && !removedCookie) {
      return true; // No cookies set, so opted in
    }
    if (removedCookie && consentCookie) {
      this.setCookie(this.CONSENT_COOKIE_NAME, '', -129600000);
      return false;
    }
    return (consentCookie || consentCookie !== 0);
  },
  consentGiven() {
    this.setCookie(this.CONSENT_REMOVED_COOKIE_NAME, '', -129600000);
    this.setCookie(this.CONSENT_COOKIE_NAME, new Date().getTime(), 946080000000);
  },
  consentRevoked() {
    this.setCookie(this.CONSENT_COOKIE_NAME, '', -129600000);
    this.setCookie(this.CONSENT_REMOVED_COOKIE_NAME, new Date().getTime(), 946080000000);
  },
  getCookie(cookieName) {
    const cookiePattern = new RegExp(`(^|;)[ ]*${cookieName}=([^;]*)`); const
      cookieMatch = cookiePattern.exec(document.cookie);
    return cookieMatch ? window.decodeURIComponent(cookieMatch[2]) : 0;
  },
  setCookie(cookieName, value, msToExpire) {
    const expiryDate = new Date();
    expiryDate.setTime((new Date().getTime()) + msToExpire);
    document.cookie = `${cookieName}=${window.encodeURIComponent(value)
    }${msToExpire ? `;expires=${expiryDate.toGMTString()}` : ''
    };path=${this.cookiePath || '/'
    }${this.cookieDomain ? `;domain=${this.cookieDomain}` : ''
    }${this.cookieIsSecure ? ';secure' : ''
    };SameSite=${this.cookieSameSite}`;
    if ((!msToExpire || msToExpire >= 0) && this.getCookie(cookieName) !== String(value)) {
      console.log(`There was an error setting cookie \`${cookieName}\`. Please check domain and path.`);
    }
  },
};
document.addEventListener('DOMContentLoaded', () => {
  window.MatomoConsent.init(settings.useSecureCookies, settings.cookiePath, settings.cookieDomain, settings.cookieSameSite);
  showContent(window.MatomoConsent.hasConsent());
});