@@ -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,11 +33,17 @@ 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">' ;
@@ -40,8 +52,9 @@ window.Variables = {
40
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,67 @@ 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 . escapeHTML ( ) + '\');return false;">' + varLabel . escapeHTML ( ) + '</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 ) ;
82
115
if ( textareaElm ) {
83
116
var scrollPos = textareaElm . scrollTop ;
84
- updateElementAtCursor ( textareaElm , value ) ;
85
- textareaElm . focus ( ) ;
117
+ if ( ! isNaN ( variable ) ) {
118
+ updateElementAtCursor ( textareaElm , Variables . variablesValue [ variable - 1 ] ) ;
119
+ } else {
120
+ updateElementAtCursor ( textareaElm , variable ) ;
121
+ } textareaElm . focus ( ) ;
86
122
textareaElm . scrollTop = scrollPos ;
87
123
jQuery ( textareaElm ) . change ( ) ;
88
124
textareaElm = null ;
89
125
}
90
- return ;
91
126
}
92
127
} ;
93
128
94
129
window . MagentovariablePlugin = {
95
130
editor : null ,
96
131
variables : null ,
97
132
textareaId : null ,
133
+
134
+ /**
135
+ * @param {* } editor
136
+ */
98
137
setEditor : function ( editor ) {
99
138
this . editor = editor ;
100
139
} ,
140
+
141
+ /**
142
+ * @param {String } url
143
+ * @param {* } textareaId
144
+ */
101
145
loadChooser : function ( url , textareaId ) {
102
146
this . textareaId = textareaId ;
103
147
if ( this . variables == null ) {
@@ -114,11 +158,18 @@ window.MagentovariablePlugin = {
114
158
} else {
115
159
this . openChooser ( this . variables ) ;
116
160
}
117
- return ;
118
161
} ,
162
+
163
+ /**
164
+ * @param {* } variables
165
+ */
119
166
openChooser : function ( variables ) {
120
167
Variables . openVariableChooser ( variables ) ;
121
168
} ,
169
+
170
+ /**
171
+ * @param {* } value
172
+ */
122
173
insertVariable : function ( value ) {
123
174
if ( this . textareaId ) {
124
175
Variables . init ( this . textareaId ) ;
@@ -127,7 +178,6 @@ window.MagentovariablePlugin = {
127
178
Variables . closeDialogWindow ( ) ;
128
179
this . editor . execCommand ( 'mceInsertContent' , false , value ) ;
129
180
}
130
- return ;
131
181
}
132
182
} ;
133
183
0 commit comments