Files
discourse-matomo-analytics/javascripts/discourse/api-initializers/init-theme.js
T

61 lines
1.8 KiB
JavaScript

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
api.onPageChange((url, title) => {
const currentUser = api.getCurrentUser();
if (settings.exclude_groups.trim() && currentUser) {
const excludedGroups = settings.exclude_groups
.split(",")
.map((g) => g.trim());
const currentUserGroups = currentUser.groups.map((g) => g.name);
if (excludedGroups.filter((g) => currentUserGroups.includes(g)).length) {
return;
}
}
const _paq = (window._paq = window._paq || []);
window._paq_loaded = window._paq_loaded || false;
if (!window._paq_loaded) {
let u = `//${settings.host_url}/`;
_paq.push(["setTrackerUrl", u + "piwik.php"]);
_paq.push(["setSiteId", settings.website_id]);
let d = document,
g = d.createElement("script"),
s = d.getElementsByTagName("script")[0];
g.type = "text/javascript";
g.async = true;
g.defer = true;
g.src = u + "piwik.js";
s.parentNode.insertBefore(g, s);
window._paq_loaded = true;
}
const userIdField = settings.user_id_tracking.trim();
if (userIdField && currentUser && currentUser[userIdField]) {
_paq.push(["setUserId", currentUser[userIdField]]);
}
if (settings.subdomain_tracking) {
const allDomains =
"*" + document.domain.substring(document.domain.indexOf("."));
_paq.push(["setCookieDomain", allDomains]);
_paq.push(["setDomains", allDomains]);
}
if (settings.do_not_track) {
_paq.push(["setDoNotTrack", true]);
}
if (settings.disable_cookies) {
_paq.push(["disableCookies"]);
}
_paq.push(["setCustomUrl", url]);
_paq.push(["setDocumentTitle", title]);
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
});
});