X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Ftiny_mce%2Fplugins%2Fnoneditable%2Feditor_plugin_src.js;h=916dce29cfc37bd755c724d36cb5f9ffa5fbfd83;hb=eb5fb3f6c3b3e1d4d3d7ebbb92b8c60d70d13254;hp=597b1f004e2b08dae48d8281a663708720725d84;hpb=26a4a07bdacdaa7013bf45cc235df207708acfde;p=citadel.git diff --git a/webcit/tiny_mce/plugins/noneditable/editor_plugin_src.js b/webcit/tiny_mce/plugins/noneditable/editor_plugin_src.js index 597b1f004..916dce29c 100644 --- a/webcit/tiny_mce/plugins/noneditable/editor_plugin_src.js +++ b/webcit/tiny_mce/plugins/noneditable/editor_plugin_src.js @@ -1,149 +1,95 @@ -function TinyMCE_noneditable_getInfo() { - return { - longname : 'Non editable elements', - author : 'Moxiecode Systems', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_noneditable.html', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; -}; - -function TinyMCE_noneditable_initInstance(inst) { - tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/noneditable/css/noneditable.css"); - - // Ugly hack - if (tinyMCE.isMSIE5_0) - tinyMCE.settings['plugins'] = tinyMCE.settings['plugins'].replace(/noneditable/gi, 'Noneditable'); - - if (tinyMCE.isGecko) { - tinyMCE.addEvent(inst.getDoc(), "keyup", TinyMCE_noneditable_fixKeyUp); -// tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_noneditable_selectAll); -// tinyMCE.addEvent(inst.getDoc(), "mouseup", TinyMCE_noneditable_selectAll); - } -} - -function TinyMCE_noneditable_fixKeyUp(e) { - var inst = tinyMCE.selectedInstance; - var sel = inst.getSel(); - var rng = inst.getRng(); - var an = sel.anchorNode; - - // Move cursor outside non editable fields - if ((e.keyCode == 38 || e.keyCode == 37 || e.keyCode == 40 || e.keyCode == 39) && (elm = TinyMCE_noneditable_isNonEditable(an)) != null) { - rng = inst.getDoc().createRange(); - rng.selectNode(elm); - rng.collapse(true); - sel.removeAllRanges(); - sel.addRange(rng); - tinyMCE.cancelEvent(e); - } -} - -function TinyMCE_noneditable_selectAll(e) { - var inst = tinyMCE.selectedInstance; - var sel = inst.getSel(); - var doc = inst.getDoc(); - - if ((elm = TinyMCE_noneditable_isNonEditable(sel.focusNode)) != null) { - inst.selectNode(elm, false); - tinyMCE.cancelEvent(e); - return; - } - - if ((elm = TinyMCE_noneditable_isNonEditable(sel.anchorNode)) != null) { - inst.selectNode(elm, false); - tinyMCE.cancelEvent(e); - return; - } -} - -function TinyMCE_noneditable_isNonEditable(elm) { - var editClass = tinyMCE.getParam("noneditable_editable_class", "mceItemEditable"); - var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceItemNonEditable"); - - if (!elm) - return; - - do { - var className = elm.className ? elm.className : ""; - - if (className.indexOf(editClass) != -1) - return null; - - if (className.indexOf(nonEditClass) != -1) - return elm; - } while (elm = elm.parentNode); - - return null; -} - -function TinyMCE_noneditable_cleanup(type, content, inst) { - switch (type) { - case "insert_to_editor_dom": - var nodes = tinyMCE.getNodeTree(content, new Array(), 1); - var editClass = tinyMCE.getParam("noneditable_editable_class", "mceItemEditable"); - var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceItemNonEditable"); - - for (var i=0; i 32 && k < 41) || (k > 111 && k < 124)) + return; + + return Event.cancel(e); + }, + + _setDisabled : function(s) { + var t = this, ed = t.editor; + + tinymce.each(ed.controlManager.controls, function(c) { + c.setDisabled(s); + }); + + if (s !== t.disabled) { + if (s) { + ed.onKeyDown.addToTop(t._block); + ed.onKeyPress.addToTop(t._block); + ed.onKeyUp.addToTop(t._block); + ed.onPaste.addToTop(t._block); + ed.onContextMenu.addToTop(t._block); + } else { + ed.onKeyDown.remove(t._block); + ed.onKeyPress.remove(t._block); + ed.onKeyUp.remove(t._block); + ed.onPaste.remove(t._block); + ed.onContextMenu.remove(t._block); } - } - - break; - - case "insert_to_editor": - if (tinyMCE.isMSIE) { - var editClass = tinyMCE.getParam("noneditable_editable_class", "mceItemEditable"); - var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceItemNonEditable"); - - content = content.replace(new RegExp("<(.*?)class=\"(.*?)(" + editClass + ")(.*?)\"(.*?)>", "gi"), '<$1class="$2$3$4" contenteditable="true"$5>'); - content = content.replace(new RegExp("<(.*?)class=\"(.*?)(" + nonEditClass + ")(.*?)\"(.*?)>", "gi"), '<$1class="$2$3$4" contenteditable="false"$5>'); - } - - break; - - case "get_from_editor_dom": - if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) { - var nodes = tinyMCE.getNodeTree(content, new Array(), 1); - for (var i=0; i