Created
August 17, 2015 10:59
-
-
Save markstephens/f6e6e5451e95a3ff60db to your computer and use it in GitHub Desktop.
o-tracking ftcom
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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