Subversion-Projekte lars-tiefland.content-management

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
/**
2
 * editor_plugin_src.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
(function() {
12
	tinymce.create('tinymce.plugins.VisualChars', {
13
		init : function(ed, url) {
14
			var t = this;
15
 
16
			t.editor = ed;
17
 
18
			// Register commands
19
			ed.addCommand('mceVisualChars', t._toggleVisualChars, t);
20
 
21
			// Register buttons
22
			ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});
23
 
24
			ed.onBeforeGetContent.add(function(ed, o) {
25
				if (t.state && o.format != 'raw' && !o.draft) {
26
					t.state = true;
27
					t._toggleVisualChars(false);
28
				}
29
			});
30
		},
31
 
32
		getInfo : function() {
33
			return {
34
				longname : 'Visual characters',
35
				author : 'Moxiecode Systems AB',
36
				authorurl : 'http://tinymce.moxiecode.com',
37
				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
38
				version : tinymce.majorVersion + "." + tinymce.minorVersion
39
			};
40
		},
41
 
42
		// Private methods
43
 
44
		_toggleVisualChars : function(bookmark) {
45
			var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm;
46
 
47
			t.state = !t.state;
48
			ed.controlManager.setActive('visualchars', t.state);
49
 
50
			if (bookmark)
51
				bm = s.getBookmark();
52
 
53
			if (t.state) {
54
				nl = [];
55
				tinymce.walk(b, function(n) {
56
					if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)
57
						nl.push(n);
58
				}, 'childNodes');
59
 
60
				for (i = 0; i < nl.length; i++) {
61
					nv = nl[i].nodeValue;
62
					nv = nv.replace(/(\u00a0)/g, '<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">$1</span>');
63
 
64
					div = ed.dom.create('div', null, nv);
65
					while (node = div.lastChild)
66
						ed.dom.insertAfter(node, nl[i]);
67
 
68
					ed.dom.remove(nl[i]);
69
				}
70
			} else {
71
				nl = ed.dom.select('span.mceItemNbsp', b);
72
 
73
				for (i = nl.length - 1; i >= 0; i--)
74
					ed.dom.remove(nl[i], 1);
75
			}
76
 
77
			s.moveToBookmark(bm);
78
		}
79
	});
80
 
81
	// Register plugin
82
	tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);
83
})();