mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
Template/Update (Part 47)
* split global.js into its components, so it can be reasonably processed by setup * make reputation requirements configurable * move Markup and Locale back into global.js (removed associated build scripts) * extend Icon to display iconId in lightbox popup
This commit is contained in:
130
setup/tools/filegen/templates/global.js/tracking.js
Normal file
130
setup/tools/filegen/templates/global.js/tracking.js
Normal file
@@ -0,0 +1,130 @@
|
||||
/*
|
||||
TODO: Create "Tracking" class
|
||||
*/
|
||||
|
||||
function g_trackPageview(tag)
|
||||
{
|
||||
function track()
|
||||
{
|
||||
if (typeof ga == 'function')
|
||||
ga('send', 'pageview', tag);
|
||||
};
|
||||
|
||||
$(document).ready(track);
|
||||
}
|
||||
|
||||
function g_trackEvent(category, action, label, value)
|
||||
{
|
||||
function track()
|
||||
{
|
||||
if (typeof ga == 'function')
|
||||
ga('send', 'event', category, action, label, value);
|
||||
};
|
||||
|
||||
$(document).ready(track);
|
||||
}
|
||||
|
||||
function g_attachTracking(node, category, action, label, value)
|
||||
{
|
||||
var $node = $(node);
|
||||
|
||||
$node.click(function()
|
||||
{
|
||||
g_trackEvent(category, action, label, value);
|
||||
});
|
||||
}
|
||||
|
||||
function g_addAnalytics()
|
||||
{
|
||||
var objs = {
|
||||
'home-logo': {
|
||||
'category': 'Homepage Logo',
|
||||
'actions': {
|
||||
'Click image': function(node) { return true; }
|
||||
}
|
||||
},
|
||||
'home-featuredbox': {
|
||||
'category': 'Featured Box',
|
||||
'actions': {
|
||||
'Follow link': function(node) { return (node.parentNode.className != 'home-featuredbox-links'); },
|
||||
'Click image': function(node) { return (node.parentNode.className == 'home-featuredbox-links'); }
|
||||
}
|
||||
},
|
||||
'home-oneliner': {
|
||||
'category': 'Oneliner',
|
||||
'actions': {
|
||||
'Follow link': function(node) { return true; }
|
||||
}
|
||||
},
|
||||
'sidebar-container': {
|
||||
'category': 'Page sidebar',
|
||||
'actions': {
|
||||
'Click image': function(node) { return true; }
|
||||
}
|
||||
},
|
||||
'toptabs-promo': {
|
||||
'category': 'Page header',
|
||||
'actions': {
|
||||
'Click image': function(node) { return true; }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
for (var i in objs)
|
||||
{
|
||||
var e = $WH.ge(i);
|
||||
if (e)
|
||||
g_addAnalyticsToNode(e, objs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function g_getNodeTextId(node)
|
||||
{
|
||||
var id = null,
|
||||
text = g_getFirstTextContent(node);
|
||||
|
||||
if (text)
|
||||
id = g_urlize(text);
|
||||
else if (node.title)
|
||||
id = g_urlize(node.title);
|
||||
else if (node.id)
|
||||
id = g_urlize(node.id);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
function g_addAnalyticsToNode(node, opts, labelPrefix)
|
||||
{
|
||||
if (!opts || !opts.actions || !opts.category)
|
||||
{
|
||||
if ($WH.isset('g_dev') && g_dev)
|
||||
{
|
||||
console.log('Tried to add analytics event without appropriate parameters.');
|
||||
console.log(node);
|
||||
console.log(opts);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var category = opts.category;
|
||||
var tags = $WH.gE(node, 'a');
|
||||
for (var i = 0; i < tags.length; ++i)
|
||||
{
|
||||
var node = tags[i];
|
||||
var action = 'Follow link';
|
||||
for (var a in opts.actions)
|
||||
{
|
||||
if (opts.actions[a] && opts.actions[a](node))
|
||||
{
|
||||
action = a;
|
||||
break;
|
||||
}
|
||||
}
|
||||
var label = (labelPrefix ? labelPrefix + '-' : '') + g_getNodeTextId(node);
|
||||
|
||||
g_attachTracking(node, category, action, label);
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(g_addAnalytics);
|
||||
Reference in New Issue
Block a user