From 1f6a9aa5709ff0b6f48bcc9cca55eb737b0fcbf4 Mon Sep 17 00:00:00 2001 From: Jack Lawson Date: Tue, 30 Jun 2015 10:16:58 -0700 Subject: [PATCH] Refactor all page tracking logic into analytics.js --- r2/r2/lib/template_helpers.py | 4 ++-- r2/r2/public/static/js/analytics.js | 14 ++++++++------ r2/r2/public/static/js/ui.js | 20 ++++++++++++++++++++ r2/r2/templates/base.html | 19 ------------------- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/r2/r2/lib/template_helpers.py b/r2/r2/lib/template_helpers.py index 9521cceb7..500f51ad1 100644 --- a/r2/r2/lib/template_helpers.py +++ b/r2/r2/lib/template_helpers.py @@ -30,7 +30,7 @@ from r2.lib.utils import UrlParser, timeago, timesince, is_subdomain from r2.lib import hooks from r2.lib.static import static_mtime -from r2.lib import js +from r2.lib import js, tracking import babel.numbers import simplejson @@ -178,7 +178,7 @@ def js_config(extra_config=None): "loading": _("loading...") }, "is_fake": isinstance(c.site, FakeSubreddit), - "tracker_url": g.tracker_url, + "tracker_url": tracking.get_pageview_pixel_url() or '', "adtracker_url": g.adtracker_url, "clicktracker_url": g.clicktracker_url, "uitracker_url": g.uitracker_url, diff --git a/r2/r2/public/static/js/analytics.js b/r2/r2/public/static/js/analytics.js index a6f5ba818..2c97bd5be 100644 --- a/r2/r2/public/static/js/analytics.js +++ b/r2/r2/public/static/js/analytics.js @@ -210,12 +210,14 @@ r.analytics = { ); }, - firePageTrackingPixel: function(params) { - params = params || {}; - var querystring = []; + firePageTrackingPixel: function(url, params) { + if (!url) { return; } - var cachebuster = Math.round(Math.random() * 2147483647); - querystring.push('r=' + cachebuster); + params = params || {}; + + var querystring = [ + 'r=' + Math.random(), + ]; var referrer = document.referrer || ''; var referrerDomain = referrer.match(/\/\/([^\/]+)/); @@ -233,7 +235,7 @@ r.analytics = { } var pixel = new Image(); - pixel.src = r.config.tracker_url + '?' + querystring.join('&'); + pixel.src = url + '&' + querystring.join('&'); }, // If we passed along referring tags to this page, after it's loaded, remove them from the URL so that diff --git a/r2/r2/public/static/js/ui.js b/r2/r2/public/static/js/ui.js index d2be71779..f4c6b527d 100644 --- a/r2/r2/public/static/js/ui.js +++ b/r2/r2/public/static/js/ui.js @@ -90,6 +90,26 @@ r.ui.init = function() { r.ui.initReadNext(); r.ui.initTimings() + + r.ui.firePageTrackingPixel() +} + +r.ui.firePageTrackingPixel = function() { + var url = r.config.tracker_url; + var params = {}; + + if (!r.config.user_id) { + var tracker = new redditlib.Tracker(); + var loggedOutData = tracker.getTrackingData(); + if (loggedOutData && loggedOutData.loid) { + params = { + loid: loggedOutData.loid, + loidcreated: loggedOutData.loidcreated + }; + } + } + + r.analytics.firePageTrackingPixel(url, params); } r.ui.inMobileWebBlacklist = function() { diff --git a/r2/r2/templates/base.html b/r2/r2/templates/base.html index b5b97d3a3..8529a39aa 100644 --- a/r2/r2/templates/base.html +++ b/r2/r2/templates/base.html @@ -90,25 +90,6 @@ reddit, reddit.com, vote, comment, submit <%def name="head()"> -%if g.tracker_url and thing.site_tracking: - -%endif - ${googleanalytics('web', thing.is_gold_page() if hasattr(thing, 'is_gold_page') else False)}