update tinymce to 3.5.0.1
This commit is contained in:
parent
205c09e4f0
commit
e39014a3a7
|
@ -1,3 +1,46 @@
|
||||||
|
Version 3.5.0.1 (2012-05-10)
|
||||||
|
Fixed bug where selection normalization logic would break the selections of parent elements using the element path.
|
||||||
|
Fixed bug where the autolink plugin would include trailing dots in domain names in the link creation.
|
||||||
|
Fixed bug where the autolink plugin would produce an error on older IE versions when pressing enter.
|
||||||
|
Fixed bug where old IE versions would throw an error during initialization when the editor was placed in an size restricted div.
|
||||||
|
Version 3.5 (2012-05-03)
|
||||||
|
Fixed menu rendering issue if the document was in rtl mode.
|
||||||
|
Fixed bug where the hide function would throw an error about a missing variable.
|
||||||
|
Fixed bug where autolink wouldn't convert URLs when hitting enter on IE due to the new enter key logic.
|
||||||
|
Fixed bug where formatting using shortcuts like ctrl+b wouldn't work properly the first time.
|
||||||
|
Fixed bug where selection.setContent after a formatter call wouldn't generate formatted contents.
|
||||||
|
Fixed bug where whitespace would be removed before/after invalid_elements when they where removed.
|
||||||
|
Fixed bug where updating styles using the theme image dialog in non inline mode on IE9 would produce errors.
|
||||||
|
Fixed bug where IE 8 would produce an error when using the contextmenu plugin.
|
||||||
|
Fixed bug where delete/backspace could remove contents of noneditable elements.
|
||||||
|
Fixed so background color in style preview gets computed from body element if the current style element is transparent.
|
||||||
|
Version 3.5b3 (2012-03-29)
|
||||||
|
Added cancel button to colour picker dialog.
|
||||||
|
Added figure and figcaption to the html5 visualblocks plugin.
|
||||||
|
Added default alignment options for the figure element.
|
||||||
|
Fixed bug where empty inline elements within block elements would sometimes produce a br child element.
|
||||||
|
Fixed bug where urls pointing to the same domain as the current one would cause undefined errors. Patch contributed by Paul Giberson.
|
||||||
|
Fixed bug where enter inside an editable element inside an non editable element would split the element.
|
||||||
|
Fixed bug where cut/copy/paste of noneditable elements didn't work.
|
||||||
|
Fixed bug where backspace would sometimes produce font elements on WebKit.
|
||||||
|
Fixed bug where WebKit would produce spans out of various inline elements when using backspace.
|
||||||
|
Fixed bug where IE9 wouldn't properly update image styles when images where resized.
|
||||||
|
Fixed bug where drag/drop of noneditable elements didn't work correctly.
|
||||||
|
Fixed bug where applying formatting to all contents wouldn't work correctly when an end point was inside an empty bock. Patch contributed by Jose Luiz.
|
||||||
|
Fixed bug where IE10 removed the scopeName from the DOM element interface and there for it produced an undefined string in element path.
|
||||||
|
Fixed bug where the caret would be placed at an incorrect location if you applied block formatting while having the caret at the end of the block.
|
||||||
|
Fixed bug where applying column changes using the cell dialog would only update the first column. Patch contributed by krzyko.
|
||||||
|
Fixed bug where the visualblocks plugin would force editor focus if it was turned on by default.
|
||||||
|
Fixed bug where the tabfocus plugin would tab to iframes these are now ignored.
|
||||||
|
Fixed bug where format drop down list wouldn't show the currently active format for a parent element.
|
||||||
|
Fixed bug where paste of plain text in IE 9 would remove the new line characters from text.
|
||||||
|
Fixed bug where the menu buttons/split button menus wouldn't be opened at the right location on older IE versions.
|
||||||
|
Fixed bug where Gecko browsers wouldn't properly display the right format when having the selection as specific places.
|
||||||
|
Fixed bug where shift+enter inside the body when having forced_root_blocks set to false would throw an error.
|
||||||
|
Fixed bug where the jQuery plugin would break the attr method of jQuery 1.7.2. Patch contributed by Markus Kemmerling.
|
||||||
|
Fixed so options like content_css accepts and array as well as a comma separated string as input.
|
||||||
|
Restructured the internal logic to make it more separate from Editor.js.
|
||||||
|
Updated the Sizzle engine to the latest version.
|
||||||
Version 3.5b2 (2012-03-15)
|
Version 3.5b2 (2012-03-15)
|
||||||
Rewrote the enter key logic to normalize browser behavior.
|
Rewrote the enter key logic to normalize browser behavior.
|
||||||
Fixed so enter within PRE elements produces a BR and shift+enter breaks/end the PRE. Can be disabled using the br_in_pre option.
|
Fixed so enter within PRE elements produces a BR and shift+enter breaks/end the PRE. Can be disabled using the br_in_pre option.
|
||||||
|
@ -19,15 +62,6 @@ Version 3.5b1 (2012-03-08)
|
||||||
Fixed bug where the advlink dialog would produce an error about the addSelectAccessibility function not being defined.
|
Fixed bug where the advlink dialog would produce an error about the addSelectAccessibility function not being defined.
|
||||||
Fixed bug where the caret would be placed at an incorrect position if span was removed by the invalid_elements setting.
|
Fixed bug where the caret would be placed at an incorrect position if span was removed by the invalid_elements setting.
|
||||||
Fixed bug where elements inside a white space preserve element like pre didn't inherit the behavior while parsing.
|
Fixed bug where elements inside a white space preserve element like pre didn't inherit the behavior while parsing.
|
||||||
Version 3.4.9.x (2012-02-xx)
|
|
||||||
Improved behaviour of backspacing into a table to be consistant across browsers and disable backspace when cursor immediately follows a table.
|
|
||||||
Improved edit CSS style plugin for single and multiple block selection and provide option to apply style to only selected text.
|
|
||||||
Fixed bug in Chrome where moving caret down in table and pasting throws errors.
|
|
||||||
Corrected reference to TinyMCE trim function.
|
|
||||||
Fixed bug where Ignore All in IE did not remove the underline from the selected word.
|
|
||||||
Fixed bug in html source editor word wrap option not wrapping text in Webkit browsers.
|
|
||||||
Fixed bug where it was possible to insert an invalid colour in the color pop-up dialog.
|
|
||||||
Fixed bug in Webkit where if anchor is on last line by itself caret can not be placed after it.
|
|
||||||
Version 3.4.9 (2012-02-23)
|
Version 3.4.9 (2012-02-23)
|
||||||
Added settings to wordcount plugin to configure update rate and checking wordcount on backspace and delete using wordcount_update_rate and wordcount_update_on_delete.
|
Added settings to wordcount plugin to configure update rate and checking wordcount on backspace and delete using wordcount_update_rate and wordcount_update_on_delete.
|
||||||
Fixed bug in Webkit and IE where deleting empty paragraphs would remove entire editor contents.
|
Fixed bug in Webkit and IE where deleting empty paragraphs would remove entire editor contents.
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;if(tinyMCE.isIE){return}a.onKeyDown.add(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng().cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})();
|
(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})();
|
|
@ -22,16 +22,16 @@
|
||||||
init : function(ed, url) {
|
init : function(ed, url) {
|
||||||
var t = this;
|
var t = this;
|
||||||
|
|
||||||
// Internet Explorer has built-in automatic linking
|
|
||||||
if (tinyMCE.isIE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Add a key down handler
|
// Add a key down handler
|
||||||
ed.onKeyDown.add(function(ed, e) {
|
ed.onKeyDown.addToTop(function(ed, e) {
|
||||||
if (e.keyCode == 13)
|
if (e.keyCode == 13)
|
||||||
return t.handleEnter(ed);
|
return t.handleEnter(ed);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Internet Explorer has built-in automatic linking for most cases
|
||||||
|
if (tinyMCE.isIE)
|
||||||
|
return;
|
||||||
|
|
||||||
ed.onKeyPress.add(function(ed, e) {
|
ed.onKeyPress.add(function(ed, e) {
|
||||||
if (e.which == 41)
|
if (e.which == 41)
|
||||||
return t.handleEclipse(ed);
|
return t.handleEclipse(ed);
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
|
|
||||||
// We need at least five characters to form a URL,
|
// We need at least five characters to form a URL,
|
||||||
// hence, at minimum, five characters from the beginning of the line.
|
// hence, at minimum, five characters from the beginning of the line.
|
||||||
r = ed.selection.getRng().cloneRange();
|
r = ed.selection.getRng(true).cloneRange();
|
||||||
if (r.startOffset < 5) {
|
if (r.startOffset < 5) {
|
||||||
// During testing, the caret is placed inbetween two text nodes.
|
// During testing, the caret is placed inbetween two text nodes.
|
||||||
// The previous text node contains the URL.
|
// The previous text node contains the URL.
|
||||||
|
@ -124,6 +124,12 @@
|
||||||
r.setEnd(endContainer, start);
|
r.setEnd(endContainer, start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Exclude last . from word like "www.site.com."
|
||||||
|
var text = r.toString();
|
||||||
|
if (text.charAt(text.length - 1) == '.') {
|
||||||
|
r.setEnd(endContainer, start - 1);
|
||||||
|
}
|
||||||
|
|
||||||
text = r.toString();
|
text = r.toString();
|
||||||
matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);
|
matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
|
(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
|
|
@ -79,7 +79,7 @@
|
||||||
vp.h -= 1;
|
vp.h -= 1;
|
||||||
|
|
||||||
// Use fixed position if it exists
|
// Use fixed position if it exists
|
||||||
if (tinymce.isIE6)
|
if (tinymce.isIE6 || document.compatMode == 'BackCompat')
|
||||||
posCss = 'absolute;top:' + vp.y;
|
posCss = 'absolute;top:' + vp.y;
|
||||||
else
|
else
|
||||||
posCss = 'fixed;top:0';
|
posCss = 'fixed;top:0';
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -261,12 +261,96 @@
|
||||||
selection.collapse(start);
|
selection.collapse(start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function canDelete(backspace) {
|
||||||
|
var rng, container, offset, nonEditableParent;
|
||||||
|
|
||||||
|
function removeNodeIfNotParent(node) {
|
||||||
|
var parent = container;
|
||||||
|
|
||||||
|
while (parent) {
|
||||||
|
if (parent === node) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
parent = parent.parentNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
dom.remove(node);
|
||||||
|
moveSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
function isNextPrevTreeNodeNonEditable() {
|
||||||
|
var node, walker, nonEmptyElements = ed.schema.getNonEmptyElements();
|
||||||
|
|
||||||
|
walker = new tinymce.dom.TreeWalker(container, ed.getBody());
|
||||||
|
while (node = (backspace ? walker.prev() : walker.next())) {
|
||||||
|
// Found IMG/INPUT etc
|
||||||
|
if (nonEmptyElements[node.nodeName.toLowerCase()]) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Found text node with contents
|
||||||
|
if (node.nodeType === 3 && tinymce.trim(node.nodeValue).length > 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Found non editable node
|
||||||
|
if (getContentEditable(node) === "false") {
|
||||||
|
removeNodeIfNotParent(node);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the content node is within a non editable parent
|
||||||
|
if (getNonEditableParent(node)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selection.isCollapsed()) {
|
||||||
|
rng = selection.getRng(true);
|
||||||
|
container = rng.startContainer;
|
||||||
|
offset = rng.startOffset;
|
||||||
|
container = getParentCaretContainer(container) || container;
|
||||||
|
|
||||||
|
// Is in noneditable parent
|
||||||
|
if (nonEditableParent = getNonEditableParent(container)) {
|
||||||
|
removeNodeIfNotParent(nonEditableParent);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the caret is in the middle of a text node
|
||||||
|
if (container.nodeType == 3 && (backspace ? offset > 0 : offset < container.nodeValue.length)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resolve container index
|
||||||
|
if (container.nodeType == 1) {
|
||||||
|
container = container.childNodes[offset] || container;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if previous or next tree node is non editable then block the event
|
||||||
|
if (isNextPrevTreeNodeNonEditable()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
startElement = selection.getStart()
|
startElement = selection.getStart()
|
||||||
endElement = selection.getEnd();
|
endElement = selection.getEnd();
|
||||||
|
|
||||||
// Disable all key presses in contentEditable=false except delete or backspace
|
// Disable all key presses in contentEditable=false except delete or backspace
|
||||||
nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement);
|
nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement);
|
||||||
if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) {
|
if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) {
|
||||||
|
// Is Ctrl+c, Ctrl+v or Ctrl+x then use default browser behavior
|
||||||
|
if ((tinymce.isMac ? e.metaKey : e.ctrlKey) && (keyCode == 67 || keyCode == 88 || keyCode == 86)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
// Arrow left/right select the element and collapse left/right
|
// Arrow left/right select the element and collapse left/right
|
||||||
|
@ -298,6 +382,7 @@
|
||||||
positionCaretOnElement(nonEditableParent, true);
|
positionCaretOnElement(nonEditableParent, true);
|
||||||
} else {
|
} else {
|
||||||
dom.remove(nonEditableParent);
|
dom.remove(nonEditableParent);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
removeCaretContainer(caretContainer);
|
removeCaretContainer(caretContainer);
|
||||||
|
@ -315,23 +400,31 @@
|
||||||
positionCaretOnElement(nonEditableParent, false);
|
positionCaretOnElement(nonEditableParent, false);
|
||||||
} else {
|
} else {
|
||||||
dom.remove(nonEditableParent);
|
dom.remove(nonEditableParent);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
removeCaretContainer(caretContainer);
|
removeCaretContainer(caretContainer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((keyCode == VK.BACKSPACE || keyCode == VK.DELETE) && !canDelete(keyCode == VK.BACKSPACE)) {
|
||||||
|
e.preventDefault();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ed.onMouseDown.addToTop(function(ed, e){
|
ed.onMouseDown.addToTop(function(ed, e) {
|
||||||
// prevent collapsing selection to caret when clicking in a non-editable section
|
|
||||||
var node = ed.selection.getNode();
|
var node = ed.selection.getNode();
|
||||||
|
|
||||||
if (getContentEditable(node) === "false" && node == e.target) {
|
if (getContentEditable(node) === "false" && node == e.target) {
|
||||||
e.preventDefault();
|
// Expand selection on mouse down we can't block the default event since it's used for drag/drop
|
||||||
|
moveSelection();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ed.onMouseUp.addToTop(moveSelection);
|
ed.onMouseUp.addToTop(moveSelection);
|
||||||
ed.onKeyDown.addToTop(handleKey);
|
ed.onKeyDown.addToTop(handleKey);
|
||||||
ed.onKeyUp.addToTop(moveSelection);
|
ed.onKeyUp.addToTop(moveSelection);
|
||||||
|
@ -341,6 +434,31 @@
|
||||||
init : function(ed, url) {
|
init : function(ed, url) {
|
||||||
var editClass, nonEditClass, nonEditableRegExps;
|
var editClass, nonEditClass, nonEditableRegExps;
|
||||||
|
|
||||||
|
// Converts configured regexps to noneditable span items
|
||||||
|
function convertRegExpsToNonEditable(ed, args) {
|
||||||
|
var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass);
|
||||||
|
|
||||||
|
// Don't replace the variables when raw is used for example on undo/redo
|
||||||
|
if (args.format == "raw") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
content = content.replace(nonEditableRegExps[i], function(match) {
|
||||||
|
var args = arguments, index = args[args.length - 2];
|
||||||
|
|
||||||
|
// Is value inside an attribute then don't replace
|
||||||
|
if (index > 0 && content.charAt(index - 1) == '"') {
|
||||||
|
return match;
|
||||||
|
}
|
||||||
|
|
||||||
|
return '<span class="' + cls + '" data-mce-content="' + ed.dom.encode(args[0]) + '">' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + '</span>';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
args.content = content;
|
||||||
|
};
|
||||||
|
|
||||||
editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " ";
|
editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " ";
|
||||||
nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " ";
|
nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " ";
|
||||||
|
|
||||||
|
@ -354,24 +472,8 @@
|
||||||
handleContentEditableSelection(ed);
|
handleContentEditableSelection(ed);
|
||||||
|
|
||||||
if (nonEditableRegExps) {
|
if (nonEditableRegExps) {
|
||||||
ed.onBeforeSetContent.add(function(ed, args) {
|
ed.selection.onBeforeSetContent.add(convertRegExpsToNonEditable);
|
||||||
var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass);
|
ed.onBeforeSetContent.add(convertRegExpsToNonEditable);
|
||||||
|
|
||||||
// Don't replace the variables when raw is used for example on undo/redo
|
|
||||||
if (args.format == "raw") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (i--) {
|
|
||||||
content = content.replace(nonEditableRegExps[i], function() {
|
|
||||||
var args = arguments;
|
|
||||||
|
|
||||||
return '<span class="' + cls + '" data-mce-content="' + ed.dom.encode(args[0]) + '">' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + '</span>';
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
args.content = content;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply contentEditable true/false on elements with the noneditable/editable classes
|
// Apply contentEditable true/false on elements with the noneditable/editable classes
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -359,7 +359,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
|
// IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
|
||||||
if (tinymce.isIE && document.documentMode >= 9) {
|
if (tinymce.isIE && document.documentMode >= 9 && /<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(o.content)) {
|
||||||
// IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
|
// IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
|
||||||
process([[/(?:<br> [\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br> [\s\r\n]+|<br>)*/g, '$1']]);
|
process([[/(?:<br> [\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br> [\s\r\n]+|<br>)*/g, '$1']]);
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
|
(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]:not(iframe)");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
|
|
@ -22,7 +22,7 @@
|
||||||
var x, i, f, el, v;
|
var x, i, f, el, v;
|
||||||
|
|
||||||
function find(d) {
|
function find(d) {
|
||||||
el = DOM.select(':input:enabled,*[tabindex]');
|
el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
|
||||||
|
|
||||||
function canSelectRecursive(e) {
|
function canSelectRecursive(e) {
|
||||||
return e.nodeName==="BODY" || (e.type != 'hidden' &&
|
return e.nodeName==="BODY" || (e.type != 'hidden' &&
|
||||||
|
|
|
@ -137,7 +137,7 @@ function updateAction() {
|
||||||
do {
|
do {
|
||||||
if (cell == tdElm)
|
if (cell == tdElm)
|
||||||
break;
|
break;
|
||||||
col += cell.getAttribute("colspan");
|
col += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
|
||||||
} while ((cell = nextCell(cell)) != null);
|
} while ((cell = nextCell(cell)) != null);
|
||||||
|
|
||||||
for (var i=0; i<rows.length; i++) {
|
for (var i=0; i<rows.length; i++) {
|
||||||
|
@ -152,7 +152,7 @@ function updateAction() {
|
||||||
cell = updateCell(cell, true);
|
cell = updateCell(cell, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
curr += cell.getAttribute("colspan");
|
curr += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
|
||||||
} while ((cell = nextCell(cell)) != null);
|
} while ((cell = nextCell(cell)) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat}
|
p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre, figure {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat}
|
||||||
p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre {margin-left: 3px}
|
p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre, figure {margin-left: 3px}
|
||||||
section, article, address, hgroup, aside {margin: 1em 0 0 3px}
|
section, article, address, hgroup, aside, figure {margin: 0 0 1em 3px}
|
||||||
|
|
||||||
p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}
|
p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}
|
||||||
h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}
|
h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}
|
||||||
|
@ -17,3 +17,5 @@ address {background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH
|
||||||
pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}
|
pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}
|
||||||
hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}
|
hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}
|
||||||
aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}
|
aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}
|
||||||
|
figure {background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}
|
||||||
|
figcaption {border: 1px dashed #BBB}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks")}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})();
|
(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks",false,null,{skip_focus:true})}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})();
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
ed.onInit.add(function() {
|
ed.onInit.add(function() {
|
||||||
if (ed.settings.visualblocks_default_state) {
|
if (ed.settings.visualblocks_default_state) {
|
||||||
ed.execCommand('mceVisualBlocks');
|
ed.execCommand('mceVisualBlocks', false, null, {skip_focus : true});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -62,12 +62,8 @@
|
||||||
|
|
||||||
<div class="mceActionPanel">
|
<div class="mceActionPanel">
|
||||||
<input type="submit" id="insert" name="insert" value="{#apply}" />
|
<input type="submit" id="insert" name="insert" value="{#apply}" />
|
||||||
|
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();"/>
|
||||||
<div id="preview"></div>
|
<div id="preview_wrapper"><div id="previewblock"><label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" /></div><span id="preview"></span></div>
|
||||||
|
|
||||||
<div id="previewblock">
|
|
||||||
<label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -69,6 +69,16 @@
|
||||||
each(previewStyles.split(' '), function(name) {
|
each(previewStyles.split(' '), function(name) {
|
||||||
var value = dom.getStyle(previewElm, name, true);
|
var value = dom.getStyle(previewElm, name, true);
|
||||||
|
|
||||||
|
// If background is transparent then check if the body has a background color we can use
|
||||||
|
if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
|
||||||
|
value = dom.getStyle(ed.getBody(), name, true);
|
||||||
|
|
||||||
|
// Ignore white since it's the default color, not the nicest fix
|
||||||
|
if (dom.toHex(value).toLowerCase() == '#ffffff') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Old IE won't calculate the font size so we need to do that manually
|
// Old IE won't calculate the font size so we need to do that manually
|
||||||
if (name == 'font-size') {
|
if (name == 'font-size') {
|
||||||
if (/em|%$/.test(value)) {
|
if (/em|%$/.test(value)) {
|
||||||
|
@ -608,7 +618,7 @@
|
||||||
|
|
||||||
// TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.
|
// TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.
|
||||||
// Maybe actually inherit it from the original textara?
|
// Maybe actually inherit it from the original textara?
|
||||||
n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
|
n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '') + (ed.settings.directionality == "rtl" ? ' mceRtl' : '')});
|
||||||
DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);
|
DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);
|
||||||
|
|
||||||
if (!DOM.boxModel)
|
if (!DOM.boxModel)
|
||||||
|
@ -925,7 +935,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
_addToolbars : function(c, o) {
|
_addToolbars : function(c, o) {
|
||||||
var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup;
|
var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup, toolbarsExist = false;
|
||||||
|
|
||||||
toolbarGroup = cf.createToolbarGroup('toolbargroup', {
|
toolbarGroup = cf.createToolbarGroup('toolbargroup', {
|
||||||
'name': ed.getLang('advanced.toolbar'),
|
'name': ed.getLang('advanced.toolbar'),
|
||||||
|
@ -941,6 +951,7 @@
|
||||||
|
|
||||||
// Create toolbar and add the controls
|
// Create toolbar and add the controls
|
||||||
for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
|
for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
|
||||||
|
toolbarsExist = true;
|
||||||
tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
|
tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
|
||||||
|
|
||||||
if (s['theme_advanced_buttons' + i + '_add'])
|
if (s['theme_advanced_buttons' + i + '_add'])
|
||||||
|
@ -954,6 +965,9 @@
|
||||||
|
|
||||||
o.deltaHeight -= s.theme_advanced_row_height;
|
o.deltaHeight -= s.theme_advanced_row_height;
|
||||||
}
|
}
|
||||||
|
// Handle case when there are no toolbar buttons and ensure editor height is adjusted accordingly
|
||||||
|
if (!toolbarsExist)
|
||||||
|
o.deltaHeight -= s.theme_advanced_row_height;
|
||||||
h.push(toolbarGroup.renderHTML());
|
h.push(toolbarGroup.renderHTML());
|
||||||
h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
|
h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
|
||||||
DOM.setHTML(n, h.join(''));
|
DOM.setHTML(n, h.join(''));
|
||||||
|
@ -1112,7 +1126,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c = cm.get('formatselect')) {
|
if (c = cm.get('formatselect')) {
|
||||||
p = getParent(DOM.isBlock);
|
p = getParent(ed.dom.isBlock);
|
||||||
|
|
||||||
if (p)
|
if (p)
|
||||||
c.select(p.nodeName.toLowerCase());
|
c.select(p.nodeName.toLowerCase());
|
||||||
|
@ -1210,7 +1224,7 @@
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Handle prefix
|
// Handle prefix
|
||||||
if (tinymce.isIE && n.scopeName !== 'HTML')
|
if (tinymce.isIE && n.scopeName !== 'HTML' && n.scopeName)
|
||||||
na = n.scopeName + ':' + na;
|
na = n.scopeName + ':' + na;
|
||||||
|
|
||||||
// Remove internal prefix
|
// Remove internal prefix
|
||||||
|
@ -1271,7 +1285,7 @@
|
||||||
if (v) {
|
if (v) {
|
||||||
ti += 'class: ' + v + ' ';
|
ti += 'class: ' + v + ' ';
|
||||||
|
|
||||||
if (DOM.isBlock(n) || na == 'img' || na == 'span')
|
if (ed.dom.isBlock(n) || na == 'img' || na == 'span')
|
||||||
na += '.' + v;
|
na += '.' + v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,10 +104,12 @@ var ImageDialog = {
|
||||||
},
|
},
|
||||||
|
|
||||||
updateStyle : function() {
|
updateStyle : function() {
|
||||||
var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];
|
var dom = tinyMCEPopup.dom, st = {}, v, f = document.forms[0];
|
||||||
|
|
||||||
if (tinyMCEPopup.editor.settings.inline_styles) {
|
if (tinyMCEPopup.editor.settings.inline_styles) {
|
||||||
st = tinyMCEPopup.dom.parseStyle(this.styleVal);
|
tinymce.each(tinyMCEPopup.dom.parseStyle(this.styleVal), function(value, key) {
|
||||||
|
st[key] = value;
|
||||||
|
});
|
||||||
|
|
||||||
// Handle align
|
// Handle align
|
||||||
v = getSelectValue(f, 'align');
|
v = getSelectValue(f, 'align');
|
||||||
|
|
|
@ -94,11 +94,12 @@ h3 {font-size:14px;}
|
||||||
#plugintable, #about #plugintable td {border:1px solid #919B9C;}
|
#plugintable, #about #plugintable td {border:1px solid #919B9C;}
|
||||||
#plugintable {width:96%; margin-top:10px;}
|
#plugintable {width:96%; margin-top:10px;}
|
||||||
#pluginscontainer {height:290px; overflow:auto;}
|
#pluginscontainer {height:290px; overflow:auto;}
|
||||||
#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
|
#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
|
||||||
|
#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
|
||||||
|
#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
|
||||||
#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
|
#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
|
||||||
#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
|
#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
|
||||||
#colorpicker #light div {overflow:hidden;}
|
#colorpicker #light div {overflow:hidden;}
|
||||||
#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
|
|
||||||
#colorpicker .panel_wrapper div.current {height:175px;}
|
#colorpicker .panel_wrapper div.current {height:175px;}
|
||||||
#colorpicker #namedcolors {width:150px;}
|
#colorpicker #namedcolors {width:150px;}
|
||||||
#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
|
#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
|
|
||||||
/* Menu */
|
/* Menu */
|
||||||
.highcontrastSkin .mceNoIcons span.mceIcon {width:0;}
|
.highcontrastSkin .mceNoIcons span.mceIcon {width:0;}
|
||||||
.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; }
|
.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; direction:ltr}
|
||||||
.highcontrastSkin .mceMenu table {background:white; color: black}
|
.highcontrastSkin .mceMenu table {background:white; color: black}
|
||||||
.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px}
|
.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px}
|
||||||
.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black}
|
.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black}
|
||||||
|
@ -90,6 +90,10 @@
|
||||||
.highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
|
.highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
|
||||||
.highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
|
.highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
|
||||||
|
|
||||||
|
/* Rtl */
|
||||||
|
.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
|
||||||
|
.mceRtl .mceMenuItem .mceText {text-align: right}
|
||||||
|
|
||||||
/* Formats */
|
/* Formats */
|
||||||
.highcontrastSkin .mce_p span.mceText {}
|
.highcontrastSkin .mce_p span.mceText {}
|
||||||
.highcontrastSkin .mce_address span.mceText {font-style:italic}
|
.highcontrastSkin .mce_address span.mceText {font-style:italic}
|
||||||
|
|
|
@ -105,11 +105,12 @@ h3 {font-size:14px;}
|
||||||
#plugintable, #about #plugintable td {border:1px solid #919B9C;}
|
#plugintable, #about #plugintable td {border:1px solid #919B9C;}
|
||||||
#plugintable {width:96%; margin-top:10px;}
|
#plugintable {width:96%; margin-top:10px;}
|
||||||
#pluginscontainer {height:290px; overflow:auto;}
|
#pluginscontainer {height:290px; overflow:auto;}
|
||||||
#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
|
#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
|
||||||
|
#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
|
||||||
|
#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
|
||||||
#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
|
#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
|
||||||
#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
|
#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
|
||||||
#colorpicker #light div {overflow:hidden;}
|
#colorpicker #light div {overflow:hidden;}
|
||||||
#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
|
|
||||||
#colorpicker .panel_wrapper div.current {height:175px;}
|
#colorpicker .panel_wrapper div.current {height:175px;}
|
||||||
#colorpicker #namedcolors {width:150px;}
|
#colorpicker #namedcolors {width:150px;}
|
||||||
#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
|
#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
|
.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
|
||||||
|
|
||||||
/* Menu */
|
/* Menu */
|
||||||
.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
|
.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD; direction:ltr}
|
||||||
.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
|
.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
|
||||||
.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
|
.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
|
||||||
.o2k7Skin .mceMenu table {background:#FFF}
|
.o2k7Skin .mceMenu table {background:#FFF}
|
||||||
|
@ -112,6 +112,10 @@
|
||||||
.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
|
.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
|
||||||
.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
|
.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
|
||||||
|
|
||||||
|
/* Rtl */
|
||||||
|
.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
|
||||||
|
.mceRtl .mceMenuItem .mceText {text-align: right}
|
||||||
|
|
||||||
/* Formats */
|
/* Formats */
|
||||||
.o2k7Skin .mce_formatPreview a {font-size:10px}
|
.o2k7Skin .mce_formatPreview a {font-size:10px}
|
||||||
.o2k7Skin .mce_p span.mceText {}
|
.o2k7Skin .mce_p span.mceText {}
|
||||||
|
|
File diff suppressed because one or more lines are too long
4253
library/tinymce/jscripts/tiny_mce/tiny_mce_src.js
vendored
4253
library/tinymce/jscripts/tiny_mce/tiny_mce_src.js
vendored
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue