@@ -18,6 +18,12 @@ window.Variables = {
18
18
overlayShowEffectOptions : null ,
19
19
overlayHideEffectOptions : null ,
20
20
insertFunction : 'Variables.insertVariable' ,
21
+ variablesValue : [ ] ,
22
+
23
+ /**
24
+ * @param {* } textareaElementId
25
+ * @param {Function } insertFunction
26
+ */
21
27
init : function ( textareaElementId , insertFunction ) {
22
28
if ( $ ( textareaElementId ) ) {
23
29
this . textareaElementId = textareaElementId ;
@@ -27,21 +33,28 @@ window.Variables = {
27
33
}
28
34
} ,
29
35
36
+ /**
37
+ * reset data.
38
+ */
30
39
resetData : function ( ) {
31
40
this . variablesContent = null ;
32
41
this . dialogWindow = null ;
33
42
} ,
34
43
44
+ /**
45
+ * @param {Object } variables
46
+ */
35
47
openVariableChooser : function ( variables ) {
36
48
if ( this . variablesContent == null && variables ) {
37
49
this . variablesContent = '<ul class="insert-variable">' ;
38
50
variables . each ( function ( variableGroup ) {
39
51
if ( variableGroup . label && variableGroup . value ) {
40
- this . variablesContent += '<li><b>' + variableGroup . label + '</b></li>' ;
52
+ this . variablesContent += '<li><b>' + variableGroup . label . escapeHTML ( ) + '</b></li>' ;
41
53
( variableGroup . value ) . each ( function ( variable ) {
42
54
if ( variable . value && variable . label ) {
55
+ this . variablesValue . push ( variable . value ) ;
43
56
this . variablesContent += '<li>' +
44
- this . prepareVariableRow ( variable . value , variable . label ) + '</li>' ;
57
+ this . prepareVariableRow ( this . variablesValue . length , variable . label ) + '</li>' ;
45
58
}
46
59
} . bind ( this ) ) ;
47
60
}
@@ -52,9 +65,13 @@ window.Variables = {
52
65
this . openDialogWindow ( this . variablesContent ) ;
53
66
}
54
67
} ,
68
+
69
+ /**
70
+ * @param {* } variablesContent
71
+ */
55
72
openDialogWindow : function ( variablesContent ) {
56
73
var windowId = this . dialogWindowId ;
57
- jQuery ( '<div id="' + windowId + '">' + Variables . variablesContent + '</div>' ) . modal ( {
74
+ jQuery ( '<div id="' + windowId + '">' + variablesContent + '</div>' ) . modal ( {
58
75
title : $t ( 'Insert Variable...' ) ,
59
76
type : 'slide' ,
60
77
buttons : [ ] ,
@@ -64,40 +81,70 @@ window.Variables = {
64
81
} ) ;
65
82
66
83
jQuery ( '#' + windowId ) . modal ( 'openModal' ) ;
67
-
68
- variablesContent . evalScripts . bind ( variablesContent ) . defer ( ) ;
69
84
} ,
85
+
86
+ /**
87
+ * Close dialog window.
88
+ */
70
89
closeDialogWindow : function ( ) {
71
90
jQuery ( '#' + this . dialogWindowId ) . modal ( 'closeModal' ) ;
72
91
} ,
73
- prepareVariableRow : function ( varValue , varLabel ) {
74
- var value = ( varValue ) . replace ( / " / g, '"' ) . replace ( / ' / g, '\\'' ) ;
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>' ;
77
106
} ,
78
- insertVariable : function ( value ) {
107
+
108
+ /**
109
+ * @param {* } variable
110
+ */
111
+ insertVariable : function ( variable ) {
79
112
var windowId = this . dialogWindowId ;
80
113
jQuery ( '#' + windowId ) . modal ( 'closeModal' ) ;
81
114
var textareaElm = $ ( this . textareaElementId ) ;
115
+
82
116
if ( textareaElm ) {
83
117
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
+ }
85
124
textareaElm . focus ( ) ;
86
125
textareaElm . scrollTop = scrollPos ;
87
126
jQuery ( textareaElm ) . change ( ) ;
88
127
textareaElm = null ;
89
128
}
90
- return ;
91
129
}
92
130
} ;
93
131
94
132
window . MagentovariablePlugin = {
95
133
editor : null ,
96
134
variables : null ,
97
135
textareaId : null ,
136
+
137
+ /**
138
+ * @param {* } editor
139
+ */
98
140
setEditor : function ( editor ) {
99
141
this . editor = editor ;
100
142
} ,
143
+
144
+ /**
145
+ * @param {String } url
146
+ * @param {* } textareaId
147
+ */
101
148
loadChooser : function ( url , textareaId ) {
102
149
this . textareaId = textareaId ;
103
150
if ( this . variables == null ) {
@@ -114,11 +161,18 @@ window.MagentovariablePlugin = {
114
161
} else {
115
162
this . openChooser ( this . variables ) ;
116
163
}
117
- return ;
118
164
} ,
165
+
166
+ /**
167
+ * @param {* } variables
168
+ */
119
169
openChooser : function ( variables ) {
120
170
Variables . openVariableChooser ( variables ) ;
121
171
} ,
172
+
173
+ /**
174
+ * @param {* } value
175
+ */
122
176
insertVariable : function ( value ) {
123
177
if ( this . textareaId ) {
124
178
Variables . init ( this . textareaId ) ;
@@ -127,7 +181,6 @@ window.MagentovariablePlugin = {
127
181
Variables . closeDialogWindow ( ) ;
128
182
this . editor . execCommand ( 'mceInsertContent' , false , value ) ;
129
183
}
130
- return ;
131
184
}
132
185
} ;
133
186
0 commit comments