Mercurial > public > sg101
comparison static/js/tiny_mce/plugins/visualchars/editor_plugin_src.js @ 312:88b2b9cb8c1f
Fixing #142; cut over to the django.contrib.staticfiles app.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 27 Jan 2011 02:56:10 +0000 |
parents | |
children | 6c182ceb7147 |
comparison
equal
deleted
inserted
replaced
311:b1c39788e511 | 312:88b2b9cb8c1f |
---|---|
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 _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 })(); |