Subversion-Projekte lars-tiefland.content-management

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
/**
2
 * charmap.js
3
 *
4
 * Copyright 2009, Moxiecode Systems AB
5
 * Released under LGPL License.
6
 *
7
 * License: http://tinymce.moxiecode.com/license
8
 * Contributing: http://tinymce.moxiecode.com/contributing
9
 */
10
 
11
tinyMCEPopup.requireLangPack();
12
 
13
var charmap = [
14
	[' ',    ' ',  true, 'no-break space'],
15
	['&',     '&',   true, 'ampersand'],
16
	['"',    '"',   true, 'quotation mark'],
17
// finance
18
	['¢',    '¢',  true, 'cent sign'],
19
	['€',    '€', true, 'euro sign'],
20
	['£',   '£',  true, 'pound sign'],
21
	['¥',     '¥',  true, 'yen sign'],
22
// signs
23
	['©',    '©',  true, 'copyright sign'],
24
	['®',     '®',  true, 'registered sign'],
25
	['™',   '™', true, 'trade mark sign'],
26
	['‰',  '‰', true, 'per mille sign'],
27
	['µ',   'µ',  true, 'micro sign'],
28
	['·',  '·',  true, 'middle dot'],
29
	['•',    '•', true, 'bullet'],
30
	['…',  '…', true, 'three dot leader'],
31
	['′',   '′', true, 'minutes / feet'],
32
	['″',   '″', true, 'seconds / inches'],
33
	['§',    '§',  true, 'section sign'],
34
	['¶',    '¶',  true, 'paragraph sign'],
35
	['ß',   'ß',  true, 'sharp s / ess-zed'],
36
// quotations
37
	['‹',  '‹', true, 'single left-pointing angle quotation mark'],
38
	['›',  '›', true, 'single right-pointing angle quotation mark'],
39
	['«',   '«',  true, 'left pointing guillemet'],
40
	['»',   '»',  true, 'right pointing guillemet'],
41
	['‘',   '‘', true, 'left single quotation mark'],
42
	['’',   '’', true, 'right single quotation mark'],
43
	['“',   '“', true, 'left double quotation mark'],
44
	['”',   '”', true, 'right double quotation mark'],
45
	['‚',   '‚', true, 'single low-9 quotation mark'],
46
	['„',   '„', true, 'double low-9 quotation mark'],
47
	['<',      '<',   true, 'less-than sign'],
48
	['>',      '>',   true, 'greater-than sign'],
49
	['≤',      '≤', true, 'less-than or equal to'],
50
	['≥',      '≥', true, 'greater-than or equal to'],
51
	['–',   '–', true, 'en dash'],
52
	['—',   '—', true, 'em dash'],
53
	['¯',    '¯',  true, 'macron'],
54
	['‾',   '‾', true, 'overline'],
55
	['¤',  '¤',  true, 'currency sign'],
56
	['¦',  '¦',  true, 'broken bar'],
57
	['¨',     '¨',  true, 'diaeresis'],
58
	['¡',   '¡',  true, 'inverted exclamation mark'],
59
	['¿',  '¿',  true, 'turned question mark'],
60
	['ˆ',    'ˆ',  true, 'circumflex accent'],
61
	['˜',   '˜',  true, 'small tilde'],
62
	['°',     '°',  true, 'degree sign'],
63
	['−',   '−', true, 'minus sign'],
64
	['±',  '±',  true, 'plus-minus sign'],
65
	['÷',  '÷',  true, 'division sign'],
66
	['⁄',   '⁄', true, 'fraction slash'],
67
	['×',   '×',  true, 'multiplication sign'],
68
	['¹',    '¹',  true, 'superscript one'],
69
	['²',    '²',  true, 'superscript two'],
70
	['³',    '³',  true, 'superscript three'],
71
	['¼',  '¼',  true, 'fraction one quarter'],
72
	['½',  '½',  true, 'fraction one half'],
73
	['¾',  '¾',  true, 'fraction three quarters'],
74
// math / logical
75
	['ƒ',    'ƒ',  true, 'function / florin'],
76
	['∫',     '∫', true, 'integral'],
77
	['∑',     '∑', true, 'n-ary sumation'],
78
	['∞',   '∞', true, 'infinity'],
79
	['√',   '√', true, 'square root'],
80
	['∼',     '∼', false,'similar to'],
81
	['≅',    '≅', false,'approximately equal to'],
82
	['≈',   '≈', true, 'almost equal to'],
83
	['≠',      '≠', true, 'not equal to'],
84
	['≡',   '≡', true, 'identical to'],
85
	['∈',    '∈', false,'element of'],
86
	['∉',   '∉', false,'not an element of'],
87
	['∋',      '∋', false,'contains as member'],
88
	['∏',    '∏', true, 'n-ary product'],
89
	['∧',     '∧', false,'logical and'],
90
	['∨',      '∨', false,'logical or'],
91
	['¬',     '¬',  true, 'not sign'],
92
	['∩',     '∩', true, 'intersection'],
93
	['∪',     '∪', false,'union'],
94
	['∂',    '∂', true, 'partial differential'],
95
	['∀',  '∀', false,'for all'],
96
	['∃',   '∃', false,'there exists'],
97
	['∅',   '∅', false,'diameter'],
98
	['∇',   '∇', false,'backward difference'],
99
	['∗',  '∗', false,'asterisk operator'],
100
	['∝',    '∝', false,'proportional to'],
101
	['∠',     '∠', false,'angle'],
102
// undefined
103
	['´',   '´',  true, 'acute accent'],
104
	['¸',   '¸',  true, 'cedilla'],
105
	['ª',    'ª',  true, 'feminine ordinal indicator'],
106
	['º',    'º',  true, 'masculine ordinal indicator'],
107
	['†',  '†', true, 'dagger'],
108
	['‡',  '‡', true, 'double dagger'],
109
// alphabetical special chars
110
	['À',  'À',  true, 'A - grave'],
111
	['Á',  'Á',  true, 'A - acute'],
112
	['Â',   'Â',  true, 'A - circumflex'],
113
	['Ã',  'Ã',  true, 'A - tilde'],
114
	['Ä',    'Ä',  true, 'A - diaeresis'],
115
	['Å',   'Å',  true, 'A - ring above'],
116
	['Æ',   'Æ',  true, 'ligature AE'],
117
	['Ç',  'Ç',  true, 'C - cedilla'],
118
	['È',  'È',  true, 'E - grave'],
119
	['É',  'É',  true, 'E - acute'],
120
	['Ê',   'Ê',  true, 'E - circumflex'],
121
	['Ë',    'Ë',  true, 'E - diaeresis'],
122
	['Ì',  'Ì',  true, 'I - grave'],
123
	['Í',  'Í',  true, 'I - acute'],
124
	['Î',   'Î',  true, 'I - circumflex'],
125
	['Ï',    'Ï',  true, 'I - diaeresis'],
126
	['Ð',     'Ð',  true, 'ETH'],
127
	['Ñ',  'Ñ',  true, 'N - tilde'],
128
	['Ò',  'Ò',  true, 'O - grave'],
129
	['Ó',  'Ó',  true, 'O - acute'],
130
	['Ô',   'Ô',  true, 'O - circumflex'],
131
	['Õ',  'Õ',  true, 'O - tilde'],
132
	['Ö',    'Ö',  true, 'O - diaeresis'],
133
	['Ø',  'Ø',  true, 'O - slash'],
134
	['Œ',   'Œ',  true, 'ligature OE'],
135
	['Š',  'Š',  true, 'S - caron'],
136
	['Ù',  'Ù',  true, 'U - grave'],
137
	['Ú',  'Ú',  true, 'U - acute'],
138
	['Û',   'Û',  true, 'U - circumflex'],
139
	['Ü',    'Ü',  true, 'U - diaeresis'],
140
	['Ý',  'Ý',  true, 'Y - acute'],
141
	['Ÿ',    'Ÿ',  true, 'Y - diaeresis'],
142
	['Þ',   'Þ',  true, 'THORN'],
143
	['à',  'à',  true, 'a - grave'],
144
	['á',  'á',  true, 'a - acute'],
145
	['â',   'â',  true, 'a - circumflex'],
146
	['ã',  'ã',  true, 'a - tilde'],
147
	['ä',    'ä',  true, 'a - diaeresis'],
148
	['å',   'å',  true, 'a - ring above'],
149
	['æ',   'æ',  true, 'ligature ae'],
150
	['ç',  'ç',  true, 'c - cedilla'],
151
	['è',  'è',  true, 'e - grave'],
152
	['é',  'é',  true, 'e - acute'],
153
	['ê',   'ê',  true, 'e - circumflex'],
154
	['ë',    'ë',  true, 'e - diaeresis'],
155
	['ì',  'ì',  true, 'i - grave'],
156
	['í',  'í',  true, 'i - acute'],
157
	['î',   'î',  true, 'i - circumflex'],
158
	['ï',    'ï',  true, 'i - diaeresis'],
159
	['ð',     'ð',  true, 'eth'],
160
	['ñ',  'ñ',  true, 'n - tilde'],
161
	['ò',  'ò',  true, 'o - grave'],
162
	['ó',  'ó',  true, 'o - acute'],
163
	['ô',   'ô',  true, 'o - circumflex'],
164
	['õ',  'õ',  true, 'o - tilde'],
165
	['ö',    'ö',  true, 'o - diaeresis'],
166
	['ø',  'ø',  true, 'o slash'],
167
	['œ',   'œ',  true, 'ligature oe'],
168
	['š',  'š',  true, 's - caron'],
169
	['ù',  'ù',  true, 'u - grave'],
170
	['ú',  'ú',  true, 'u - acute'],
171
	['û',   'û',  true, 'u - circumflex'],
172
	['ü',    'ü',  true, 'u - diaeresis'],
173
	['ý',  'ý',  true, 'y - acute'],
174
	['þ',   'þ',  true, 'thorn'],
175
	['ÿ',    'ÿ',  true, 'y - diaeresis'],
176
	['Α',   'Α',  true, 'Alpha'],
177
	['Β',    'Β',  true, 'Beta'],
178
	['Γ',   'Γ',  true, 'Gamma'],
179
	['Δ',   'Δ',  true, 'Delta'],
180
	['Ε', 'Ε',  true, 'Epsilon'],
181
	['Ζ',    'Ζ',  true, 'Zeta'],
182
	['Η',     'Η',  true, 'Eta'],
183
	['Θ',   'Θ',  true, 'Theta'],
184
	['Ι',    'Ι',  true, 'Iota'],
185
	['Κ',   'Κ',  true, 'Kappa'],
186
	['Λ',  'Λ',  true, 'Lambda'],
187
	['Μ',      'Μ',  true, 'Mu'],
188
	['Ν',      'Ν',  true, 'Nu'],
189
	['Ξ',      'Ξ',  true, 'Xi'],
190
	['Ο', 'Ο',  true, 'Omicron'],
191
	['Π',      'Π',  true, 'Pi'],
192
	['Ρ',     'Ρ',  true, 'Rho'],
193
	['Σ',   'Σ',  true, 'Sigma'],
194
	['Τ',     'Τ',  true, 'Tau'],
195
	['Υ', 'Υ',  true, 'Upsilon'],
196
	['Φ',     'Φ',  true, 'Phi'],
197
	['Χ',     'Χ',  true, 'Chi'],
198
	['Ψ',     'Ψ',  true, 'Psi'],
199
	['Ω',   'Ω',  true, 'Omega'],
200
	['α',   'α',  true, 'alpha'],
201
	['β',    'β',  true, 'beta'],
202
	['γ',   'γ',  true, 'gamma'],
203
	['δ',   'δ',  true, 'delta'],
204
	['ε', 'ε',  true, 'epsilon'],
205
	['ζ',    'ζ',  true, 'zeta'],
206
	['η',     'η',  true, 'eta'],
207
	['θ',   'θ',  true, 'theta'],
208
	['ι',    'ι',  true, 'iota'],
209
	['κ',   'κ',  true, 'kappa'],
210
	['λ',  'λ',  true, 'lambda'],
211
	['μ',      'μ',  true, 'mu'],
212
	['ν',      'ν',  true, 'nu'],
213
	['ξ',      'ξ',  true, 'xi'],
214
	['ο', 'ο',  true, 'omicron'],
215
	['π',      'π',  true, 'pi'],
216
	['ρ',     'ρ',  true, 'rho'],
217
	['ς',  'ς',  true, 'final sigma'],
218
	['σ',   'σ',  true, 'sigma'],
219
	['τ',     'τ',  true, 'tau'],
220
	['υ', 'υ',  true, 'upsilon'],
221
	['φ',     'φ',  true, 'phi'],
222
	['χ',     'χ',  true, 'chi'],
223
	['ψ',     'ψ',  true, 'psi'],
224
	['ω',   'ω',  true, 'omega'],
225
// symbols
226
	['ℵ', 'ℵ', false,'alef symbol'],
227
	['ϖ',     'ϖ',  false,'pi symbol'],
228
	['ℜ',    'ℜ', false,'real part symbol'],
229
	['ϑ','ϑ',  false,'theta symbol'],
230
	['ϒ',   'ϒ',  false,'upsilon - hook symbol'],
231
	['℘',  '℘', false,'Weierstrass p'],
232
	['ℑ',   'ℑ', false,'imaginary part'],
233
// arrows
234
	['←',    '←', true, 'leftwards arrow'],
235
	['↑',    '↑', true, 'upwards arrow'],
236
	['→',    '→', true, 'rightwards arrow'],
237
	['↓',    '↓', true, 'downwards arrow'],
238
	['↔',    '↔', true, 'left right arrow'],
239
	['↵',   '↵', false,'carriage return'],
240
	['⇐',    '⇐', false,'leftwards double arrow'],
241
	['⇑',    '⇑', false,'upwards double arrow'],
242
	['⇒',    '⇒', false,'rightwards double arrow'],
243
	['⇓',    '⇓', false,'downwards double arrow'],
244
	['⇔',    '⇔', false,'left right double arrow'],
245
	['∴',  '∴', false,'therefore'],
246
	['⊂',     '⊂', false,'subset of'],
247
	['⊃',     '⊃', false,'superset of'],
248
	['⊄',    '⊄', false,'not a subset of'],
249
	['⊆',    '⊆', false,'subset of or equal to'],
250
	['⊇',    '⊇', false,'superset of or equal to'],
251
	['⊕',   '⊕', false,'circled plus'],
252
	['⊗',  '⊗', false,'circled times'],
253
	['⊥',    '⊥', false,'perpendicular'],
254
	['⋅',    '⋅', false,'dot operator'],
255
	['⌈',   '⌈', false,'left ceiling'],
256
	['⌉',   '⌉', false,'right ceiling'],
257
	['⌊',  '⌊', false,'left floor'],
258
	['⌋',  '⌋', false,'right floor'],
259
	['⟨',    '〈', false,'left-pointing angle bracket'],
260
	['⟩',    '〉', false,'right-pointing angle bracket'],
261
	['◊',     '◊', true, 'lozenge'],
262
	['♠',  '♠', true, 'black spade suit'],
263
	['♣',   '♣', true, 'black club suit'],
264
	['♥',  '♥', true, 'black heart suit'],
265
	['♦',   '♦', true, 'black diamond suit'],
266
	[' ',    ' ', false,'en space'],
267
	[' ',    ' ', false,'em space'],
268
	[' ',  ' ', false,'thin space'],
269
	['‌',    '‌', false,'zero width non-joiner'],
270
	['‍',     '‍', false,'zero width joiner'],
271
	['‎',     '‎', false,'left-to-right mark'],
272
	['‏',     '‏', false,'right-to-left mark'],
273
	['­',     '­',  false,'soft hyphen']
274
];
275
 
