Skip to content

Commit 6af0453

Browse files
authored
Merge pull request #13 from optimizely/cooper-adobe_evar_refactor
refactor code to work in IE for eVar integration
2 parents 873d472 + 72d5a5c commit 6af0453

File tree

2 files changed

+31
-30
lines changed

2 files changed

+31
-30
lines changed

Integrations/Analytics/Adobe Analytics/eVar-prop Integration/config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"plugin_type": "analytics_integration",
3-
"name": "Custom Adobe Analytics",
3+
"name": "Custom Adobe Analytics [eVar]",
44
"form_schema": [
55
{
66
"default_value": "eVar1",
@@ -1625,6 +1625,6 @@
16251625
],
16261626
"description": "",
16271627
"options": {
1628-
"track_layer_decision": "var decisionString = window.optimizely.get('state').getDecisionString({campaignId: campaignId, shouldCleanString: true});\nvar redirectInfo = window.optimizely.get('state').getRedirectInfo();\nvar eVar = extension.eVar;\nvar prop = extension.prop;\nvar campaignObject = {};\nif (!!eVar) campaignObject[eVar] = decisionString;\nif (!!prop) campaignObject[prop] = decisionString;\n\n// Public Methods\nvar adobeIntegrator = {\n\t// Array of active campaigns/experiments\n\tcampaignArray: [],\n\t// Accepts \"s\" variable as a param and assigns eVars to object.\n\tassignCampaigns: function(sVariable) {\n if (!!redirectInfo) sVariable.referrer = redirectInfo.referrer;\n\t\tfor (var i = this.campaignArray.length-1; i >= 0; i--) {\n\t\t\tObject.assign(sVariable, this.campaignArray[i]);\n\t\t\tthis.campaignArray.splice(i, 1);\n\t\t}\n\t},\n\t// Accepts \"s\" variable as a param and assigns eVars to object, then dispatches custom link tracking.\n\ttrackDelayedCampaigns: function(sVariable) {\n\t\tfor (var i = this.campaignArray.length-1; i >= 0; i--) {\n sVariable.linkTrackVars += \",\" + Object.keys(this.campaignArray[i])[0];\n\t\t\tObject.assign(sVariable, this.campaignArray[i]);\n\t\t\tthis.campaignArray.splice(i, 1);\n\t\t}\n\t\tsVariable.tl(true, \"o\", \"OptimizelyLayerDecision\");\n\t}\n};\n\n// Scopes `campaignArray` to Optimizely object.\nif (!window.optimizely.get(\"custom/adobeIntegrator\")) {\n\twindow.optimizely.push({\n\t\ttype: \"registerModule\",\n\t\tmoduleName: \"adobeIntegrator\",\n\t\tmodule: adobeIntegrator\n\t});\n}\n\n// Failing Audiences returns `null`, failing Traffic Allocation returns `undefined` for decisionString.\nif (!!decisionString) window.optimizely.get(\"custom/adobeIntegrator\").campaignArray.push(campaignObject);"
1628+
"track_layer_decision": "var decisionString = window.optimizely.get('state').getDecisionString({\n campaignId: campaignId,\n shouldCleanString: true\n});\nvar redirectInfo = window.optimizely.get('state').getRedirectInfo();\nvar eVar = extension.eVar;\nvar prop = extension.prop;\n\n// Public Methods\nvar adobeIntegrator = {\n campaignDecisions: {},\n // Accepts \"s\" variable as a param and assigns eVars to object.\n populateTrackerClearDecisions: function(sVariable) {\n for (var allocation in this.campaignDecisions) {\n sVariable[allocation] = this.campaignDecisions[allocation];\n }\n this.campaignDecisions = {};\n },\n assignCampaigns: function(sVariable) {\n if (!!redirectInfo) sVariable.referrer = redirectInfo.referrer;\n this.populateTrackerClearDecisions(sVariable);\n },\n // Accepts \"s\" variable as a param and assigns eVars to object, then dispatches custom link tracking.\n trackDelayedCampaigns: function(sVariable) {\n this.populateTrackerClearDecisions(sVariable);\n sVariable.tl(true, \"o\", \"OptimizelyLayerDecision\");\n }\n};\n\n// Scopes `campaignArray` to Optimizely object.\nif (!window.optimizely.get(\"custom/adobeIntegrator\")) {\n window.optimizely.push({\n type: \"registerModule\",\n moduleName: \"adobeIntegrator\",\n module: adobeIntegrator\n });\n}\n\n// Failing Audiences returns `null`, failing Traffic Allocation returns `undefined` for decisionString.\nif (!!decisionString) {\n if (eVar) window.optimizely.get(\"custom/adobeIntegrator\").campaignDecisions[eVar] = decisionString;\n if (prop) window.optimizely.get(\"custom/adobeIntegrator\").campaignDecisions[prop] = decisionString;\n}"
16291629
}
16301630
}
Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,43 @@
1-
var decisionString = window.optimizely.get('state').getDecisionString({campaignId: campaignId, shouldCleanString: true});
1+
var decisionString = window.optimizely.get('state').getDecisionString({
2+
campaignId: campaignId,
3+
shouldCleanString: true
4+
});
25
var redirectInfo = window.optimizely.get('state').getRedirectInfo();
36
var eVar = extension.eVar;
47
var prop = extension.prop;
5-
var campaignObject = {};
6-
if (!!eVar) campaignObject[eVar] = decisionString;
7-
if (!!prop) campaignObject[prop] = decisionString;
88

