-
Notifications
You must be signed in to change notification settings - Fork 69
Expand file tree
/
Copy pathintegration.js
More file actions
62 lines (57 loc) · 2.26 KB
/
integration.js
File metadata and controls
62 lines (57 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var decisionString = window.optimizely.get('state').getDecisionString({
campaignId: campaignId,
shouldCleanString: true
});
var redirectInfo = window.optimizely.get('state').getRedirectInfo();
var csvToArray = function(csv) {
return csv.length ? (csv || '').split(/,\s*/) : [];
}
// Public Methods
var adobeIntegrator = {
campaignDecisions: [],
appendToProperty: function(sVariable, listVar, decision) {
if (typeof sVariable[listVar] === 'undefined') sVariable[listVar] = ''; //default to string format
if (sVariable[listVar].constructor === Array) { // this listVarVar was previously defined as a string
sVariable[listVar] = sVariable[listVar].concat(decision);
}
else { // this listVarVar was previously defined as a string
sVariable[listVar] = csvToArray(sVariable[listVar]);
sVariable[listVar].push(decision);
sVariable[listVar] = sVariable[listVar].join(',');
}
},
populateTrackerClearDecisions: function(sVariable) {
var _this = this;
this.campaignDecisions.forEach(function(i) {
_this.appendToProperty(sVariable, i.listVar, i.decision);
});
this.campaignDecisions = [];
},
// Accepts "s" variable as a param and assigns eVars to object.
assignCampaigns: function(sVariable) {
if (!!redirectInfo) sVariable.referrer = redirectInfo.referrer;
this.populateTrackerClearDecisions(sVariable);
},
// Accepts "s" variable as a param and assigns eVars to object, then dispatches custom link tracking.
trackDelayedCampaigns: function(sVariable) {
var _this = this;
this.campaignDecisions.forEach(function(i) {
_this.appendToProperty(sVariable, 'linkTrackVars', i.listVar);
});
this.populateTrackerClearDecisions(sVariable);
sVariable.tl(true, "o", "OptimizelyLayerDecision");
}
};
// Scopes `campaignArray` to Optimizely object.
if (!window.optimizely.get("custom/adobeIntegrator")) {
window.optimizely.push({
type: "registerModule",
moduleName: "adobeIntegrator",
module: adobeIntegrator
});
}
// Failing Audiences returns `null`, failing Traffic Allocation returns `undefined` for decisionString.
if (!!decisionString) window.optimizely.get("custom/adobeIntegrator").campaignDecisions.push({
'listVar': extension.list,
'decision': decisionString
});