Embeds: use our session-appending redirector to track link clicks

This commit is contained in:
umbrae
2015-02-21 01:58:03 -08:00
parent a992fe88ae
commit e5647d641c
4 changed files with 31 additions and 6 deletions

View File

@@ -124,6 +124,7 @@ adtracker_url = /pixel/of_doom.png
adframetracker_url = /pixel/of_defenestration.png
# redirector to bounce clicks off of on sponsored links for tracking
clicktracker_url = /click
event_clicktracker_url = /event_click
# url to request to track interaction statistics
uitracker_url = /pixel/of_discovery.png
# embeds pixel tracking url

View File

@@ -80,6 +80,7 @@ def set_up_embed(embed_key, sr, thing, showedits):
c.embed_config = {
"eventtracker_url": g.eventtracker_url or "",
"anon_eventtracker_url": g.anon_eventtracker_url or "",
"event_clicktracker_url": g.event_clicktracker_url or "",
"created": iso_timestamp,
"showedits": showedits,
"thing": {

View File

@@ -73,18 +73,28 @@
var base = document.getElementsByTagName('base');
var target = el.target || (base && base[0] && base[0].target);
var newTab = target === '_blank';
var payload = {
var payload = createPayload(type, 'click', {
'redirect_url': el.href,
'redirect_type': el.getAttribute('data-redirect-type'),
'redirect_dest': el.host,
'redirect_thing_id': el.getAttribute('data-redirect-thing'),
});
var redirectParams = {
"data": JSON.stringify(payload),
"url": el.href,
};
tracker.send(createPayload(type, 'click', payload), function() {
if (!newTab) {
window.top.location.href = el.href;
}
});
// Use a DOM object for easier query manipulation
var tmpLink = document.createElement('a')
tmpLink.href = config.event_clicktracker_url;
tmpLink.search = '?' + App.utils.serialize(redirectParams);
// Rewrite our URL to our event-driven URL
el.href = tmpLink.href;
if (!newTab) {
window.top.location.href = el.href;
}
return newTab;
}

View File

@@ -51,4 +51,17 @@
return uuid;
};
// Given an object, serialize it into a set of urlencoded query parameters
App.utils.serialize = function(obj) {
var params = [];
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
params.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));
}
}
return params.join('&');
}
})((window.rembeddit = window.rembeddit || {}), this);