root / static / js / tinymce / plugins / noneditable / editor_plugin_src.js @ 6ecbf4ec
History | View | Annotate | Download (2.3 kB)
1 | 6ecbf4ec | Leonidas Poulopoulos | /**
|
---|---|---|---|
2 | 6ecbf4ec | Leonidas Poulopoulos | * editor_plugin_src.js
|
3 | 6ecbf4ec | Leonidas Poulopoulos | *
|
4 | 6ecbf4ec | Leonidas Poulopoulos | * Copyright 2009, Moxiecode Systems AB
|
5 | 6ecbf4ec | Leonidas Poulopoulos | * Released under LGPL License.
|
6 | 6ecbf4ec | Leonidas Poulopoulos | *
|
7 | 6ecbf4ec | Leonidas Poulopoulos | * License: http://tinymce.moxiecode.com/license
|
8 | 6ecbf4ec | Leonidas Poulopoulos | * Contributing: http://tinymce.moxiecode.com/contributing
|
9 | 6ecbf4ec | Leonidas Poulopoulos | */
|
10 | 6ecbf4ec | Leonidas Poulopoulos | |
11 | 6ecbf4ec | Leonidas Poulopoulos | (function() {
|
12 | 6ecbf4ec | Leonidas Poulopoulos | var Event = tinymce.dom.Event;
|
13 | 6ecbf4ec | Leonidas Poulopoulos | |
14 | 6ecbf4ec | Leonidas Poulopoulos | tinymce.create('tinymce.plugins.NonEditablePlugin', {
|
15 | 6ecbf4ec | Leonidas Poulopoulos | init : function(ed, url) { |
16 | 6ecbf4ec | Leonidas Poulopoulos | var t = this, editClass, nonEditClass; |
17 | 6ecbf4ec | Leonidas Poulopoulos | |
18 | 6ecbf4ec | Leonidas Poulopoulos | t.editor = ed; |
19 | 6ecbf4ec | Leonidas Poulopoulos | editClass = ed.getParam("noneditable_editable_class", "mceEditable"); |
20 | 6ecbf4ec | Leonidas Poulopoulos | nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable"); |
21 | 6ecbf4ec | Leonidas Poulopoulos | |
22 | 6ecbf4ec | Leonidas Poulopoulos | ed.onNodeChange.addToTop(function(ed, cm, n) {
|
23 | 6ecbf4ec | Leonidas Poulopoulos | var sc, ec;
|
24 | 6ecbf4ec | Leonidas Poulopoulos | |
25 | 6ecbf4ec | Leonidas Poulopoulos | // Block if start or end is inside a non editable element
|
26 | 6ecbf4ec | Leonidas Poulopoulos | sc = ed.dom.getParent(ed.selection.getStart(), function(n) {
|
27 | 6ecbf4ec | Leonidas Poulopoulos | return ed.dom.hasClass(n, nonEditClass);
|
28 | 6ecbf4ec | Leonidas Poulopoulos | }); |
29 | 6ecbf4ec | Leonidas Poulopoulos | |
30 | 6ecbf4ec | Leonidas Poulopoulos | ec = ed.dom.getParent(ed.selection.getEnd(), function(n) {
|
31 | 6ecbf4ec | Leonidas Poulopoulos | return ed.dom.hasClass(n, nonEditClass);
|
32 | 6ecbf4ec | Leonidas Poulopoulos | }); |
33 | 6ecbf4ec | Leonidas Poulopoulos | |
34 | 6ecbf4ec | Leonidas Poulopoulos | // Block or unblock
|
35 | 6ecbf4ec | Leonidas Poulopoulos | if (sc || ec) {
|
36 | 6ecbf4ec | Leonidas Poulopoulos | t._setDisabled(1);
|
37 | 6ecbf4ec | Leonidas Poulopoulos | return false; |
38 | 6ecbf4ec | Leonidas Poulopoulos | } else
|
39 | 6ecbf4ec | Leonidas Poulopoulos | t._setDisabled(0);
|
40 | 6ecbf4ec | Leonidas Poulopoulos | }); |
41 | 6ecbf4ec | Leonidas Poulopoulos | }, |
42 | 6ecbf4ec | Leonidas Poulopoulos | |
43 | 6ecbf4ec | Leonidas Poulopoulos | getInfo : function() { |
44 | 6ecbf4ec | Leonidas Poulopoulos | return {
|
45 | 6ecbf4ec | Leonidas Poulopoulos | longname : 'Non editable elements', |
46 | 6ecbf4ec | Leonidas Poulopoulos | author : 'Moxiecode Systems AB', |
47 | 6ecbf4ec | Leonidas Poulopoulos | authorurl : 'http://tinymce.moxiecode.com', |
48 | 6ecbf4ec | Leonidas Poulopoulos | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable', |
49 | 6ecbf4ec | Leonidas Poulopoulos | version : tinymce.majorVersion + "." + tinymce.minorVersion |
50 | 6ecbf4ec | Leonidas Poulopoulos | }; |
51 | 6ecbf4ec | Leonidas Poulopoulos | }, |
52 | 6ecbf4ec | Leonidas Poulopoulos | |
53 | 6ecbf4ec | Leonidas Poulopoulos | _block : function(ed, e) { |
54 | 6ecbf4ec | Leonidas Poulopoulos | var k = e.keyCode;
|
55 | 6ecbf4ec | Leonidas Poulopoulos | |
56 | 6ecbf4ec | Leonidas Poulopoulos | // Don't block arrow keys, pg up/down, and F1-F12
|
57 | 6ecbf4ec | Leonidas Poulopoulos | if ((k > 32 && k < 41) || (k > 111 && k < 124)) |
58 | 6ecbf4ec | Leonidas Poulopoulos | return;
|
59 | 6ecbf4ec | Leonidas Poulopoulos | |
60 | 6ecbf4ec | Leonidas Poulopoulos | return Event.cancel(e);
|
61 | 6ecbf4ec | Leonidas Poulopoulos | }, |
62 | 6ecbf4ec | Leonidas Poulopoulos | |
63 | 6ecbf4ec | Leonidas Poulopoulos | _setDisabled : function(s) { |
64 | 6ecbf4ec | Leonidas Poulopoulos | var t = this, ed = t.editor; |
65 | 6ecbf4ec | Leonidas Poulopoulos | |
66 | 6ecbf4ec | Leonidas Poulopoulos | tinymce.each(ed.controlManager.controls, function(c) {
|
67 | 6ecbf4ec | Leonidas Poulopoulos | c.setDisabled(s); |
68 | 6ecbf4ec | Leonidas Poulopoulos | }); |
69 | 6ecbf4ec | Leonidas Poulopoulos | |
70 | 6ecbf4ec | Leonidas Poulopoulos | if (s !== t.disabled) {
|
71 | 6ecbf4ec | Leonidas Poulopoulos | if (s) {
|
72 | 6ecbf4ec | Leonidas Poulopoulos | ed.onKeyDown.addToTop(t._block); |
73 | 6ecbf4ec | Leonidas Poulopoulos | ed.onKeyPress.addToTop(t._block); |
74 | 6ecbf4ec | Leonidas Poulopoulos | ed.onKeyUp.addToTop(t._block); |
75 | 6ecbf4ec | Leonidas Poulopoulos | ed.onPaste.addToTop(t._block); |
76 | 6ecbf4ec | Leonidas Poulopoulos | } else {
|
77 | 6ecbf4ec | Leonidas Poulopoulos | ed.onKeyDown.remove(t._block); |
78 | 6ecbf4ec | Leonidas Poulopoulos | ed.onKeyPress.remove(t._block); |
79 | 6ecbf4ec | Leonidas Poulopoulos | ed.onKeyUp.remove(t._block); |
80 | 6ecbf4ec | Leonidas Poulopoulos | ed.onPaste.remove(t._block); |
81 | 6ecbf4ec | Leonidas Poulopoulos | } |
82 | 6ecbf4ec | Leonidas Poulopoulos | |
83 | 6ecbf4ec | Leonidas Poulopoulos | t.disabled = s; |
84 | 6ecbf4ec | Leonidas Poulopoulos | } |
85 | 6ecbf4ec | Leonidas Poulopoulos | } |
86 | 6ecbf4ec | Leonidas Poulopoulos | }); |
87 | 6ecbf4ec | Leonidas Poulopoulos | |
88 | 6ecbf4ec | Leonidas Poulopoulos | // Register plugin
|
89 | 6ecbf4ec | Leonidas Poulopoulos | tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);
|
90 | 6ecbf4ec | Leonidas Poulopoulos | })(); |