Mercurial > public > sg101
comparison media/js/tiny_mce/plugins/visualchars/editor_plugin_src.js @ 247:6ed2932901fa
Update tinymce to 3.3.9
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 18 Sep 2010 19:54:11 +0000 |
parents | 149c3567fec1 |
children |
comparison
equal
deleted
inserted
replaced
246:e4dc0b649fcb | 247:6ed2932901fa |
---|---|
20 | 20 |
21 // Register buttons | 21 // Register buttons |
22 ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'}); | 22 ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'}); |
23 | 23 |
24 ed.onBeforeGetContent.add(function(ed, o) { | 24 ed.onBeforeGetContent.add(function(ed, o) { |
25 if (t.state) { | 25 if (t.state && o.format != 'raw' && !o.draft) { |
26 t.state = true; | 26 t.state = true; |
27 t._toggleVisualChars(); | 27 t._toggleVisualChars(false); |
28 } | 28 } |
29 }); | 29 }); |
30 }, | 30 }, |
31 | 31 |
32 getInfo : function() { | 32 getInfo : function() { |
39 }; | 39 }; |
40 }, | 40 }, |
41 | 41 |
42 // Private methods | 42 // Private methods |
43 | 43 |
44 _toggleVisualChars : function() { | 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; | 45 var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm; |
46 | 46 |
47 t.state = !t.state; | 47 t.state = !t.state; |
48 ed.controlManager.setActive('visualchars', t.state); | 48 ed.controlManager.setActive('visualchars', t.state); |
49 | |
50 if (bookmark) | |
51 bm = s.getBookmark(); | |
49 | 52 |
50 if (t.state) { | 53 if (t.state) { |
51 nl = []; | 54 nl = []; |
52 tinymce.walk(b, function(n) { | 55 tinymce.walk(b, function(n) { |
53 if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1) | 56 if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1) |
54 nl.push(n); | 57 nl.push(n); |
55 }, 'childNodes'); | 58 }, 'childNodes'); |
56 | 59 |
57 for (i=0; i<nl.length; i++) { | 60 for (i = 0; i < nl.length; i++) { |
58 nv = nl[i].nodeValue; | 61 nv = nl[i].nodeValue; |
59 nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHidden mceVisualNbsp">$1</span>'); | 62 nv = nv.replace(/(\u00a0)/g, '<span _mce_bogus="1" class="mceItemHidden mceItemNbsp">$1</span>'); |
60 nv = nv.replace(/\u00a0/g, '\u00b7'); | 63 |
61 ed.dom.setOuterHTML(nl[i], nv, d); | 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]); | |
62 } | 69 } |
63 } else { | 70 } else { |
64 nl = tinymce.grep(ed.dom.select('span', b), function(n) { | 71 nl = ed.dom.select('span.mceItemNbsp', b); |
65 return ed.dom.hasClass(n, 'mceVisualNbsp'); | |
66 }); | |
67 | 72 |
68 for (i=0; i<nl.length; i++) | 73 for (i = nl.length - 1; i >= 0; i--) |
69 ed.dom.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(·|\u00b7)/g, ' '), d); | 74 ed.dom.remove(nl[i], 1); |
70 } | 75 } |
76 | |
77 s.moveToBookmark(bm); | |
71 } | 78 } |
72 }); | 79 }); |
73 | 80 |
74 // Register plugin | 81 // Register plugin |
75 tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars); | 82 tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars); |