-
Notifications
You must be signed in to change notification settings - Fork 69
Expand file tree
/
Copy pathintegration.js
More file actions
44 lines (41 loc) · 1.72 KB
/
integration.js
File metadata and controls
44 lines (41 loc) · 1.72 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
// This extension integrates Optimizely w/ Adobe via a pre-defined list variable. Set the list variable on line 3 below.
var decisionString = window.optimizely.get('state').getDecisionString({
campaignId: campaignId,
shouldCleanString: true
});
var redirectInfo = window.optimizely.get('state').getRedirectInfo();
var list = "list1";
// Public Methods
var adobeIntegrator = {
// Array of objects for active campaigns/experiments
campaignArray: [],
// Accepts "s" variable as a param and assigns campaigns/experiments to list.
assignCampaigns: function(sVariable) {
sVariable[list] = sVariable[list] || [];
if (!!redirectInfo) sVariable.referrer = redirectInfo.referrer;
for (var i = this.campaignArray.length - 1; i >= 0; i--) {
sVariable[list].push(this.campaignArray[i]);
this.campaignArray.splice(i, 1);
}
},
// Accepts "s" variable as a param and assigns eVars to object, then dispatches custom link tracking.
trackDelayedCampaigns: function(sVariable) {
sVariable[list] = sVariable[list] || [];
sVariable.linkTrackVars += ("," + list);
for (var i = this.campaignArray.length - 1; i >= 0; i--) {
sVariable[list].push(this.campaignArray[i]);
this.campaignArray.splice(i, 1);
}
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").campaignArray.push(decisionString);