Skip to content
This repository was archived by the owner on Apr 2, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
313 changes: 17 additions & 296 deletions distros/dataverse.no/modification/analytics.xhtml
Original file line number Diff line number Diff line change
@@ -1,303 +1,24 @@

<script type="text/javascript">
var _paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['setDownloadClasses', "btn-download"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//www.ub.uit.no/matomo/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '6']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
(function () {
var u = "https://www.ub.uit.no/matomo/";
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '6']);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.type = 'text/javascript'; g.async = true; g.defer = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s);
})();
</script>
<!-- End Matomo Code -->

<noscript>
<!-- Matomo Image Tracker-->
<img src="https://www.ub.uit.no/matomo/matomo.php?idsite=6&amp;rec=1" style="border:0" alt="" />
<!-- End Matomo -->
</noscript>

<style>
#dvfooter button#tracking-manager {
background: none;
border: none;
color: #337ab7;
}
#dvfooter button#tracking-manager:hover {
cursor: pointer;
text-decoration: underline;
}
#dvfooter #tracking-modal {
visibility: hidden;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0, 0, 0);
background-color: rgba(0, 0, 0, 0.5);
opacity: 0;
transform: scale(1.1);
transition: visibility 0s linear 0.25s, opacity 0.25s 0s, transform 0.25s;
z-index: 1000;
}
#dvfooter #tracking-modal.show-modal {
opacity: 1;
visibility: visible;
transform: scale(1.0);
transition: visibility 0s linear 0s, opacity 0.25s 0s, transform 0.25s;
}
#dvfooter #tracking-modal .modal-content {
position: absolute;
top: 50%;
left: 50%;
background-color: #fefefe;
padding: 20px;
border: 1px solid #888;
width: 80%;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
transform: translate(-50%, -50%);
}
#dvfooter #tracking-modal .modal-content .modal-header {
padding: 2px 16px;
}
#dvfooter #tracking-modal .modal-content .modal-header .close {
color: black;
cursor: pointer;
float: right;
font-size: 28px;
font-weight: bold;
}
#dvfooter #tracking-modal .modal-content .modal-header .close:hover,
#dvfooter #tracking-modal .modal-content .modal-header .close:focus {
color: black;
text-decoration: none;
}
#dvfooter #tracking-modal .modal-content .modal-body {
border-top: 1px solid #e0e0e0;
padding: 10px 16px;
}
#dvfooter #tracking-modal .modal-content .modal-body iframe {
border: 0;
width: 100%;
}
#dvfooter #tracking-modal .modal-content .modal-body span,
#dvfooter #tracking-modal .modal-content .modal-body #text-load-error div {
margin-top: 1em;
white-space: pre-wrap;
}
#dvfooter #tracking-modal .modal-content .modal-body label {
display: block;
font-weight: bold;
padding-top: 15px;
}
#dvfooter #tracking-modal .modal-content .modal-body label input#track-visits {
margin-right: 10px;
}
</style>
<script>
"use strict";
(() => {
const modalTrackingLabels = {
"en": {
"title": "Manage tracking",
"load-error": "The user analysis module did not load properly.\nPlease reload the page later, or check if a tool integrated to your browser does not prevent the module loading.",
"load-error-more-infos": "You may find find more informations about our user analytics in our",
"load-error-more-infos-link": "https://site.uit.no/dataverseno/about/policy-framework/access-and-use-policy/",
"load-error-more-infos-link-text": "Privacy policy",
"dnt": "We have considered your browser settings. Your visits to this web site will not be recorded by our web analysis tool.\nIf you wish to allow tracking, please remove the \"Do Not Track\" setting from your browser.",
"opt-in": "Opt-out cookie installed. Your visits to this web site will not be recorded by our web analytics tool.\nNote: if you clean up your cookies and delete the opt-out cookie, or if you change your computer and/or browser, you will need to perform the opt-out procedure again.",
"checkbox-opt-in": "You are not currently being tracked. Check this box to stop being excluded.",
"opt-out": "You may opt-out of having your browsing on this site tracked.\nThis will also prevent DataverseNO from learning about your actions and creating a better experience for you and other users.",
"checkbox-opt-out": "You are not opted out. Uncheck this box to opt-out.",
},
}

function createModalMatomo(lang) {
const modal = document.createElement("div");
modal.className = "tracking-modal";
modal.id = "tracking-modal";

const modalContent = document.createElement("div");
modalContent.className = "modal-content";
modal.appendChild(modalContent);

const modalContentHeader = document.createElement("div");
modalContentHeader.className = "modal-header";
modalContent.appendChild(modalContentHeader);

const modalContentHeaderClose = document.createElement("span");
modalContentHeaderClose.className = "close";
modalContentHeaderClose.innerHTML = "&times;";
modalContentHeader.appendChild(modalContentHeaderClose);

const modalContentHeaderTitle = document.createElement("h2");
modalContentHeaderTitle.textContent = modalTrackingLabels[lang]["title"];
modalContentHeader.appendChild(modalContentHeaderTitle);

const modalContentBody = document.createElement("div");
modalContentBody.className = "modal-body";
modalContent.appendChild(modalContentBody);

const modalContentBodyNoScript = document.createElement("noscript");
modalContentBody.appendChild(modalContentBodyNoScript);

const modalContentBodyIframe = document.createElement("iframe");
modalContentBodyIframe.src = "https://www.ub.uit.no/matomo/index.php?module=CoreAdminHome&action=optOut&language=en&backgroundColor=ffffff&fontColor=000000&fontFamily=sans-serif";
modalContentBodyNoScript.appendChild(modalContentBodyIframe);

const modalContentBodyBodyLoadError = document.createElement("div");
modalContentBodyBodyLoadError.id = "text-load-error";

const modalContentBodyTextLoadError = document.createElement("span");
modalContentBodyTextLoadError.textContent = modalTrackingLabels[lang]["load-error"];
modalContentBodyBodyLoadError.appendChild(modalContentBodyTextLoadError);

const modalContentBodyMoreInfosLoadError = document.createElement("div");
const loadErrorMoreInfos = modalTrackingLabels[lang]["load-error-more-infos"];
modalContentBodyMoreInfosLoadError.textContent = loadErrorMoreInfos.endsWith(" ") ? loadErrorMoreInfos : `${loadErrorMoreInfos} `;
const modalContentBodyMoreInfosLinkLoadError = document.createElement("a");
modalContentBodyMoreInfosLinkLoadError.href = modalTrackingLabels[lang]["load-error-more-infos-link"];
modalContentBodyMoreInfosLinkLoadError.title = modalTrackingLabels[lang]["load-error-more-infos-link-text"];
modalContentBodyMoreInfosLinkLoadError.textContent = modalTrackingLabels[lang]["load-error-more-infos-link-text"];
modalContentBodyMoreInfosLinkLoadError.target = "_blank";
modalContentBodyMoreInfosLoadError.appendChild(modalContentBodyMoreInfosLinkLoadError);
modalContentBodyBodyLoadError.appendChild(modalContentBodyMoreInfosLoadError);

modalContentBody.appendChild(modalContentBodyBodyLoadError);
const modalContentBodyTextDnT = document.createElement("span");
modalContentBodyTextDnT.id = "text-dnt";
modalContentBodyTextDnT.classList.add("hidden");
modalContentBodyTextDnT.textContent = modalTrackingLabels[lang]["dnt"];
modalContentBody.appendChild(modalContentBodyTextDnT);

const modalContentBodyTextOptIn = document.createElement("span");
modalContentBodyTextOptIn.id = "text-opt-in";
modalContentBodyTextOptIn.classList.add("hidden");
modalContentBodyTextOptIn.textContent = modalTrackingLabels[lang]["opt-in"];
modalContentBody.appendChild(modalContentBodyTextOptIn);

const modalContentBodyTextOptOut = document.createElement("span");
modalContentBodyTextOptOut.id = "text-opt-out";
modalContentBodyTextOptOut.classList.add("hidden");
modalContentBodyTextOptOut.textContent = modalTrackingLabels[lang]["opt-out"];
modalContentBody.appendChild(modalContentBodyTextOptOut);

const modalContentBodyForm = document.createElement("label");
modalContentBodyForm.setAttribute("for", "track-visits");
modalContentBody.appendChild(modalContentBodyForm);

const modalContentBodyFormInput = document.createElement("input");
modalContentBodyFormInput.id = "track-visits";
modalContentBodyFormInput.classList.add("hidden");
modalContentBodyFormInput.setAttribute("type", "checkbox");
modalContentBodyFormInput.setAttribute("name", "track-visits");
modalContentBodyForm.appendChild(modalContentBodyFormInput);

const modalContentBodyFormOptIn = document.createElement("span");
modalContentBodyFormOptIn.id = "label-opt-in";
modalContentBodyFormOptIn.classList.add("hidden");
modalContentBodyFormOptIn.textContent = modalTrackingLabels[lang]["checkbox-opt-in"];
modalContentBodyForm.appendChild(modalContentBodyFormOptIn);

const modalContentBodyFormOptOut = document.createElement("span");
modalContentBodyFormOptOut.id = "label-opt-out";
modalContentBodyFormOptOut.classList.add("hidden");
modalContentBodyFormOptOut.textContent = modalTrackingLabels[lang]["checkbox-opt-out"];
modalContentBodyForm.appendChild(modalContentBodyFormOptOut);

document.querySelector("#dvfooter").insertAdjacentElement("beforeend", modal);
}

addEventListener("DOMContentLoaded", (event) => {
let lang = document.querySelector("html").getAttribute("lang");
if (!lang) {
lang = "en"
}
createModalMatomo(lang);

const modal = document.getElementById("tracking-modal");
const trigger = document.getElementById("tracking-manager");
const closeButton = modal.querySelector(".close");

function toggleModal() {
modal.classList.toggle("show-modal");
}

function windowOnClick(event) {
if (event.target === modal) {
toggleModal();
}
}

function setOptOutText(element) {
_paq.push([function() {
const textLoadError = document.getElementById("text-load-error");
const textOptIn = document.getElementById("text-opt-in");
const textOptOut = document.getElementById("text-opt-out");
const labelOptIn = document.getElementById("label-opt-in");
const labelOptOut = document.getElementById("label-opt-out");
if (!textLoadError.classList.contains("hidden")) {
textLoadError.classList.add("hidden");
document.getElementById("track-visits").classList.remove("hidden");
}
if (this.isUserOptedOut()) {
element.checked = false;
if (!textOptOut.classList.contains("hidden")) {
textOptOut.classList.add("hidden");
}
if (!labelOptOut.classList.contains("hidden")) {
labelOptOut.classList.add("hidden");
}
if (textOptIn.classList.contains("hidden")) {
textOptIn.classList.remove("hidden");
}
if (labelOptIn.classList.contains("hidden")) {
labelOptIn.classList.remove("hidden");
}
} else {
element.checked = true;
if (textOptOut.classList.contains("hidden")) {
textOptOut.classList.remove("hidden");
}
if (labelOptOut.classList.contains("hidden")) {
labelOptOut.classList.remove("hidden");
}
if (!textOptIn.classList.contains("hidden")) {
textOptIn.classList.add("hidden");
}
if (!labelOptIn.classList.contains("hidden")) {
labelOptIn.classList.add("hidden");
}
}
}]);
}

const checkbox = document.getElementById("track-visits");
if (navigator.doNotTrack === "yes" || navigator.doNotTrack === "1") {
document.getElementById("text-dnt").classList.remove("hidden");
document.getElementById("text-load-error").classList.add("hidden");
checkbox.classList.add("hidden");
} else {
checkbox.addEventListener("click", function() {
if (this.checked) {
_paq.push(['forgetUserOptOut']);
} else {
_paq.push(['optUserOut']);
}
setOptOutText(checkbox);
});
setOptOutText(checkbox);
}

trigger.addEventListener("click", toggleModal);
closeButton.addEventListener("click", toggleModal);
window.addEventListener("click", windowOnClick);
});
})();
</script>



</script>
<!-- End Matomo Code -->

<noscript>
<!-- Matomo Image Tracker-->
<img src="https://www.ub.uit.no/matomo/matomo.php?idsite=6&amp;rec=1" style="border:0" alt="" />
<!-- End Matomo -->
</noscript>
Loading