Skip to content

Commit 51b0c9e

Browse files
nathanjosiahdvoskoboinikov
authored andcommitted
Merge pull request #3942 from magento-borg/MAGETWO-98351
Fixed issues: - MAGETWO-98351: Update transaction email variable dialog
2 parents 63e79aa + 125ba68 commit 51b0c9e

File tree

1 file changed

+67
-14
lines changed

1 file changed

+67
-14
lines changed

app/code/Magento/Variable/view/adminhtml/web/variables.js

Lines changed: 67 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ window.Variables = {
1818
overlayShowEffectOptions: null,
1919
overlayHideEffectOptions: null,
2020
insertFunction: 'Variables.insertVariable',
21+
variablesValue: [],
22+
23+
/**
24+
* @param {*} textareaElementId
25+
* @param {Function} insertFunction
26+
*/
2127
init: function(textareaElementId, insertFunction) {
2228
if ($(textareaElementId)) {
2329
this.textareaElementId = textareaElementId;
@@ -27,21 +33,28 @@ window.Variables = {
2733
}
2834
},
2935

36+
/**
37+
* reset data.
38+
*/
3039
resetData: function() {
3140
this.variablesContent = null;
3241
this.dialogWindow = null;
3342
},
3443

44+
/**
45+
* @param {Object} variables
46+
*/
3547
openVariableChooser: function(variables) {
3648
if (this.variablesContent == null && variables) {
3749
this.variablesContent = '<ul class="insert-variable">';
3850
variables.each(function(variableGroup) {
3951
if (variableGroup.label && variableGroup.value) {
40-
this.variablesContent += '<li><b>' + variableGroup.label + '</b></li>';
52+
this.variablesContent += '<li><b>' + variableGroup.label.escapeHTML() + '</b></li>';
4153
(variableGroup.value).each(function(variable){
4254
if (variable.value && variable.label) {
55+
this.variablesValue.push(variable.value);
4356
this.variablesContent += '<li>' +
44-
this.prepareVariableRow(variable.value, variable.label) + '</li>';
57+
this.prepareVariableRow(this.variablesValue.length, variable.label) + '</li>';
4558
}
4659
}.bind(this));
4760
}
@@ -52,9 +65,13 @@ window.Variables = {
5265
this.openDialogWindow(this.variablesContent);
5366
}
5467
},
68+
69+
/**
70+
* @param {*} variablesContent
71+
*/
5572
openDialogWindow: function (variablesContent) {
5673
var windowId = this.dialogWindowId;
57-
jQuery('<div id="' + windowId + '">' + Variables.variablesContent + '</div>').modal({
74+
jQuery('<div id="' + windowId + '">' + variablesContent + '</div>').modal({
5875
title: $t('Insert Variable...'),
5976
type: 'slide',
6077
buttons: [],
@@ -64,40 +81,70 @@ window.Variables = {
6481
});
6582

6683
jQuery('#' + windowId).modal('openModal');
67-
68-
variablesContent.evalScripts.bind(variablesContent).defer();
6984
},
85+
86+
/**
87+
* Close dialog window.
88+
*/
7089
closeDialogWindow: function() {
7190
jQuery('#' + this.dialogWindowId).modal('closeModal');
7291
},
73-
prepareVariableRow: function(varValue, varLabel) {
74-
var value = (varValue).replace(/"/g, '&quot;').replace(/'/g, '\\&#39;');
75-
var content = '<a href="#" onclick="'+this.insertFunction+'(\''+ value +'\');return false;">' + varLabel + '</a>';
76-
return content;
92+
93+
/**
94+
* @param {Number} index
95+
* @param {*} varLabel
96+
* @return {String}
97+
*/
98+
prepareVariableRow: function (index, varLabel) {
99+
return '<a href="#" onclick="' +
100+
this.insertFunction +
101+
'(' +
102+
index +
103+
');return false;">' +
104+
varLabel.escapeHTML() +
105+
'</a>';
77106
},
78-
insertVariable: function(value) {
107+
108+
/**
109+
* @param {*} variable
110+
*/
111+
insertVariable: function(variable) {
79112
var windowId = this.dialogWindowId;
80113
jQuery('#' + windowId).modal('closeModal');
81114
var textareaElm = $(this.textareaElementId);
115+
82116
if (textareaElm) {
83117
var scrollPos = textareaElm.scrollTop;
84-
updateElementAtCursor(textareaElm, value);
118+
119+
if (!isNaN(variable)) {
120+
updateElementAtCursor(textareaElm, Variables.variablesValue[variable - 1]);
121+
} else {
122+
updateElementAtCursor(textareaElm, variable);
123+
}
85124
textareaElm.focus();
86125
textareaElm.scrollTop = scrollPos;
87126
jQuery(textareaElm).change();
88127
textareaElm = null;
89128
}
90-
return;
91129
}
92130
};
93131

94132
window.MagentovariablePlugin = {
95133
editor: null,
96134
variables: null,
97135
textareaId: null,
136+
137+
/**
138+
* @param {*} editor
139+
*/
98140
setEditor: function(editor) {
99141
this.editor = editor;
100142
},
143+
144+
/**
145+
* @param {String} url
146+
* @param {*} textareaId
147+
*/
101148
loadChooser: function(url, textareaId) {
102149
this.textareaId = textareaId;
103150
if (this.variables == null) {
@@ -114,11 +161,18 @@ window.MagentovariablePlugin = {
114161
} else {
115162
this.openChooser(this.variables);
116163
}
117-
return;
118164
},
165+
166+
/**
167+
* @param {*} variables
168+
*/
119169
openChooser: function(variables) {
120170
Variables.openVariableChooser(variables);
121171
},
172+
173+
/**
174+
* @param {*} value
175+
*/
122176
insertVariable : function (value) {
123177
if (this.textareaId) {
124178
Variables.init(this.textareaId);
@@ -127,7 +181,6 @@ window.MagentovariablePlugin = {
127181
Variables.closeDialogWindow();
128182
this.editor.execCommand('mceInsertContent', false, value);
129183
}
130-
return;
131184
}
132185
};
133186

0 commit comments

Comments
 (0)