tinymce-rails 3.5.2 → 3.5.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/tinymce/rails/version.rb +2 -2
- data/vendor/assets/javascripts/tinymce/jquery.tinymce.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/autolink/editor_plugin_src.js +181 -181
- data/vendor/assets/javascripts/tinymce/plugins/autoresize/editor_plugin_src.js +119 -119
- data/vendor/assets/javascripts/tinymce/plugins/autosave/editor_plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/autosave/editor_plugin_src.js +4 -2
- data/vendor/assets/javascripts/tinymce/plugins/contextmenu/editor_plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/contextmenu/editor_plugin_src.js +9 -7
- data/vendor/assets/javascripts/tinymce/plugins/emotions/langs/en_dlg.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/example_dependency/editor_plugin_src.js +50 -50
- data/vendor/assets/javascripts/tinymce/plugins/lists/editor_plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/lists/editor_plugin_src.js +952 -951
- data/vendor/assets/javascripts/tinymce/plugins/media/editor_plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/media/editor_plugin_src.js +22 -14
- data/vendor/assets/javascripts/tinymce/plugins/media/langs/en_dlg.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/style/langs/en_dlg.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/style/props.htm +845 -845
- data/vendor/assets/javascripts/tinymce/plugins/style/readme.txt +19 -19
- data/vendor/assets/javascripts/tinymce/plugins/tabfocus/editor_plugin_src.js +122 -122
- data/vendor/assets/javascripts/tinymce/plugins/table/editor_plugin.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/table/editor_plugin_src.js +1449 -1446
- data/vendor/assets/javascripts/tinymce/plugins/table/js/table.js +4 -1
- data/vendor/assets/javascripts/tinymce/themes/advanced/js/color_picker.js +345 -345
- data/vendor/assets/javascripts/tinymce/themes/advanced/langs/en_dlg.js +1 -1
- data/vendor/assets/javascripts/tinymce/themes/advanced/skins/default/content.css +0 -1
- data/vendor/assets/javascripts/tinymce/themes/advanced/skins/highcontrast/content.css +0 -1
- data/vendor/assets/javascripts/tinymce/themes/advanced/skins/o2k7/content.css +0 -1
- data/vendor/assets/javascripts/tinymce/themes/advanced/source_editor.htm +1 -1
- data/vendor/assets/javascripts/tinymce/tiny_mce.js +1 -1
- data/vendor/assets/javascripts/tinymce/tiny_mce_jquery.js +1 -1
- data/vendor/assets/javascripts/tinymce/tiny_mce_jquery_src.js +394 -158
- data/vendor/assets/javascripts/tinymce/tiny_mce_src.js +394 -158
- metadata +5 -4
@@ -247,7 +247,10 @@ function insertTable() {
|
|
247
247
|
|
248
248
|
// Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document
|
249
249
|
if (tinymce.isIE && node.nextSibling == null) {
|
250
|
-
|
250
|
+
if (inst.settings.forced_root_block)
|
251
|
+
dom.insertAfter(dom.create(inst.settings.forced_root_block), node);
|
252
|
+
else
|
253
|
+
dom.insertAfter(dom.create('br', {'data-mce-bogus': '1'}), node);
|
251
254
|
}
|
252
255
|
|
253
256
|
try {
|
@@ -1,345 +1,345 @@
|
|
1
|
-
tinyMCEPopup.requireLangPack();
|
2
|
-
|
3
|
-
var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
|
4
|
-
|
5
|
-
var colors = [
|
6
|
-
"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
|
7
|
-
"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
|
8
|
-
"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
|
9
|
-
"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
|
10
|
-
"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
|
11
|
-
"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
|
12
|
-
"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
|
13
|
-
"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
|
14
|
-
"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
|
15
|
-
"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
|
16
|
-
"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
|
17
|
-
"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
|
18
|
-
"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
|
19
|
-
"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
|
20
|
-
"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
|
21
|
-
"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
|
22
|
-
"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
|
23
|
-
"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
|
24
|
-
"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
|
25
|
-
"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
|
26
|
-
"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
|
27
|
-
"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
|
28
|
-
"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
|
29
|
-
"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
|
30
|
-
"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
|
31
|
-
"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
|
32
|
-
"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
|
33
|
-
];
|
34
|
-
|
35
|
-
var named = {
|
36
|
-
'#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
|
37
|
-
'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown',
|
38
|
-
'#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue',
|
39
|
-
'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod',
|
40
|
-
'#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green',
|
41
|
-
'#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue',
|
42
|
-
'#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue',
|
43
|
-
'#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green',
|
44
|
-
'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey',
|
45
|
-
'#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory',
|
46
|
-
'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue',
|
47
|
-
'#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green',
|
48
|
-
'#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey',
|
49
|
-
'#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
|
50
|
-
'#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue',
|
51
|
-
'#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin',
|
52
|
-
'#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid',
|
53
|
-
'#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff',
|
54
|
-
'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue',
|
55
|
-
'#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver',
|
56
|
-
'#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green',
|
57
|
-
'#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
|
58
|
-
'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green'
|
59
|
-
};
|
60
|
-
|
61
|
-
var namedLookup = {};
|
62
|
-
|
63
|
-
function init() {
|
64
|
-
var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value;
|
65
|
-
|
66
|
-
tinyMCEPopup.resizeToInnerSize();
|
67
|
-
|
68
|
-
generatePicker();
|
69
|
-
generateWebColors();
|
70
|
-
generateNamedColors();
|
71
|
-
|
72
|
-
if (inputColor) {
|
73
|
-
changeFinalColor(inputColor);
|
74
|
-
|
75
|
-
col = convertHexToRGB(inputColor);
|
76
|
-
|
77
|
-
if (col)
|
78
|
-
updateLight(col.r, col.g, col.b);
|
79
|
-
}
|
80
|
-
|
81
|
-
for (key in named) {
|
82
|
-
value = named[key];
|
83
|
-
namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase();
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
function toHexColor(color) {
|
88
|
-
var matches, red, green, blue, toInt = parseInt;
|
89
|
-
|
90
|
-
function hex(value) {
|
91
|
-
value = parseInt(value).toString(16);
|
92
|
-
|
93
|
-
return value.length > 1 ? value : '0' + value; // Padd with leading zero
|
94
|
-
};
|
95
|
-
|
96
|
-
color = tinymce.trim(color);
|
97
|
-
color = color.replace(/^[#]/, '').toLowerCase(); // remove leading '#'
|
98
|
-
color = namedLookup[color] || color;
|
99
|
-
|
100
|
-
matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/.exec(color);
|
101
|
-
|
102
|
-
if (matches) {
|
103
|
-
red = toInt(matches[1]);
|
104
|
-
green = toInt(matches[2]);
|
105
|
-
blue = toInt(matches[3]);
|
106
|
-
} else {
|
107
|
-
matches = /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(color);
|
108
|
-
|
109
|
-
if (matches) {
|
110
|
-
red = toInt(matches[1], 16);
|
111
|
-
green = toInt(matches[2], 16);
|
112
|
-
blue = toInt(matches[3], 16);
|
113
|
-
} else {
|
114
|
-
matches = /^([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(color);
|
115
|
-
|
116
|
-
if (matches) {
|
117
|
-
red = toInt(matches[1] + matches[1], 16);
|
118
|
-
green = toInt(matches[2] + matches[2], 16);
|
119
|
-
blue = toInt(matches[3] + matches[3], 16);
|
120
|
-
} else {
|
121
|
-
return '';
|
122
|
-
}
|
123
|
-
}
|
124
|
-
}
|
125
|
-
|
126
|
-
return '#' + hex(red) + hex(green) + hex(blue);
|
127
|
-
}
|
128
|
-
|
129
|
-
function insertAction() {
|
130
|
-
var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
|
131
|
-
|
132
|
-
var hexColor = toHexColor(color);
|
133
|
-
|
134
|
-
if (hexColor === '') {
|
135
|
-
var text = tinyMCEPopup.editor.getLang('advanced_dlg.invalid_color_value');
|
136
|
-
tinyMCEPopup.alert(text + ': ' + color);
|
137
|
-
}
|
138
|
-
else {
|
139
|
-
tinyMCEPopup.restoreSelection();
|
140
|
-
|
141
|
-
if (f)
|
142
|
-
f(hexColor);
|
143
|
-
|
144
|
-
tinyMCEPopup.close();
|
145
|
-
}
|
146
|
-
}
|
147
|
-
|
148
|
-
function showColor(color, name) {
|
149
|
-
if (name)
|
150
|
-
document.getElementById("colorname").innerHTML = name;
|
151
|
-
|
152
|
-
document.getElementById("preview").style.backgroundColor = color;
|
153
|
-
document.getElementById("color").value = color.toUpperCase();
|
154
|
-
}
|
155
|
-
|
156
|
-
function convertRGBToHex(col) {
|
157
|
-
var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
|
158
|
-
|
159
|
-
if (!col)
|
160
|
-
return col;
|
161
|
-
|
162
|
-
var rgb = col.replace(re, "$1,$2,$3").split(',');
|
163
|
-
if (rgb.length == 3) {
|
164
|
-
r = parseInt(rgb[0]).toString(16);
|
165
|
-
g = parseInt(rgb[1]).toString(16);
|
166
|
-
b = parseInt(rgb[2]).toString(16);
|
167
|
-
|
168
|
-
r = r.length == 1 ? '0' + r : r;
|
169
|
-
g = g.length == 1 ? '0' + g : g;
|
170
|
-
b = b.length == 1 ? '0' + b : b;
|
171
|
-
|
172
|
-
return "#" + r + g + b;
|
173
|
-
}
|
174
|
-
|
175
|
-
return col;
|
176
|
-
}
|
177
|
-
|
178
|
-
function convertHexToRGB(col) {
|
179
|
-
if (col.indexOf('#') != -1) {
|
180
|
-
col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
|
181
|
-
|
182
|
-
r = parseInt(col.substring(0, 2), 16);
|
183
|
-
g = parseInt(col.substring(2, 4), 16);
|
184
|
-
b = parseInt(col.substring(4, 6), 16);
|
185
|
-
|
186
|
-
return {r : r, g : g, b : b};
|
187
|
-
}
|
188
|
-
|
189
|
-
return null;
|
190
|
-
}
|
191
|
-
|
192
|
-
function generatePicker() {
|
193
|
-
var el = document.getElementById('light'), h = '', i;
|
194
|
-
|
195
|
-
for (i = 0; i < detail; i++){
|
196
|
-
h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
|
197
|
-
+ ' onclick="changeFinalColor(this.style.backgroundColor)"'
|
198
|
-
+ ' onmousedown="isMouseDown = true; return false;"'
|
199
|
-
+ ' onmouseup="isMouseDown = false;"'
|
200
|
-
+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
|
201
|
-
+ ' onmouseover="isMouseOver = true;"'
|
202
|
-
+ ' onmouseout="isMouseOver = false;"'
|
203
|
-
+ '></div>';
|
204
|
-
}
|
205
|
-
|
206
|
-
el.innerHTML = h;
|
207
|
-
}
|
208
|
-
|
209
|
-
function generateWebColors() {
|
210
|
-
var el = document.getElementById('webcolors'), h = '', i;
|
211
|
-
|
212
|
-
if (el.className == 'generated')
|
213
|
-
return;
|
214
|
-
|
215
|
-
// TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby.
|
216
|
-
h += '<div role="listbox" aria-labelledby="webcolors_title" tabindex="0"><table role="presentation" border="0" cellspacing="1" cellpadding="0">'
|
217
|
-
+ '<tr>';
|
218
|
-
|
219
|
-
for (i=0; i<colors.length; i++) {
|
220
|
-
h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
|
221
|
-
+ '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="web_colors_' + i + '" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">';
|
222
|
-
if (tinyMCEPopup.editor.forcedHighContrastMode) {
|
223
|
-
h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
|
224
|
-
}
|
225
|
-
h += '<span class="mceVoiceLabel" style="display:none;" id="web_colors_' + i + '">' + colors[i].toUpperCase() + '</span>';
|
226
|
-
h += '</a></td>';
|
227
|
-
if ((i+1) % 18 == 0)
|
228
|
-
h += '</tr><tr>';
|
229
|
-
}
|
230
|
-
|
231
|
-
h += '</table></div>';
|
232
|
-
|
233
|
-
el.innerHTML = h;
|
234
|
-
el.className = 'generated';
|
235
|
-
|
236
|
-
paintCanvas(el);
|
237
|
-
enableKeyboardNavigation(el.firstChild);
|
238
|
-
}
|
239
|
-
|
240
|
-
function paintCanvas(el) {
|
241
|
-
tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) {
|
242
|
-
var context;
|
243
|
-
if (canvas.getContext && (context = canvas.getContext("2d"))) {
|
244
|
-
context.fillStyle = canvas.getAttribute('data-color');
|
245
|
-
context.fillRect(0, 0, 10, 10);
|
246
|
-
}
|
247
|
-
});
|
248
|
-
}
|
249
|
-
function generateNamedColors() {
|
250
|
-
var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
|
251
|
-
|
252
|
-
if (el.className == 'generated')
|
253
|
-
return;
|
254
|
-
|
255
|
-
for (n in named) {
|
256
|
-
v = named[n];
|
257
|
-
h += '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="named_colors_' + i + '" onfocus="showColor(\'' + n + '\',\'' + v + '\');" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '">';
|
258
|
-
if (tinyMCEPopup.editor.forcedHighContrastMode) {
|
259
|
-
h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
|
260
|
-
}
|
261
|
-
h += '<span class="mceVoiceLabel" style="display:none;" id="named_colors_' + i + '">' + v + '</span>';
|
262
|
-
h += '</a>';
|
263
|
-
i++;
|
264
|
-
}
|
265
|
-
|
266
|
-
el.innerHTML = h;
|
267
|
-
el.className = 'generated';
|
268
|
-
|
269
|
-
paintCanvas(el);
|
270
|
-
enableKeyboardNavigation(el);
|
271
|
-
}
|
272
|
-
|
273
|
-
function enableKeyboardNavigation(el) {
|
274
|
-
tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
|
275
|
-
root: el,
|
276
|
-
items: tinyMCEPopup.dom.select('a', el)
|
277
|
-
}, tinyMCEPopup.dom);
|
278
|
-
}
|
279
|
-
|
280
|
-
function dechex(n) {
|
281
|
-
return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
|
282
|
-
}
|
283
|
-
|
284
|
-
function computeColor(e) {
|
285
|
-
var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB, pos = tinyMCEPopup.dom.getPos(e.target);
|
286
|
-
|
287
|
-
x = e.offsetX ? e.offsetX : (e.target ? e.clientX - pos.x : 0);
|
288
|
-
y = e.offsetY ? e.offsetY : (e.target ? e.clientY - pos.y : 0);
|
289
|
-
|
290
|
-
partWidth = document.getElementById('colors').width / 6;
|
291
|
-
partDetail = detail / 2;
|
292
|
-
imHeight = document.getElementById('colors').height;
|
293
|
-
|
294
|
-
r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
|
295
|
-
g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
|
296
|
-
b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
|
297
|
-
|
298
|
-
coef = (imHeight - y) / imHeight;
|
299
|
-
r = 128 + (r - 128) * coef;
|
300
|
-
g = 128 + (g - 128) * coef;
|
301
|
-
b = 128 + (b - 128) * coef;
|
302
|
-
|
303
|
-
changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
|
304
|
-
updateLight(r, g, b);
|
305
|
-
}
|
306
|
-
|
307
|
-
function updateLight(r, g, b) {
|
308
|
-
var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
|
309
|
-
|
310
|
-
for (i=0; i<detail; i++) {
|
311
|
-
if ((i>=0) && (i<partDetail)) {
|
312
|
-
finalCoef = i / partDetail;
|
313
|
-
finalR = dechex(255 - (255 - r) * finalCoef);
|
314
|
-
finalG = dechex(255 - (255 - g) * finalCoef);
|
315
|
-
finalB = dechex(255 - (255 - b) * finalCoef);
|
316
|
-
} else {
|
317
|
-
finalCoef = 2 - i / partDetail;
|
318
|
-
finalR = dechex(r * finalCoef);
|
319
|
-
finalG = dechex(g * finalCoef);
|
320
|
-
finalB = dechex(b * finalCoef);
|
321
|
-
}
|
322
|
-
|
323
|
-
color = finalR + finalG + finalB;
|
324
|
-
|
325
|
-
setCol('gs' + i, '#'+color);
|
326
|
-
}
|
327
|
-
}
|
328
|
-
|
329
|
-
function changeFinalColor(color) {
|
330
|
-
if (color.indexOf('#') == -1)
|
331
|
-
color = convertRGBToHex(color);
|
332
|
-
|
333
|
-
setCol('preview', color);
|
334
|
-
document.getElementById('color').value = color;
|
335
|
-
}
|
336
|
-
|
337
|
-
function setCol(e, c) {
|
338
|
-
try {
|
339
|
-
document.getElementById(e).style.backgroundColor = c;
|
340
|
-
} catch (ex) {
|
341
|
-
// Ignore IE warning
|
342
|
-
}
|
343
|
-
}
|
344
|
-
|
345
|
-
tinyMCEPopup.onInit.add(init);
|
1
|
+
tinyMCEPopup.requireLangPack();
|
2
|
+
|
3
|
+
var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
|
4
|
+
|
5
|
+
var colors = [
|
6
|
+
"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
|
7
|
+
"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
|
8
|
+
"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
|
9
|
+
"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
|
10
|
+
"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
|
11
|
+
"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
|
12
|
+
"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
|
13
|
+
"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
|
14
|
+
"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
|
15
|
+
"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
|
16
|
+
"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
|
17
|
+
"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
|
18
|
+
"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
|
19
|
+
"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
|
20
|
+
"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
|
21
|
+
"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
|
22
|
+
"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
|
23
|
+
"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
|
24
|
+
"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
|
25
|
+
"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
|
26
|
+
"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
|
27
|
+
"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
|
28
|
+
"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
|
29
|
+
"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
|
30
|
+
"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
|
31
|
+
"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
|
32
|
+
"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
|
33
|
+
];
|
34
|
+
|
35
|
+
var named = {
|
36
|
+
'#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
|
37
|
+
'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown',
|
38
|
+
'#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue',
|
39
|
+
'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod',
|
40
|
+
'#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green',
|
41
|
+
'#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue',
|
42
|
+
'#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue',
|
43
|
+
'#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green',
|
44
|
+
'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey',
|
45
|
+
'#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory',
|
46
|
+
'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue',
|
47
|
+
'#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green',
|
48
|
+
'#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey',
|
49
|
+
'#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
|
50
|
+
'#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue',
|
51
|
+
'#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin',
|
52
|
+
'#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid',
|
53
|
+
'#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff',
|
54
|
+
'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue',
|
55
|
+
'#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver',
|
56
|
+
'#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green',
|
57
|
+
'#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
|
58
|
+
'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green'
|
59
|
+
};
|
60
|
+
|
61
|
+
var namedLookup = {};
|
62
|
+
|
63
|
+
function init() {
|
64
|
+
var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value;
|
65
|
+
|
66
|
+
tinyMCEPopup.resizeToInnerSize();
|
67
|
+
|
68
|
+
generatePicker();
|
69
|
+
generateWebColors();
|
70
|
+
generateNamedColors();
|
71
|
+
|
72
|
+
if (inputColor) {
|
73
|
+
changeFinalColor(inputColor);
|
74
|
+
|
75
|
+
col = convertHexToRGB(inputColor);
|
76
|
+
|
77
|
+
if (col)
|
78
|
+
updateLight(col.r, col.g, col.b);
|
79
|
+
}
|
80
|
+
|
81
|
+
for (key in named) {
|
82
|
+
value = named[key];
|
83
|
+
namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase();
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
function toHexColor(color) {
|
88
|
+
var matches, red, green, blue, toInt = parseInt;
|
89
|
+
|
90
|
+
function hex(value) {
|
91
|
+
value = parseInt(value).toString(16);
|
92
|
+
|
93
|
+
return value.length > 1 ? value : '0' + value; // Padd with leading zero
|
94
|
+
};
|
95
|
+
|
96
|
+
color = tinymce.trim(color);
|
97
|
+
color = color.replace(/^[#]/, '').toLowerCase(); // remove leading '#'
|
98
|
+
color = namedLookup[color] || color;
|
99
|
+
|
100
|
+
matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/.exec(color);
|
101
|
+
|
102
|
+
if (matches) {
|
103
|
+
red = toInt(matches[1]);
|
104
|
+
green = toInt(matches[2]);
|
105
|
+
blue = toInt(matches[3]);
|
106
|
+
} else {
|
107
|
+
matches = /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(color);
|
108
|
+
|
109
|
+
if (matches) {
|
110
|
+
red = toInt(matches[1], 16);
|
111
|
+
green = toInt(matches[2], 16);
|
112
|
+
blue = toInt(matches[3], 16);
|
113
|
+
} else {
|
114
|
+
matches = /^([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(color);
|
115
|
+
|
116
|
+
if (matches) {
|
117
|
+
red = toInt(matches[1] + matches[1], 16);
|
118
|
+
green = toInt(matches[2] + matches[2], 16);
|
119
|
+
blue = toInt(matches[3] + matches[3], 16);
|
120
|
+
} else {
|
121
|
+
return '';
|
122
|
+
}
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
return '#' + hex(red) + hex(green) + hex(blue);
|
127
|
+
}
|
128
|
+
|
129
|
+
function insertAction() {
|
130
|
+
var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
|
131
|
+
|
132
|
+
var hexColor = toHexColor(color);
|
133
|
+
|
134
|
+
if (hexColor === '') {
|
135
|
+
var text = tinyMCEPopup.editor.getLang('advanced_dlg.invalid_color_value');
|
136
|
+
tinyMCEPopup.alert(text + ': ' + color);
|
137
|
+
}
|
138
|
+
else {
|
139
|
+
tinyMCEPopup.restoreSelection();
|
140
|
+
|
141
|
+
if (f)
|
142
|
+
f(hexColor);
|
143
|
+
|
144
|
+
tinyMCEPopup.close();
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
function showColor(color, name) {
|
149
|
+
if (name)
|
150
|
+
document.getElementById("colorname").innerHTML = name;
|
151
|
+
|
152
|
+
document.getElementById("preview").style.backgroundColor = color;
|
153
|
+
document.getElementById("color").value = color.toUpperCase();
|
154
|
+
}
|
155
|
+
|
156
|
+
function convertRGBToHex(col) {
|
157
|
+
var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
|
158
|
+
|
159
|
+
if (!col)
|
160
|
+
return col;
|
161
|
+
|
162
|
+
var rgb = col.replace(re, "$1,$2,$3").split(',');
|
163
|
+
if (rgb.length == 3) {
|
164
|
+
r = parseInt(rgb[0]).toString(16);
|
165
|
+
g = parseInt(rgb[1]).toString(16);
|
166
|
+
b = parseInt(rgb[2]).toString(16);
|
167
|
+
|
168
|
+
r = r.length == 1 ? '0' + r : r;
|
169
|
+
g = g.length == 1 ? '0' + g : g;
|
170
|
+
b = b.length == 1 ? '0' + b : b;
|
171
|
+
|
172
|
+
return "#" + r + g + b;
|
173
|
+
}
|
174
|
+
|
175
|
+
return col;
|
176
|
+
}
|
177
|
+
|
178
|
+
function convertHexToRGB(col) {
|
179
|
+
if (col.indexOf('#') != -1) {
|
180
|
+
col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
|
181
|
+
|
182
|
+
r = parseInt(col.substring(0, 2), 16);
|
183
|
+
g = parseInt(col.substring(2, 4), 16);
|
184
|
+
b = parseInt(col.substring(4, 6), 16);
|
185
|
+
|
186
|
+
return {r : r, g : g, b : b};
|
187
|
+
}
|
188
|
+
|
189
|
+
return null;
|
190
|
+
}
|
191
|
+
|
192
|
+
function generatePicker() {
|
193
|
+
var el = document.getElementById('light'), h = '', i;
|
194
|
+
|
195
|
+
for (i = 0; i < detail; i++){
|
196
|
+
h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
|
197
|
+
+ ' onclick="changeFinalColor(this.style.backgroundColor)"'
|
198
|
+
+ ' onmousedown="isMouseDown = true; return false;"'
|
199
|
+
+ ' onmouseup="isMouseDown = false;"'
|
200
|
+
+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
|
201
|
+
+ ' onmouseover="isMouseOver = true;"'
|
202
|
+
+ ' onmouseout="isMouseOver = false;"'
|
203
|
+
+ '></div>';
|
204
|
+
}
|
205
|
+
|
206
|
+
el.innerHTML = h;
|
207
|
+
}
|
208
|
+
|
209
|
+
function generateWebColors() {
|
210
|
+
var el = document.getElementById('webcolors'), h = '', i;
|
211
|
+
|
212
|
+
if (el.className == 'generated')
|
213
|
+
return;
|
214
|
+
|
215
|
+
// TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby.
|
216
|
+
h += '<div role="listbox" aria-labelledby="webcolors_title" tabindex="0"><table role="presentation" border="0" cellspacing="1" cellpadding="0">'
|
217
|
+
+ '<tr>';
|
218
|
+
|
219
|
+
for (i=0; i<colors.length; i++) {
|
220
|
+
h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
|
221
|
+
+ '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="web_colors_' + i + '" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">';
|
222
|
+
if (tinyMCEPopup.editor.forcedHighContrastMode) {
|
223
|
+
h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
|
224
|
+
}
|
225
|
+
h += '<span class="mceVoiceLabel" style="display:none;" id="web_colors_' + i + '">' + colors[i].toUpperCase() + '</span>';
|
226
|
+
h += '</a></td>';
|
227
|
+
if ((i+1) % 18 == 0)
|
228
|
+
h += '</tr><tr>';
|
229
|
+
}
|
230
|
+
|
231
|
+
h += '</table></div>';
|
232
|
+
|
233
|
+
el.innerHTML = h;
|
234
|
+
el.className = 'generated';
|
235
|
+
|
236
|
+
paintCanvas(el);
|
237
|
+
enableKeyboardNavigation(el.firstChild);
|
238
|
+
}
|
239
|
+
|
240
|
+
function paintCanvas(el) {
|
241
|
+
tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) {
|
242
|
+
var context;
|
243
|
+
if (canvas.getContext && (context = canvas.getContext("2d"))) {
|
244
|
+
context.fillStyle = canvas.getAttribute('data-color');
|
245
|
+
context.fillRect(0, 0, 10, 10);
|
246
|
+
}
|
247
|
+
});
|
248
|
+
}
|
249
|
+
function generateNamedColors() {
|
250
|
+
var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
|
251
|
+
|
252
|
+
if (el.className == 'generated')
|
253
|
+
return;
|
254
|
+
|
255
|
+
for (n in named) {
|
256
|
+
v = named[n];
|
257
|
+
h += '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="named_colors_' + i + '" onfocus="showColor(\'' + n + '\',\'' + v + '\');" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '">';
|
258
|
+
if (tinyMCEPopup.editor.forcedHighContrastMode) {
|
259
|
+
h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
|
260
|
+
}
|
261
|
+
h += '<span class="mceVoiceLabel" style="display:none;" id="named_colors_' + i + '">' + v + '</span>';
|
262
|
+
h += '</a>';
|
263
|
+
i++;
|
264
|
+
}
|
265
|
+
|
266
|
+
el.innerHTML = h;
|
267
|
+
el.className = 'generated';
|
268
|
+
|
269
|
+
paintCanvas(el);
|
270
|
+
enableKeyboardNavigation(el);
|
271
|
+
}
|
272
|
+
|
273
|
+
function enableKeyboardNavigation(el) {
|
274
|
+
tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
|
275
|
+
root: el,
|
276
|
+
items: tinyMCEPopup.dom.select('a', el)
|
277
|
+
}, tinyMCEPopup.dom);
|
278
|
+
}
|
279
|
+
|
280
|
+
function dechex(n) {
|
281
|
+
return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
|
282
|
+
}
|
283
|
+
|
284
|
+
function computeColor(e) {
|
285
|
+
var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB, pos = tinyMCEPopup.dom.getPos(e.target);
|
286
|
+
|
287
|
+
x = e.offsetX ? e.offsetX : (e.target ? e.clientX - pos.x : 0);
|
288
|
+
y = e.offsetY ? e.offsetY : (e.target ? e.clientY - pos.y : 0);
|
289
|
+
|
290
|
+
partWidth = document.getElementById('colors').width / 6;
|
291
|
+
partDetail = detail / 2;
|
292
|
+
imHeight = document.getElementById('colors').height;
|
293
|
+
|
294
|
+
r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
|
295
|
+
g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
|
296
|
+
b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
|
297
|
+
|
298
|
+
coef = (imHeight - y) / imHeight;
|
299
|
+
r = 128 + (r - 128) * coef;
|
300
|
+
g = 128 + (g - 128) * coef;
|
301
|
+
b = 128 + (b - 128) * coef;
|
302
|
+
|
303
|
+
changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
|
304
|
+
updateLight(r, g, b);
|
305
|
+
}
|
306
|
+
|
307
|
+
function updateLight(r, g, b) {
|
308
|
+
var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
|
309
|
+
|
310
|
+
for (i=0; i<detail; i++) {
|
311
|
+
if ((i>=0) && (i<partDetail)) {
|
312
|
+
finalCoef = i / partDetail;
|
313
|
+
finalR = dechex(255 - (255 - r) * finalCoef);
|
314
|
+
finalG = dechex(255 - (255 - g) * finalCoef);
|
315
|
+
finalB = dechex(255 - (255 - b) * finalCoef);
|
316
|
+
} else {
|
317
|
+
finalCoef = 2 - i / partDetail;
|
318
|
+
finalR = dechex(r * finalCoef);
|
319
|
+
finalG = dechex(g * finalCoef);
|
320
|
+
finalB = dechex(b * finalCoef);
|
321
|
+
}
|
322
|
+
|
323
|
+
color = finalR + finalG + finalB;
|
324
|
+
|
325
|
+
setCol('gs' + i, '#'+color);
|
326
|
+
}
|
327
|
+
}
|
328
|
+
|
329
|
+
function changeFinalColor(color) {
|
330
|
+
if (color.indexOf('#') == -1)
|
331
|
+
color = convertRGBToHex(color);
|
332
|
+
|
333
|
+
setCol('preview', color);
|
334
|
+
document.getElementById('color').value = color;
|
335
|
+
}
|
336
|
+
|
337
|
+
function setCol(e, c) {
|
338
|
+
try {
|
339
|
+
document.getElementById(e).style.backgroundColor = c;
|
340
|
+
} catch (ex) {
|
341
|
+
// Ignore IE warning
|
342
|
+
}
|
343
|
+
}
|
344
|
+
|
345
|
+
tinyMCEPopup.onInit.add(init);
|