upgrade to tinymce 2.1.1.1
This commit is contained in:
parent
f36ba1b268
commit
e75b689857
847 changed files with 34500 additions and 7692 deletions
|
|
@ -2,16 +2,8 @@
|
|||
|
||||
.mceEditable {
|
||||
/*border: 1px dotted #0000cc;*/
|
||||
-moz-user-focus: none;
|
||||
-moz-user-input: auto;
|
||||
-moz-user-modify: auto;
|
||||
-moz-user-select: text;
|
||||
}
|
||||
|
||||
.mceNonEditable {
|
||||
/*border: 1px dotted #cc0000;*/
|
||||
-moz-user-focus: ignore;
|
||||
/*-moz-user-input: disabled;*/
|
||||
-moz-user-modify: read-only;
|
||||
-moz-user-select: all;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
var TinyMCE_NonEditablePlugin={getInfo:function(){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};},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable');if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"keyup",TinyMCE_NonEditablePlugin._fixKeyUp);}},cleanup:function(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","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");for(var i=0;i<nodes.length;i++){var elm=nodes[i];var editable=tinyMCE.getAttrib(elm,"contenteditable");if(new RegExp("true|false","gi").test(editable))TinyMCE_NonEditablePlugin._setEditable(elm,editable=="true");if(tinyMCE.isMSIE){var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1)elm.contentEditable=true;if(className.indexOf(nonEditClass)!=-1)elm.contentEditable=false;}}break;case"insert_to_editor":if(tinyMCE.isMSIE){var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");content=content.replace(new RegExp("class=\"(.*)("+editClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="true"');content=content.replace(new RegExp("class=\"(.*)("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="false"');}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<nodes.length;i++)nodes[i].removeAttribute("contenteditable");}break;}return content;},_fixKeyUp:function(e){var inst=tinyMCE.selectedInstance;var sel=inst.getSel();var rng=inst.getRng();var an=sel.anchorNode;if((e.keyCode==38||e.keyCode==37||e.keyCode==40||e.keyCode==39)&&(elm=TinyMCE_NonEditablePlugin._isNonEditable(an))!=null){rng=inst.getDoc().createRange();rng.selectNode(elm);rng.collapse(true);sel.removeAllRanges();sel.addRange(rng);tinyMCE.cancelEvent(e);}},_isNonEditable:function(elm){var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");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;},_setEditable:function(elm,state){var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1||className.indexOf(nonEditClass)!=-1)return;if((className=tinyMCE.getAttrib(elm,"class"))!="")className+=" ";className+=state?editClass:nonEditClass;elm.setAttribute("class",className);elm.className=className;}};tinyMCE.addPlugin("noneditable",TinyMCE_NonEditablePlugin);
|
||||
var TinyMCE_NonEditablePlugin={getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable')},handleEvent:function(e){return this._moveSelection(e,tinyMCE.selectedInstance)},cleanup:function(type,content,inst){switch(type){case"insert_to_editor_dom":var nodes,i,editClass,nonEditClass,editable,elm;if(tinyMCE.isGecko)return content;nodes=tinyMCE.getNodeTree(content,[],1);editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");for(i=0;i<nodes.length;i++){elm=nodes[i];editable=tinyMCE.getAttrib(elm,"contenteditable");if(new RegExp("true|false","gi").test(editable))TinyMCE_NonEditablePlugin._setEditable(elm,editable=="true");if(tinyMCE.isIE){if(tinyMCE.hasCSSClass(elm,editClass))elm.contentEditable=true;if(tinyMCE.hasCSSClass(elm,nonEditClass))elm.contentEditable=false}}break;case"insert_to_editor":var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");content=content.replace(/mceItemEditable/g,editClass);content=content.replace(/mceItemNonEditable/g,nonEditClass);if(tinyMCE.isIE&&(content.indexOf(editClass)!=-1||content.indexOf(nonEditClass)!=-1)){content=content.replace(new RegExp("class=\"(.+)("+editClass+")\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"("+editClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"(.+)("+editClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="false"')}break;case"get_from_editor_dom":if(tinyMCE.isGecko)return content;if(tinyMCE.getParam("noneditable_leave_contenteditable",false)){var nodes=tinyMCE.getNodeTree(content,new Array(),1);for(var i=0;i<nodes.length;i++)nodes[i].removeAttribute("contenteditable")}break}return content},_moveSelection:function(e,inst){var s,r,sc,ec,el,c=tinyMCE.getParam('noneditable_editable_class','mceNonEditable');if(!inst)return true;if(tinyMCE.isGecko){s=inst.selection.getSel();r=s.getRangeAt(0);sc=tinyMCE.getParentNode(r.startContainer,function(n){return tinyMCE.hasCSSClass(n,c)});ec=tinyMCE.getParentNode(r.endContainer,function(n){return tinyMCE.hasCSSClass(n,c)});sc&&r.setStartBefore(sc);ec&&r.setEndAfter(ec);if(sc||ec){if(e.type=='keypress'&&e.keyCode==39){el=sc||ec;}s.removeAllRanges();s.addRange(r);return tinyMCE.cancelEvent(e)}}return true},_setEditable:function(elm,state){var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1||className.indexOf(nonEditClass)!=-1)return;if((className=tinyMCE.getAttrib(elm,"class"))!="")className+=" ";className+=state?editClass:nonEditClass;elm.setAttribute("class",className);elm.className=className}};tinyMCE.addPlugin("noneditable",TinyMCE_NonEditablePlugin);
|
||||
|
|
@ -1,19 +1,17 @@
|
|||
/**
|
||||
* $RCSfile: editor_plugin_src.js,v $
|
||||
* $Revision: 1.7 $
|
||||
* $Date: 2006/02/06 20:02:38 $
|
||||
* $Id: editor_plugin_src.js 205 2007-02-12 18:58:29Z spocke $
|
||||
*
|
||||
* @author Moxiecode
|
||||
* @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
||||
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
|
||||
*/
|
||||
|
||||
var TinyMCE_NonEditablePlugin = {
|
||||
getInfo : function() {
|
||||
return {
|
||||
longname : 'Non editable elements',
|
||||
author : 'Moxiecode Systems',
|
||||
author : 'Moxiecode Systems AB',
|
||||
authorurl : 'http://tinymce.moxiecode.com',
|
||||
infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_noneditable.html',
|
||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
|
||||
version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
|
||||
};
|
||||
},
|
||||
|
|
@ -24,36 +22,39 @@ var TinyMCE_NonEditablePlugin = {
|
|||
// 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_NonEditablePlugin._fixKeyUp);
|
||||
// tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_NonEditablePlugin._selectAll);
|
||||
// tinyMCE.addEvent(inst.getDoc(), "mouseup", TinyMCE_NonEditablePlugin._selectAll);
|
||||
}
|
||||
handleEvent : function(e) {
|
||||
return this._moveSelection(e, tinyMCE.selectedInstance);
|
||||
},
|
||||
|
||||
cleanup : function(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", "mceEditable");
|
||||
var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
|
||||
var nodes, i, editClass, nonEditClass, editable, elm;
|
||||
|
||||
for (var i=0; i<nodes.length; i++) {
|
||||
var elm = nodes[i];
|
||||
// Pass through Gecko
|
||||
if (tinyMCE.isGecko)
|
||||
return content;
|
||||
|
||||
nodes = tinyMCE.getNodeTree(content, [], 1);
|
||||
|
||||
editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
|
||||
nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
|
||||
|
||||
for (i=0; i<nodes.length; i++) {
|
||||
elm = nodes[i];
|
||||
|
||||
// Convert contenteditable to classes
|
||||
var editable = tinyMCE.getAttrib(elm, "contenteditable");
|
||||
editable = tinyMCE.getAttrib(elm, "contenteditable");
|
||||
if (new RegExp("true|false","gi").test(editable))
|
||||
TinyMCE_NonEditablePlugin._setEditable(elm, editable == "true");
|
||||
|
||||
if (tinyMCE.isMSIE) {
|
||||
var className = elm.className ? elm.className : "";
|
||||
|
||||
if (className.indexOf(editClass) != -1)
|
||||
if (tinyMCE.isIE) {
|
||||
if (tinyMCE.hasCSSClass(elm, editClass))
|
||||
elm.contentEditable = true;
|
||||
|
||||
if (className.indexOf(nonEditClass) != -1)
|
||||
if (tinyMCE.hasCSSClass(elm, nonEditClass))
|
||||
elm.contentEditable = false;
|
||||
}
|
||||
}
|
||||
|
|
@ -61,17 +62,29 @@ var TinyMCE_NonEditablePlugin = {
|
|||
break;
|
||||
|
||||
case "insert_to_editor":
|
||||
if (tinyMCE.isMSIE) {
|
||||
var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
|
||||
var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
|
||||
var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
|
||||
var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
|
||||
|
||||
content = content.replace(new RegExp("class=\"(.*)(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="true"');
|
||||
content = content.replace(new RegExp("class=\"(.*)(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="false"');
|
||||
// Replace mceItem to new school
|
||||
content = content.replace(/mceItemEditable/g, editClass);
|
||||
content = content.replace(/mceItemNonEditable/g, nonEditClass);
|
||||
|
||||
if (tinyMCE.isIE && (content.indexOf(editClass) != -1 || content.indexOf(nonEditClass) != -1)) {
|
||||
content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")\"", "gi"), 'class="$1$2" contenteditable="true"');
|
||||
content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")\"", "gi"), 'class="$1$2" contenteditable="false"');
|
||||
content = content.replace(new RegExp("class=\"(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="true"');
|
||||
content = content.replace(new RegExp("class=\"(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="false"');
|
||||
content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="true"');
|
||||
content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="false"');
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "get_from_editor_dom":
|
||||
// Pass through Gecko
|
||||
if (tinyMCE.isGecko)
|
||||
return content;
|
||||
|
||||
if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) {
|
||||
var nodes = tinyMCE.getNodeTree(content, new Array(), 1);
|
||||
|
||||
|
|
@ -85,61 +98,37 @@ var TinyMCE_NonEditablePlugin = {
|
|||
return content;
|
||||
},
|
||||
|
||||
// Private internal plugin methods
|
||||
_moveSelection : function(e, inst) {
|
||||
var s, r, sc, ec, el, c = tinyMCE.getParam('noneditable_editable_class', 'mceNonEditable');
|
||||
|
||||
_fixKeyUp : function(e) {
|
||||
var inst = tinyMCE.selectedInstance;
|
||||
var sel = inst.getSel();
|
||||
var rng = inst.getRng();
|
||||
var an = sel.anchorNode;
|
||||
if (!inst)
|
||||
return true;
|
||||
|
||||
// Move cursor outside non editable fields
|
||||
if ((e.keyCode == 38 || e.keyCode == 37 || e.keyCode == 40 || e.keyCode == 39) && (elm = TinyMCE_NonEditablePlugin._isNonEditable(an)) != null) {
|
||||
rng = inst.getDoc().createRange();
|
||||
rng.selectNode(elm);
|
||||
rng.collapse(true);
|
||||
sel.removeAllRanges();
|
||||
sel.addRange(rng);
|
||||
tinyMCE.cancelEvent(e);
|
||||
}
|
||||
},
|
||||
/*
|
||||
_selectAll : function(e) {
|
||||
var inst = tinyMCE.selectedInstance;
|
||||
var sel = inst.getSel();
|
||||
var doc = inst.getDoc();
|
||||
// Always select whole element
|
||||
if (tinyMCE.isGecko) {
|
||||
s = inst.selection.getSel();
|
||||
r = s.getRangeAt(0);
|
||||
sc = tinyMCE.getParentNode(r.startContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
|
||||
ec = tinyMCE.getParentNode(r.endContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});
|
||||
|
||||
if ((elm = TinyMCE_NonEditablePlugin._isNonEditable(sel.focusNode)) != null) {
|
||||
inst.selection.selectNode(elm, false);
|
||||
tinyMCE.cancelEvent(e);
|
||||
return;
|
||||
sc && r.setStartBefore(sc);
|
||||
ec && r.setEndAfter(ec);
|
||||
|
||||
if (sc || ec) {
|
||||
if (e.type == 'keypress' && e.keyCode == 39) {
|
||||
el = sc || ec;
|
||||
|
||||
// Try!!
|
||||
}
|
||||
|
||||
s.removeAllRanges();
|
||||
s.addRange(r);
|
||||
|
||||
return tinyMCE.cancelEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
if ((elm = TinyMCE_NonEditablePlugin._isNonEditable(sel.anchorNode)) != null) {
|
||||
inst.selection.selectNode(elm, false);
|
||||
tinyMCE.cancelEvent(e);
|
||||
return;
|
||||
}
|
||||
},*/
|
||||
|
||||
_isNonEditable : function(elm) {
|
||||
var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");
|
||||
var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");
|
||||
|
||||
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;
|
||||
return true;
|
||||
},
|
||||
|
||||
_setEditable : function(elm, state) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue