Statistics
| Branch: | Tag: | Revision:

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
})();