From 06518bc3422073f4387d883288a9467cea33e31d Mon Sep 17 00:00:00 2001 From: Yuhuai Liu Date: Mon, 11 Mar 2019 13:59:22 -0400 Subject: [PATCH 1/2] Added google analytics tracking for MFR Hypothesis More specifically, this GA event tracks when users click open the Hypothesis side panel for each preprints. --- mfr/extensions/pdf/render.py | 3 +++ mfr/extensions/pdf/templates/viewer.mako | 6 ++++++ mfr/server/static/js/mfr.child.hypothesis.js | 18 +++++++++++++++++- mfr/settings.py | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/mfr/extensions/pdf/render.py b/mfr/extensions/pdf/render.py index 2bd6e9dc0..147d0cab4 100644 --- a/mfr/extensions/pdf/render.py +++ b/mfr/extensions/pdf/render.py @@ -7,6 +7,7 @@ from mfr.core import extension from mfr.extensions.pdf import settings from mfr.extensions.utils import munge_url_for_localdev, escape_url_for_template +from mfr.settings import GOOGLE_ANALYTICS_TRACKING_ID logger = logging.getLogger(__name__) @@ -29,6 +30,7 @@ def render(self): if self.metadata.ext.lower() not in settings.EXPORT_SUPPORTED: logger.debug('Extension not found in supported list!') return self.TEMPLATE.render( + ga_tracking_id=GOOGLE_ANALYTICS_TRACKING_ID, base=self.assets_url, url=escape_url_for_template(download_url.geturl()), stable_id=self.metadata.stable_id, @@ -46,6 +48,7 @@ def render(self): self.metrics.add('needs_export', True) return self.TEMPLATE.render( + ga_tracking_id=GOOGLE_ANALYTICS_TRACKING_ID, base=self.assets_url, url=escape_url_for_template(exported_url.url), stable_id=self.metadata.stable_id, diff --git a/mfr/extensions/pdf/templates/viewer.mako b/mfr/extensions/pdf/templates/viewer.mako index 1b4e8033d..8b24058ab 100644 --- a/mfr/extensions/pdf/templates/viewer.mako +++ b/mfr/extensions/pdf/templates/viewer.mako @@ -426,6 +426,12 @@ http://sourceforge.net/adobe/cmap/wiki/License/ % endif diff --git a/mfr/server/static/js/mfr.child.hypothesis.js b/mfr/server/static/js/mfr.child.hypothesis.js index 003e03960..3e6cf1074 100644 --- a/mfr/server/static/js/mfr.child.hypothesis.js +++ b/mfr/server/static/js/mfr.child.hypothesis.js @@ -62,7 +62,23 @@ window.document.head.appendChild(script); window.document.body.classList.add('show-hypothesis'); hypothesisLoaded = true; - }); + var sidePanelOpened = false; + var sendAnalyticsIfExpanded = function (expanded) { + if (expanded && !sidePanelOpened) { + sidePanelOpened = expanded; + ga('send', 'event', { + eventCategory: 'Hypothesis', + eventAction: 'Open Hypothesis Panel', + eventLabel: window.DEFAULT_URL.split('/')[5], + }); + } + }; + window.hypothesisConfig = function () { + return { + "onLayoutChange": function (layout) { return sendAnalyticsIfExpanded(layout.expanded); } + }; + }; + }); }; })(); diff --git a/mfr/settings.py b/mfr/settings.py index 4f12f1934..7dd613ad4 100644 --- a/mfr/settings.py +++ b/mfr/settings.py @@ -170,3 +170,4 @@ def child(key): SENTRY_DSN = config.get_nullable('SENTRY_DSN', None) +GOOGLE_ANALYTICS_TRACKING_ID = config.get_nullable('GOOGLE_ANALYTICS_TRACKING_ID', None) From 3df7593b3c3209b56ac7be9075a82566697de418 Mon Sep 17 00:00:00 2001 From: Yuhuai Liu Date: Thu, 28 Mar 2019 09:31:43 -0400 Subject: [PATCH 2/2] Added a check with comments on obtaining and using preprints GUID The preprints GUID used by the GA tracking event is retreived from window.DEFAULT_URL, which is the third segment of the URL path. --- mfr/server/static/js/mfr.child.hypothesis.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mfr/server/static/js/mfr.child.hypothesis.js b/mfr/server/static/js/mfr.child.hypothesis.js index 3e6cf1074..ba8416d9a 100644 --- a/mfr/server/static/js/mfr.child.hypothesis.js +++ b/mfr/server/static/js/mfr.child.hypothesis.js @@ -64,13 +64,24 @@ hypothesisLoaded = true; var sidePanelOpened = false; + // window.DEFAULT_URL should be the wb link in this format: + // https:///v1/resources//providers/osfstorage/?direct=&mode=render + // TODO: parse and validate the WB URL before retrieving the preprints GUID + var wbLink = window.DEFAULT_URL; + var preprintGuid; + if (wbLink.split('/').length >= 6) { + preprintGuid = wbLink.split('/')[5]; + } else { + preprintGuid = 'preprint-guid-unknown'; + } var sendAnalyticsIfExpanded = function (expanded) { if (expanded && !sidePanelOpened) { sidePanelOpened = expanded; ga('send', 'event', { eventCategory: 'Hypothesis', eventAction: 'Open Hypothesis Panel', - eventLabel: window.DEFAULT_URL.split('/')[5], + //`eventLabel` is the guid of the preprint to which the file belongs + eventLabel: preprintGuid, }); } };