Skip to content

Instantly share code, notes, and snippets.

@markstephens
Created August 17, 2015 10:59
Show Gist options
  • Save markstephens/f6e6e5451e95a3ff60db to your computer and use it in GitHub Desktop.
Save markstephens/f6e6e5451e95a3ff60db to your computer and use it in GitHub Desktop.
o-tracking ftcom
<script>
/*global Track,Origami, cutsTheMustard */
(function() {
"use strict";
if (typeof Track === "undefined") {
return;
}
var server = 'https://spoor-api.ft.com/px.gif',
passport_id = Track.Util.getValueFromCookie(/USERID=([0-9]+):/) || Track.Util.getValueFromCookie(/PID=([0-9]+)\_/),
ft_session = Track.Util.getValueFromCookie(/FTSession=([^;]+)/),
uuid = Track.Util.getValueFromUrl(/\/cms\/s?\/?\d?\/?([a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/) || Track.Util.getValueFromJsVariable("pageUUID"),
hurdle = Track.Util.getValueFromJsVariable("HurdleType"),
step_name = Track.Util.getValueFromJsVariable("sPageName"),
step_number = Track.Util.getValueFromJsVariable("sPageNumber"),
payment_term = Track.Util.getValueFromJsVariable("sPaymentTerm");
function otrackinginit() {
// oTracking
var oTracking = Origami['o-tracking'];
// Setup
oTracking.init({
server: server,
context: {
product: 'ft.com'
},
user: {
passport_id: passport_id,
ft_session: ft_session
}
});
// Track page
oTracking.page({
content: {
uuid: uuid,
hurdle: hurdle
},
step_name: step_name,
step_number: step_number,
payment_term: payment_term
});
// Rewrite iJento data
var old_data = Track.IJento.getSiTracker().trackData;
Track.IJento.getSiTracker().trackData = function (a) {
a = a.split('&').forEach(function(e) {
e = e.split("=");
var o_event = {
category: 'page',
action: 'supplement',
context: {}
};
o_event.context[e[0]] = e[1];
oTracking.event(new CustomEvent('oTracking.event', { detail: o_event }));
});
old_data.apply(this, arguments);
};
function rename(category, action, context) {
var tracking_event = {category: category, action: action, context: context};
switch (category) {
case 'eventonpage':
tracking_event.category = 'page';
if (/^nav\.headlineload/.test(action)) {
tracking_event.action = 'nav.headlineload';
tracking_event.context.nav_headlineload = action.replace(/^nav\.headlineload\./, '');
}
break;
case 'videoevent':
case 'video_event':
tracking_event.category = 'video';
break;
case 'si/scroll':
tracking_event.category = 'page';
tracking_event.action = 'scroll';
break;
}
return tracking_event;
}
// Rewrite iJento events
var old_tracer = Track.IJento.getSiTracker().sendAdditionalTracer;
Track.IJento.getSiTracker().sendAdditionalTracer = function (a, b) {
var ev = {};
b = b.split('&').forEach(function(e) {
e = e.split("=");
ev[e[0]] = e[1];
});
var tracking_event = rename(a.substring(1), ev.type, ev);
oTracking.event(new CustomEvent('oTracking.event', { detail: tracking_event }));
old_tracer.apply(this, arguments);
};
}
// CTM
if (cutsTheMustard) {
var o = document.createElement('script');
o.async = o.defer = true;
o.src = 'https://build.origami.ft.com/bundles/js?modules=o-tracking%401.0.3';
var s = document.getElementsByTagName('script')[0];
if (o.hasOwnProperty('onreadystatechange')) {
o.onreadystatechange = function() {
if (o.readyState === "loaded") {
otrackinginit();
}
};
} else {
o.onload = otrackinginit;
}
s.parentNode.insertBefore(o, s);
} else {
document.write('<img alt="" src="' + server + '?data=' + encodeURI('{"category":"page", "action":"view", "system":{"apiKey":"qUb9maKfKbtpRsdp0p2J7uWxRPGJEP","source":"o-tracking","version":"1.0.0"},"user":{"passport_id": "' + passport_id + '","ft_session": "' + ft_session + '"},"context":{"url":"' + document.URL + '","referrer":"' + document.referrer + '","product":"ft.com","content":{"uuid":"' + uuid + '","hurdle":"' + hurdle + '"}}}') + '" />');
}
}());
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment