This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/initializers/page-tracking.js.es6

50 lines
1.4 KiB
JavaScript

import { cleanDOM } from 'discourse/lib/clean-dom';
import { startPageTracking } from 'discourse/lib/page-tracker';
import { viewTrackingRequired } from 'discourse/lib/ajax';
export default {
name: "page-tracking",
after: 'inject-objects',
initialize(container) {
// Tell our AJAX system to track a page transition
const router = container.lookup('router:main');
router.on('willTransition', viewTrackingRequired);
router.on('didTransition', cleanDOM);
let appEvents = container.lookup('app-events:main');
startPageTracking(router, appEvents);
// Out of the box, Discourse tries to track google analytics
// if it is present
if (typeof window._gaq !== 'undefined') {
appEvents.on('page:changed', data => {
window._gaq.push(["_set", "title", data.title]);
window._gaq.push(['_trackPageview', data.url]);
});
return;
}
// Also use Universal Analytics if it is present
if (typeof window.ga !== 'undefined') {
appEvents.on('page:changed', data => {
window.ga('send', 'pageview', {page: data.url, title: data.title});
});
}
// And Google Tag Manager too
if (typeof window.dataLayer !== 'undefined') {
appEvents.on('page:changed', data => {
window.dataLayer.push({
'event': 'virtualPageView',
'page': {
'title': data.title,
'url': data.url
}
});
});
}
}
};