276
tinyMCEPopup.onInit.add(function() {
277
	tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
278
	addKeyboardNavigation();
279
});
280
 
281
function addKeyboardNavigation(){
282
	var tableElm, cells, settings;
283
 
284
	cells = tinyMCEPopup.dom.select(".charmaplink", "charmapgroup");
285
 
286
	settings ={
287
		root: "charmapgroup",
288
		items: cells
289
	};
290
 
291
	tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
292
}
293
 
294
function renderCharMapHTML() {
295
	var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
296
	var html = '<div id="charmapgroup" aria-labelledby="charmap_label" tabindex="0" role="listbox">'+
297
	'<table role="presentation" border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) +
298
	'"><tr height="' + tdHeight + '">';
299
	var cols=-1;
300
 
301
	for (i=0; i<charmap.length; i++) {
302
		var previewCharFn;
303
 
304
		if (charmap[i][2]==true) {
305
			cols++;
306
			previewCharFn = 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');';
307
			html += ''
308
				+ '<td class="charmap">'
309
				+ '<a class="charmaplink" role="button" onmouseover="'+previewCharFn+'" onfocus="'+previewCharFn+'" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
310
				+ charmap[i][1]
311
				+ '</a></td>';
312
			if ((cols+1) % charsPerRow == 0)
313
				html += '</tr><tr height="' + tdHeight + '">';
314
		}
315
	 }
316
 
317
	if (cols % charsPerRow > 0) {
318
		var padd = charsPerRow - (cols % charsPerRow);
319
		for (var i=0; i<padd-1; i++)
320
			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
321
	}
322
 
323
	html += '</tr></table></div>';
324
	html = html.replace(/<tr height="20"><\/tr>/g, '');
325
 
326
	return html;
327
}
328
 
329
function insertChar(chr) {
330
	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
331
 
332
	// Refocus in window
333
	if (tinyMCEPopup.isWindow)
334
		window.focus();
335
 
336
	tinyMCEPopup.editor.focus();
337
	tinyMCEPopup.close();
338
}
339
 
340
function previewChar(codeA, codeB, codeN) {
341
	var elmA = document.getElementById('codeA');
342
	var elmB = document.getElementById('codeB');
343
	var elmV = document.getElementById('codeV');
344
	var elmN = document.getElementById('codeN');
345
 
346
	if (codeA=='#160;') {
347
		elmV.innerHTML = '__';
348
	} else {
349
		elmV.innerHTML = '&' + codeA;
350
	}
351
 
352
	elmB.innerHTML = '&amp;' + codeA;
353
	elmA.innerHTML = '&amp;' + codeB;
354
	elmN.innerHTML = codeN;
355
}