You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by dg...@apache.org on 2018/10/30 16:47:53 UTC
[2/4] incubator-unomi git commit: UNOMI-187 fix referrer
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/19532afd/extensions/web-tracker/javascript/package.json
----------------------------------------------------------------------
diff --git a/extensions/web-tracker/javascript/package.json b/extensions/web-tracker/javascript/package.json
index 342de5b..10bcf38 100644
--- a/extensions/web-tracker/javascript/package.json
+++ b/extensions/web-tracker/javascript/package.json
@@ -1,6 +1,6 @@
{
"name": "unomi-analytics",
- "version": "1.0.3",
+ "version": "1.0.4",
"description": "The Apache Unomi analytics.js integration.",
"main": "dist/unomi-tracker.js",
"keywords": [
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/19532afd/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
----------------------------------------------------------------------
diff --git a/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js b/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
index 7de7475..2f90277 100644
--- a/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
+++ b/extensions/web-tracker/javascript/src/analytics.js-integration-apache-unomi.js
@@ -115,7 +115,49 @@ Unomi.prototype.fillPageData = function(unomiPage, props) {
unomiPage.pageInfo.pagePath = unomiPage.pageInfo.pagePath || props.path;
unomiPage.pageInfo.destinationURL = unomiPage.pageInfo.destinationURL || props.url;
unomiPage.pageInfo.referringURL = unomiPage.pageInfo.referringURL || props.referrer;
-}
+ this.processReferrer();
+};
+
+Unomi.prototype.processReferrer = function() {
+ var referrerURL = document.referrer;
+ if (referrerURL) {
+ // parse referrer URL
+ var referrer = document.createElement('a');
+ referrer.href = referrerURL;
+
+ // only process referrer if it's not coming from the same site as the current page
+ var local = document.createElement('a');
+ local.href = document.URL;
+ if (referrer.host !== local.host) {
+ // get search element if it exists and extract search query if available
+ var search = referrer.search;
+ var query = undefined;
+ if (search && search != '') {
+ // parse parameters
+ var queryParams = [], param;
+ var queryParamPairs = search.slice(1).split('&');
+ for (var i = 0; i < queryParamPairs.length; i++) {
+ param = queryParamPairs[i].split('=');
+ queryParams.push(param[0]);
+ queryParams[param[0]] = param[1];
+ }
+
+ // try to extract query: q is Google-like (most search engines), p is Yahoo
+ query = queryParams.q || queryParams.p;
+ query = decodeURIComponent(query).replace(/\+/g, ' ');
+ }
+
+ // add data to digitalData
+ if (window.digitalData && window.digitalData.page && window.digitalData.page.pageInfo) {
+ window.digitalData.page.pageInfo.referrerHost = referrer.host;
+ window.digitalData.page.pageInfo.referrerQuery = query;
+ }
+
+ // register referrer event
+ this.registerEvent(this.buildEvent('viewFromReferrer', this.buildTargetPage()));
+ }
+ }
+};
/**
@@ -221,7 +263,7 @@ Unomi.prototype.onpersonalize = function (msg) {
};
window.digitalData.personalizationCallback = window.digitalData.personalizationCallback || [];
window.digitalData.personalizationCallback.push({personalization: msg.personalization, callback: msg.callback});
-},
+};
/**
* This function return the basic structure for an event, it must be adapted to your need