99
// Public Methods
1010
var adobeIntegrator = {
11-
// Array of active campaigns/experiments
12-
campaignArray: [],
13-
// Accepts "s" variable as a param and assigns eVars to object.
14-
assignCampaigns: function(sVariable) {
11+
campaignDecisions: {},
12+
// Accepts "s" variable as a param and assigns eVars to object.
13+
populateTrackerClearDecisions: function(sVariable) {
14+
for (var allocation in this.campaignDecisions) {
15+
sVariable[allocation] = this.campaignDecisions[allocation];
16+
}
17+
this.campaignDecisions = {};
18+
},
19+
assignCampaigns: function(sVariable) {
1520
if (!!redirectInfo) sVariable.referrer = redirectInfo.referrer;
16-
for (var i = this.campaignArray.length-1; i >= 0; i--) {
17-
Object.assign(sVariable, this.campaignArray[i]);
18-
this.campaignArray.splice(i, 1);
19-
}
20-
},
21-
// Accepts "s" variable as a param and assigns eVars to object, then dispatches custom link tracking.
22-
trackDelayedCampaigns: function(sVariable) {
23-
for (var i = this.campaignArray.length-1; i >= 0; i--) {
24-
sVariable.linkTrackVars += "," + Object.keys(this.campaignArray[i])[0];
25-
Object.assign(sVariable, this.campaignArray[i]);
26-
this.campaignArray.splice(i, 1);
27-
}
28-
sVariable.tl(true, "o", "OptimizelyLayerDecision");
29-
}
21+
this.populateTrackerClearDecisions(sVariable);
22+
},
23+
// Accepts "s" variable as a param and assigns eVars to object, then dispatches custom link tracking.
24+
trackDelayedCampaigns: function(sVariable) {
25+
this.populateTrackerClearDecisions(sVariable);
26+
sVariable.tl(true, "o", "OptimizelyLayerDecision");
27+
}
3028
};
3129

3230
// Scopes `campaignArray` to Optimizely object.
3331
if (!window.optimizely.get("custom/adobeIntegrator")) {
34-
window.optimizely.push({
35-
type: "registerModule",
36-
moduleName: "adobeIntegrator",
37-
module: adobeIntegrator
38-
});
32+
window.optimizely.push({
33+
type: "registerModule",
34+
moduleName: "adobeIntegrator",
35+
module: adobeIntegrator
36+
});
3937
}
4038

4139
// Failing Audiences returns `null`, failing Traffic Allocation returns `undefined` for decisionString.
42-
if (!!decisionString) window.optimizely.get("custom/adobeIntegrator").campaignArray.push(campaignObject);
40+
if (!!decisionString) {
41+
if (eVar) window.optimizely.get("custom/adobeIntegrator").campaignDecisions[eVar] = decisionString;
42+
if (prop) window.optimizely.get("custom/adobeIntegrator").campaignDecisions[prop] = decisionString;
43+
}

0 commit comments

Comments
 (0)