From 7740e89de3e1bc0cc636120e3ca8ab9e97e4d3cc Mon Sep 17 00:00:00 2001
From: donncha ", "gi");
- content = tinyMCE.regexpReplace(content, "\r\r", " ", "gi");
- content = tinyMCE.regexpReplace(content, "\n\n", " ", "gi");
-
- // Has paragraphs
- if ((pos = content.indexOf(' ')) != -1) {
- tinyMCE.execCommand("Delete");
-
- var node = tinyMCE.selectedInstance.getFocusElement();
-
- // Get list of elements to break
- var breakElms = new Array();
-
- do {
- if (node.nodeType == 1) {
- // Don't break tables and break at body
- if (node.nodeName == "TD" || node.nodeName == "BODY")
- break;
-
- breakElms[breakElms.length] = node;
- }
- } while(node = node.parentNode);
-
- var before = "", after = " ";
- content = before + content.substring(pos+7) + after;
- }
- }
-
- if (tinyMCE.getParam("paste_create_linebreaks", true)) {
- content = tinyMCE.regexpReplace(content, "\r\n", " $1 " + middot + "$1 <\/p>/gi, ""); // Remove pagebreaks
- content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks
-
- // content = content.replace(/\/? */gi, "");
- // content = content.replace(/ <\/p>/gi, '');
-
- if (!tinyMCE.settings['force_p_newlines']) {
- content = content.replace('', '' ,'gi');
- content = content.replace(' ');
- content = content.replace(/<\/h[1-6]>/gi, ' ');content=content.replace(/\r\r/g,' ');content=content.replace(/\n\n/g,' ');if((pos=content.indexOf(' '))!=-1){this.editor.execCommand("Delete");var node=this.editor.selection.getNode();var breakElms=[];do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node;}}while(node=node.parentNode);var before="",after=" ";content=before+content.substring(pos+7)+after;}}if(this.editor.getParam("paste_create_linebreaks",true)){content=content.replace(/\r\n/g,' $1 "+middot+"$1 <\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!this.editor.getParam('force_p_newlines')){content=content.replace('','','gi');content=content.replace(' ');content=content.replace(/<\/h[1-6]>/gi,' (\\s| )* ]+>.*?) ', 'mgi'), '');
- content = content.replace(new RegExp('\\s*
';
-
- elm.style.zIndex = mcWindows.zindex-1;
- elm.style.display = "block";
- } else if (elm != null) {
- if (mcWindows.windows.length == 0)
- elm.parentNode.removeChild(elm);
- else
- elm.style.zIndex = mcWindows.zindex-1;
- }
-};
-
-// Gets called when wrapper iframe is initialized
-TinyMCE_Windows.prototype.onLoad = function(name) {
- var win = mcWindows.windows[name];
- var id = "mcWindow_" + name;
- var wrapperIframe = window.frames[id + "_iframe"].frames[0];
- var wrapperDoc = window.frames[id + "_iframe"].document;
- var doc = window.frames[id + "_iframe"].document;
- var winDiv = document.getElementById("mcWindow_" + name + "_div");
- var realIframe = window.frames[id + "_iframe"].frames[0];
-
- // Set window data
- win.id = "mcWindow_" + name;
- win.winElement = winDiv;
- win.bodyElement = doc.getElementById(id + '_body');
- win.iframeElement = doc.getElementById(id + '_iframe');
- win.headElement = doc.getElementById(id + '_head');
- win.titleElement = doc.getElementById(id + '_title');
- win.resizeElement = doc.getElementById(id + '_resize');
- win.containerElement = doc.getElementById(id + '_container');
- win.left = win.features['left'];
- win.top = win.features['top'];
- win.frame = window.frames[id + '_iframe'].frames[0];
- win.wrapperFrame = window.frames[id + '_iframe'];
- win.wrapperIFrameElement = document.getElementById(id + "_iframe");
-
- // Add event handlers
- mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
-
- if (win.resizeElement != null)
- mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
-
- if (mcWindows.isMSIE) {
- mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
- mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
- } else {
- mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
- mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
- mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
- }
-
- for (var i=0; i
", "gi");
- content = tinyMCE.regexpReplace(content, "\r", "
", "gi");
- content = tinyMCE.regexpReplace(content, "\n", "
", "gi");
- }
- }
-
- tinyMCE.execCommand("mceInsertRawHTML", false, content);
- }
- },
-
- _insertWordContent : function(content) {
- if (content && content.length > 0) {
- // Cleanup Word content
- var bull = String.fromCharCode(8226);
- var middot = String.fromCharCode(183);
- var cb;
-
- if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")
- content = eval(cb + "('before', content)");
-
- var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
- for (var i=0; i
", "gi"), "
]*>/gi, "");
-
- if (tinyMCE.getParam("paste_remove_styles", true))
- content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");
-
- content = content.replace(/<\/?font[^>]*>/gi, "");
-
- // Strips class attributes.
- switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) {
- case "all":
- content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
- break;
-
- case "mso":
- content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");
- break;
- }
-
- content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']);
- content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
- content = content.replace(/<\\?\?xml[^>]*>/gi, "");
- content = content.replace(/<\/?\w+:[^>]*>/gi, "");
- content = content.replace(/-- page break --\s*
' ,'gi');
- }
-
- if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) {
- content = content.replace(/<\/?p[^>]*>/gi, "");
- }
-
- content = content.replace(/<\/?div[^>]*>/gi, "");
-
- // Convert all middlot lists to UL lists
- if (tinyMCE.getParam("paste_convert_middot_lists", true)) {
- var div = document.createElement("div");
- div.innerHTML = content;
-
- // Convert all middot paragraphs to li elements
- var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList");
-
- while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull
- while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot
- while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull
-
- content = div.innerHTML;
- }
-
- // Replace all headers with strong and fix some other issues
- if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
- content = content.replace(/
');content=content.replace(/\r/g,'
');content=content.replace(/\n/g,'
');}}this.editor.execCommand("mceInsertRawHTML",false,content);}},_insertWordContent:function(content){var t=this,ed=t.editor;if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','before',content);var rl=ed.getParam("paste_replace_list",'\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i
","gi"),"
]*>/gi,"");if(this.editor.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(this.editor.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break;}content=content.replace(new RegExp('href="?'+this._reEscape(""+document.location)+'','gi'),'href="'+this.editor.documentBaseURI.getURI());content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*
','gi');}if(!tinymce.isIE&&!this.editor.getParam('force_p_newlines')){content=content.replace(/<\/?p[^>]*>/gi,"");}content=content.replace(/<\/?div[^>]*>/gi,"");if(this.editor.getParam("paste_convert_middot_lists",true)){var div=ed.dom.create("div",null,content);var className=this.editor.getParam("paste_unindented_list_class","unIndentedList");while(this._convertMiddots(div,"--list--"));while(this._convertMiddots(div,middot,className));while(this._convertMiddots(div,bull));content=div.innerHTML;}if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/
<\/(h[1-6]|div|p|address|pre)>/g,'$1>');o.content=o.content.replace(/ id=\"undefined\"/g,'');});},_fixWebKitSpans:function(){var t=this,ed=t.editor;if(!isOldWebKit){Event.add(ed.getDoc(),'DOMNodeInserted',function(e){e=e.target;if(e&&e.nodeType==1)t._fixAppleSpan(e);});}else{ed.onExecCommand.add(function(){each(ed.dom.select('span'),function(n){t._fixAppleSpan(n);});ed.nodeChanged();});}},_fixAppleSpan:function(e){var ed=this.editor,dom=ed.dom,fz=this.webKitFontSizes,fzn=this.namedFontSizes,s=ed.settings,st,p;if(dom.getAttrib(e,'mce_fixed'))return;if(e.nodeName=='SPAN'&&e.className=='Apple-style-span'){st=e.style;if(!s.convert_fonts_to_spans){if(st.fontSize){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'size',inArray(fz,st.fontSize)+1);}if(st.fontFamily){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'face',st.fontFamily);}if(st.color){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'color',dom.toHex(st.color));}if(st.backgroundColor){dom.setAttrib(e,'mce_name','font');dom.setStyle(e,'background-color',st.backgroundColor);}}else{if(st.fontSize)dom.setStyle(e,'fontSize',fzn[inArray(fz,st.fontSize)]);}if(st.fontWeight=='bold')dom.setAttrib(e,'mce_name','strong');if(st.fontStyle=='italic')dom.setAttrib(e,'mce_name','em');if(st.textDecoration=='underline')dom.setAttrib(e,'mce_name','u');if(st.textDecoration=='line-through')dom.setAttrib(e,'mce_name','strike');if(st.verticalAlign=='super')dom.setAttrib(e,'mce_name','sup');if(st.verticalAlign=='sub')dom.setAttrib(e,'mce_name','sub');dom.setAttrib(e,'mce_fixed','1');}},_patchSafari2x:function(ed){var t=this,setContent,getNode,dom=ed.dom,lr;if(ed.windowManager.onBeforeOpen){ed.windowManager.onBeforeOpen.add(function(){r=ed.selection.getRng();});}ed.selection.select=function(n){this.getSel().setBaseAndExtent(n,0,n,1);};getNode=ed.selection.getNode;ed.selection.getNode=function(){return t.selElm||getNode.call(this);};ed.selection.getRng=function(){var t=this,s=t.getSel(),d=ed.getDoc(),r,rb,ra,di;if(s.anchorNode){r=d.createRange();try{rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(1);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(1);di=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;r.setStart(di?s.anchorNode:s.focusNode,di?s.anchorOffset:s.focusOffset);r.setEnd(di?s.focusNode:s.anchorNode,di?s.focusOffset:s.anchorOffset);lr=r;}catch(ex){}}return r||lr;};setContent=ed.selection.setContent;ed.selection.setContent=function(h,s){var r=this.getRng(),b;try{setContent.call(this,h,s);}catch(ex){b=dom.create('body');b.innerHTML=h;each(b.childNodes,function(n){r.insertNode(n.cloneNode(true));});}};},_insertBR:function(ed){var dom=ed.dom,s=ed.selection,r=s.getRng(),br;r.insertNode(br=dom.create('br'));r.setStartAfter(br);r.setEndAfter(br);s.setRng(r);if(s.getSel().focusNode==br.previousSibling){s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'),br));s.collapse(1);}ed.getWin().scrollTo(0,dom.getPos(s.getRng().startContainer).y);}});tinymce.PluginManager.add('safari',tinymce.plugins.Safari);})();
\ No newline at end of file
+(function(){var Event=tinymce.dom.Event,grep=tinymce.grep,each=tinymce.each,inArray=tinymce.inArray,isOldWebKit=tinymce.isOldWebKit;tinymce.create('tinymce.plugins.Safari',{init:function(ed){var t=this,dom;if(!tinymce.isWebKit)return;t.editor=ed;t.webKitFontSizes=['x-small','small','medium','large','x-large','xx-large','-webkit-xxx-large'];t.namedFontSizes=['xx-small','x-small','small','medium','large','x-large','xx-large'];ed.onPaste.add(function(ed,e){function removeStyles(e){e=e.target;if(e.nodeType==1){e.style.cssText='';each(ed.dom.select('*',e),function(e){e.style.cssText='';});}};Event.add(ed.getDoc(),'DOMNodeInserted',removeStyles);window.setTimeout(function(){Event.remove(ed.getDoc(),'DOMNodeInserted',removeStyles);},0);});ed.onKeyUp.add(function(ed,e){var h,b;if(e.keyCode==46||e.keyCode==8){b=ed.getBody();h=b.innerHTML;if(b.childNodes.length==1&&!/<(img|hr)/.test(h)&&tinymce.trim(h.replace(/<[^>]+>/g,'')).length==0)ed.setContent('',{format:'raw'});}});ed.addCommand('FormatBlock',function(u,v){var dom=ed.dom,e=dom.getParent(ed.selection.getNode(),dom.isBlock);if(e)dom.replace(dom.create(v),e,1);else ed.getDoc().execCommand("FormatBlock",false,v);});ed.addCommand('mceInsertContent',function(u,v){ed.getDoc().execCommand("InsertText",false,'mce_marker');ed.getBody().innerHTML=ed.getBody().innerHTML.replace(/mce_marker/g,v+'XX');ed.selection.select(ed.dom.get('_mce_tmp'));ed.getDoc().execCommand("Delete",false,' ');});ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&(e.shiftKey||ed.settings.force_br_newlines&&ed.selection.getNode().nodeName!='LI')){t._insertBR(ed);Event.cancel(e);}});ed.addQueryValueHandler('FontSize',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;return ed.getDoc().queryCommandValue('FontSize');});ed.addQueryValueHandler('FontName',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');return ed.getDoc().queryCommandValue('FontName');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName=='IMG'){t.selElm=e;ed.selection.select(e);}else t.selElm=null;});ed.onInit.add(function(){t._fixWebKitSpans();if(isOldWebKit)t._patchSafari2x(ed);});ed.onSetContent.add(function(){dom=ed.dom;each(['strong','b','em','u','strike','sub','sup','a'],function(v){each(grep(dom.select(v)).reverse(),function(n){var nn=n.nodeName.toLowerCase(),st;if(nn=='a'){if(n.name)dom.replace(dom.create('img',{mce_name:'a',name:n.name,'class':'mceItemAnchor'}),n);return;}switch(nn){case'b':case'strong':if(nn=='b')nn='strong';st='font-weight: bold;';break;case'em':st='font-style: italic;';break;case'u':st='text-decoration: underline;';break;case'sub':st='vertical-align: sub;';break;case'sup':st='vertical-align: super;';break;case'strike':st='text-decoration: line-through;';break;}dom.replace(dom.create('span',{mce_name:nn,style:st,'class':'Apple-style-span'}),n,1);});});});ed.onPreProcess.add(function(ed,o){dom=ed.dom;each(grep(o.node.getElementsByTagName('span')).reverse(),function(n){var v,bg;if(o.get){if(dom.hasClass(n,'Apple-style-span')){bg=n.style.backgroundColor;switch(dom.getAttrib(n,'mce_name')){case'font':if(!ed.settings.convert_fonts_to_spans)dom.setAttrib(n,'style','');break;case'strong':case'em':case'sub':case'sup':dom.setAttrib(n,'style','');break;case'strike':case'u':if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');else dom.setAttrib(n,'mce_name','');break;default:if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');}if(bg)n.style.backgroundColor=bg;}}if(dom.hasClass(n,'mceItemRemoved'))dom.remove(n,1);});});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/
<\/(h[1-6]|div|p|address|pre)>/g,'$1>');o.content=o.content.replace(/ id=\"undefined\"/g,'');});},getInfo:function(){return{longname:'Safari compatibility',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_fixWebKitSpans:function(){var t=this,ed=t.editor;if(!isOldWebKit){Event.add(ed.getDoc(),'DOMNodeInserted',function(e){e=e.target;if(e&&e.nodeType==1)t._fixAppleSpan(e);});}else{ed.onExecCommand.add(function(){each(ed.dom.select('span'),function(n){t._fixAppleSpan(n);});ed.nodeChanged();});}},_fixAppleSpan:function(e){var ed=this.editor,dom=ed.dom,fz=this.webKitFontSizes,fzn=this.namedFontSizes,s=ed.settings,st,p;if(dom.getAttrib(e,'mce_fixed'))return;if(e.nodeName=='SPAN'&&e.className=='Apple-style-span'){st=e.style;if(!s.convert_fonts_to_spans){if(st.fontSize){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'size',inArray(fz,st.fontSize)+1);}if(st.fontFamily){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'face',st.fontFamily);}if(st.color){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'color',dom.toHex(st.color));}if(st.backgroundColor){dom.setAttrib(e,'mce_name','font');dom.setStyle(e,'background-color',st.backgroundColor);}}else{if(st.fontSize)dom.setStyle(e,'fontSize',fzn[inArray(fz,st.fontSize)]);}if(st.fontWeight=='bold')dom.setAttrib(e,'mce_name','strong');if(st.fontStyle=='italic')dom.setAttrib(e,'mce_name','em');if(st.textDecoration=='underline')dom.setAttrib(e,'mce_name','u');if(st.textDecoration=='line-through')dom.setAttrib(e,'mce_name','strike');if(st.verticalAlign=='super')dom.setAttrib(e,'mce_name','sup');if(st.verticalAlign=='sub')dom.setAttrib(e,'mce_name','sub');dom.setAttrib(e,'mce_fixed','1');}},_patchSafari2x:function(ed){var t=this,setContent,getNode,dom=ed.dom,lr;if(ed.windowManager.onBeforeOpen){ed.windowManager.onBeforeOpen.add(function(){r=ed.selection.getRng();});}ed.selection.select=function(n){this.getSel().setBaseAndExtent(n,0,n,1);};getNode=ed.selection.getNode;ed.selection.getNode=function(){return t.selElm||getNode.call(this);};ed.selection.getRng=function(){var t=this,s=t.getSel(),d=ed.getDoc(),r,rb,ra,di;if(s.anchorNode){r=d.createRange();try{rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(1);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(1);di=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;r.setStart(di?s.anchorNode:s.focusNode,di?s.anchorOffset:s.focusOffset);r.setEnd(di?s.focusNode:s.anchorNode,di?s.focusOffset:s.anchorOffset);lr=r;}catch(ex){}}return r||lr;};setContent=ed.selection.setContent;ed.selection.setContent=function(h,s){var r=this.getRng(),b;try{setContent.call(this,h,s);}catch(ex){b=dom.create('body');b.innerHTML=h;each(b.childNodes,function(n){r.insertNode(n.cloneNode(true));});}};},_insertBR:function(ed){var dom=ed.dom,s=ed.selection,r=s.getRng(),br;r.insertNode(br=dom.create('br'));r.setStartAfter(br);r.setEndAfter(br);s.setRng(r);if(s.getSel().focusNode==br.previousSibling){s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'),br));s.collapse(1);}ed.getWin().scrollTo(0,dom.getPos(s.getRng().startContainer).y);}});tinymce.PluginManager.add('safari',tinymce.plugins.Safari);})();
diff --git a/wp-includes/js/tinymce/plugins/spellchecker/config.php b/wp-includes/js/tinymce/plugins/spellchecker/config.php
index f008d11..96f273a 100755
--- a/wp-includes/js/tinymce/plugins/spellchecker/config.php
+++ b/wp-includes/js/tinymce/plugins/spellchecker/config.php
@@ -1,24 +1,21 @@
diff --git a/wp-includes/js/tinymce/plugins/spellchecker/css/content.css b/wp-includes/js/tinymce/plugins/spellchecker/css/content.css
index c56a453..24efa02 100755
--- a/wp-includes/js/tinymce/plugins/spellchecker/css/content.css
+++ b/wp-includes/js/tinymce/plugins/spellchecker/css/content.css
@@ -1,4 +1 @@
-.mceItemHiddenSpellWord {
- background: url('../images/wline.gif') repeat-x bottom left;
- cursor: default;
-}
+.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}
diff --git a/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js b/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js
index 865b332..5bfdd47 100755
--- a/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js
+++ b/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js
@@ -1,630 +1,338 @@
/**
- * $Id: editor_plugin_src.js 289 2007-05-28 09:12:16Z spocke $
+ * $Id: editor_plugin_src.js 425 2007-11-21 15:17:39Z spocke $
*
* @author Moxiecode
- * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
*/
-tinyMCE.importPluginLanguagePack('spellchecker', 'en,fr,sv,nn,nb');
-
-// Plucin static class
-var TinyMCE_SpellCheckerPlugin = {
- _contextMenu : new TinyMCE_Menu(),
- _menu : new TinyMCE_Menu(),
- _counter : 0,
- _ajaxPage : '/tinyspell.php',
-
- getInfo : function() {
- return {
- longname : 'Spellchecker PHP',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
- version : "1.0.5"
- };
- },
-
- handleEvent : function(e) {
- var elm = tinyMCE.isMSIE ? e.srcElement : e.target;
- var inst = tinyMCE.selectedInstance, args = '';
- var self = TinyMCE_SpellCheckerPlugin;
- var cm = self._contextMenu;
- var p, p2, x, y, sx, sy, h, elm;
-
- // Handle click on word
- if ((e.type == "click" || e.type == "contextmenu") && elm) {
- do {
- if (tinyMCE.getAttrib(elm, 'class') == "mceItemHiddenSpellWord") {
- inst.spellCheckerElm = elm;
-
- // Setup arguments
- args += 'id=' + inst.editorId + "|" + (++self._counter);
- args += '&cmd=suggest&check=' + encodeURIComponent(elm.innerHTML);
- args += '&lang=' + escape(inst.spellCheckerLang);
-
- elm = inst.spellCheckerElm;
- p = tinyMCE.getAbsPosition(inst.iframeElement);
- p2 = tinyMCE.getAbsPosition(elm);
- h = parseInt(elm.offsetHeight);
- sx = inst.getBody().scrollLeft;
- sy = inst.getBody().scrollTop;
- x = p.absLeft + p2.absLeft - sx;
- y = p.absTop + p2.absTop - sy + h;
-
- cm.clear();
- cm.addTitle(tinyMCE.getLang('lang_spellchecker_wait', '', true));
- cm.show();
- cm.moveTo(x, y);
-
- inst.selection.selectNode(elm, false, false);
-
- self._sendAjax(self.baseURL + self._ajaxPage, self._ajaxResponse, 'post', args);
-
- tinyMCE.cancelEvent(e);
- return false;
+(function() {
+ var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
+
+ tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
+ getInfo : function() {
+ return {
+ longname : 'Spellchecker',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ init : function(ed, url) {
+ var t = this, cm;
+
+ t.url = url;
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceSpellCheck', function() {
+ if (!t.active) {
+ ed.setProgressState(1);
+ t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
+ if (r.length > 0) {
+ t.active = 1;
+ t._markWords(r);
+ ed.setProgressState(0);
+ ed.nodeChanged();
+ } else {
+ ed.setProgressState(0);
+ ed.windowManager.alert('spellchecker.no_mpell');
+ }
+ });
+ } else
+ t._done();
+ });
+
+ ed.onInit.add(function() {
+ if (ed.settings.content_css !== false)
+ ed.dom.loadCSS(url + '/css/content.css');
+ });
+
+ ed.onClick.add(t._showMenu, t);
+ ed.onContextMenu.add(t._showMenu, t);
+ ed.onBeforeGetContent.add(function() {
+ if (t.active)
+ t._removeWords();
+ });
+
+ ed.onNodeChange.add(function(ed, cm) {
+ cm.setActive('spellchecker', t.active);
+ });
+
+ ed.onSetContent.add(function() {
+ t._done();
+ });
+
+ ed.onBeforeGetContent.add(function() {
+ t._done();
+ });
+
+ ed.onBeforeExecCommand.add(function(ed, cmd) {
+ if (cmd == 'mceFullScreen')
+ t._done();
+ });
+
+ // Find selected language
+ t.languages = {};
+ each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
+ if (k.indexOf('+') === 0) {
+ k = k.substring(1);
+ t.selectedLang = v;
}
- } while ((elm = elm.parentNode));
- }
-
- return true;
- },
-
- initInstance : function(inst) {
- var self = TinyMCE_SpellCheckerPlugin, m = self._menu, cm = self._contextMenu, e;
-
- tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/spellchecker/css/content.css");
-
- if (!tinyMCE.hasMenu('spellcheckercontextmenu')) {
- tinyMCE.importCSS(document, tinyMCE.baseURL + "/plugins/spellchecker/css/spellchecker.css");
-
- cm.init({drop_menu : false});
- tinyMCE.addMenu('spellcheckercontextmenu', cm);
- }
-
- if (!tinyMCE.hasMenu('spellcheckermenu')) {
- m.init({});
- tinyMCE.addMenu('spellcheckermenu', m);
- }
-
- inst.spellCheckerLang = 'en';
- self._buildSettingsMenu(inst, null);
-
- e = self._getBlockBoxLayer(inst).create('div', 'mceBlockBox', document.getElementById(inst.editorId + '_parent'));
- self._getMsgBoxLayer(inst).create('div', 'mceMsgBox', document.getElementById(inst.editorId + '_parent'));
- },
-
- _getMsgBoxLayer : function(inst) {
- if (!inst.spellCheckerMsgBoxL)
- inst.spellCheckerMsgBoxL = new TinyMCE_Layer(inst.editorId + '_spellcheckerMsgBox', false);
-
- return inst.spellCheckerMsgBoxL;
- },
- _getBlockBoxLayer : function(inst) {
- if (!inst.spellCheckerBoxL)
- inst.spellCheckerBoxL = new TinyMCE_Layer(inst.editorId + '_spellcheckerBlockBox', false);
+ t.languages[k] = v;
+ });
+ },
- return inst.spellCheckerBoxL;
- },
+ createControl : function(n, cm) {
+ var t = this, c, ed = t.editor;
- _buildSettingsMenu : function(inst, lang) {
- var i, ar = tinyMCE.getParam('spellchecker_languages', '+English=en').split(','), p;
- var self = TinyMCE_SpellCheckerPlugin, m = self._menu, c;
+ if (n == 'spellchecker') {
+ c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
- m.clear();
- m.addTitle(tinyMCE.getLang('lang_spellchecker_langs', '', true));
+ c.onRenderMenu.add(function(c, m) {
+ m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+ each(t.languages, function(v, k) {
+ var o = {icon : 1}, mi;
- for (i=0; i
';
- h += '
';
- h += '';
- } else {
- if (tinyMCE.isMSIE && !tinyMCE.isOpera)
- h += '';
- else
- h += '';
-
- h += '';
- h += '';
- h += '
';
- h += '';
- }
+ _walk : function(n, f) {
+ var d = this.editor.getDoc(), w;
- return h;
- },
+ if (d.createTreeWalker) {
+ w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
- _menuButtonEvent : function(e, o) {
- var t = this;
+ while ((n = w.nextNode()) != null)
+ f.call(this, n);
+ } else
+ tinymce.walk(n, f, 'childNodes');
+ },
- // Give IE some time since it's buggy!! :(
- window.setTimeout(function() {
- t._menuButtonEvent2(e, o);
- }, 1);
- },
+ _getSeparators : function() {
+ var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');
- _menuButtonEvent2 : function(e, o) {
- if (o.className == 'mceMenuButtonFocus')
- return;
+ // Build word separator regexp
+ for (i=0; i';
- tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, html);
- tinyMCE.selectedInstance.repaint();
- return true;
-
- case "wpPage":
- var flag = "";
- var template = new Array();
- var altPage = tinyMCE.getLang('lang_wordpress_more_alt');
-
- // Is selection a image
- if (focusElm != null && focusElm.nodeName.toLowerCase() == "img") {
- flag = getAttrib(focusElm, 'name');
-
- if (flag != 'mce_plugin_wordpress_page') // Not a wordpress
- return true;
-
- action = "update";
+/**
+ * WordPress plugin.
+ */
+
+(function() {
+ var DOM = tinymce.DOM;
+
+ // Load plugin specific language pack
+ tinymce.PluginManager.requireLangPack('wordpress');
+
+ tinymce.create('tinymce.plugins.WordPress', {
+ init : function(ed, url) {
+ var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2');
+ var moreHTML = '
';
+ var nextpageHTML = '
';
+
+ if ( tinymce.util.Cookie.get('kitchenSink') == '1' )
+ ed.settings.wordpress_adv_hidden = 0;
+
+ // Hides the specified toolbar and resizes the iframe
+ ed.onPostRender.add(function() {
+ if ( ed.getParam('wordpress_adv_hidden', 1) ) {
+ DOM.hide(ed.controlManager.get(tbId).id);
+ t._resizeIframe(ed, tbId, 28);
}
-
- html = ''
- + '';
- tinyMCE.execCommand("mceInsertContent",true,html);
- tinyMCE.selectedInstance.repaint();
- return true;
-
- case "wpHelp":
- var template = new Array();
-
- template['file'] = tinyMCE.baseURL + '/wp-mce-help.php';
- template['width'] = 480;
- template['height'] = 380;
-
- args = {
- resizable : 'yes',
- scrollbars : 'yes'
- };
-
- tinyMCE.openWindow(template, args);
- return true;
- case "wpAdv":
- var adv = document.getElementById('wpadvbar');
- if ( adv.style.display == 'none' ) {
- adv.style.display = 'block';
- tinyMCE.switchClass(editor_id + '_wp_adv', 'mceButtonSelected');
+ });
+
+ // Register commands
+ ed.addCommand('WP_More', function() {
+ ed.execCommand('mceInsertContent', 0, moreHTML);
+ });
+
+ ed.addCommand('WP_Page', function() {
+ ed.execCommand('mceInsertContent', 0, nextpageHTML);
+ });
+
+ ed.addCommand('WP_Help', function() {
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/wp-mce-help.php',
+ width : 450,
+ height : 420,
+ inline : 1
+ });
+ });
+
+ ed.addCommand('WP_Adv', function() {
+ var id = ed.controlManager.get(tbId).id, cm = ed.controlManager, cook = tinymce.util.Cookie, date;
+
+ date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000));
+
+ if (DOM.isHidden(id)) {
+ cm.setActive('wp_adv', 1);
+ DOM.show(id);
+ t._resizeIframe(ed, tbId, -28);
+ ed.settings.wordpress_adv_hidden = 0;
+ cook.set('kitchenSink', '1', date);
} else {
- adv.style.display = 'none';
- tinyMCE.switchClass(editor_id + '_wp_adv', 'mceButtonNormal');
- }
- return true;
- }
-
- // Pass to next handler in chain
- return false;
- },
-
- cleanup : function(type, content) {
- switch (type) {
-
- case "insert_to_editor":
- var startPos = 0;
- var altMore = tinyMCE.getLang('lang_wordpress_more_alt');
- var altPage = tinyMCE.getLang('lang_wordpress_page_alt');
-
- // Parse all tags and replace them with images
- while ((startPos = content.indexOf('', startPos) + 3;
- // Insert image
- var moreText = content.substring(startPos + 8, endPos - 3);
- var contentAfter = content.substring(endPos);
- content = content.substring(0, startPos);
- content += '
';
- content += contentAfter;
-
- startPos++;
- }
- var startPos = 0;
-
- // Parse all tags and replace them with images
- while ((startPos = content.indexOf('', startPos)) != -1) {
- // Insert image
- var contentAfter = content.substring(startPos + 15);
- content = content.substring(0, startPos);
- content += '
';
- content += contentAfter;
-
- startPos++;
- }
-
- // Look for \n in
, replace with
- var startPos = -1;
- while ((startPos = content.indexOf('', startPos+1);
- var innerPos = content.indexOf('>', startPos+1);
- var chunkBefore = content.substring(0, innerPos);
- var chunkAfter = content.substring(endPos);
-
- var innards = content.substring(innerPos, endPos);
- innards = innards.replace(/\n/g, '
');
- content = chunkBefore + innards + chunkAfter;
+ cm.setActive('wp_adv', 0);
+ DOM.hide(id);
+ t._resizeIframe(ed, tbId, 28);
+ ed.settings.wordpress_adv_hidden = 1;
+ cook.set('kitchenSink', '0', date);
}
-
- break;
-
- case "get_from_editor":
- // Parse all img tags and replace them with
- var startPos = -1;
- while ((startPos = content.indexOf('', startPos);
- var attribs = this._parseAttributes(content.substring(startPos + 4, endPos));
-
- if (attribs['class'] == "mce_plugin_wordpress_more" || attribs['name'] == "mce_plugin_wordpress_more") {
- endPos += 2;
-
- var moreText = attribs['moretext'] ? attribs['moretext'] : '';
- var embedHTML = '';
-
- // Insert embed/object chunk
- chunkBefore = content.substring(0, startPos);
- chunkAfter = content.substring(endPos);
- content = chunkBefore + embedHTML + chunkAfter;
- }
- if (attribs['class'] == "mce_plugin_wordpress_page" || attribs['name'] == "mce_plugin_wordpress_page") {
- endPos += 2;
-
- var embedHTML = '';
-
- // Insert embed/object chunk
- chunkBefore = content.substring(0, startPos);
- chunkAfter = content.substring(endPos);
- content = chunkBefore + embedHTML + chunkAfter;
+ });
+
+ // Register buttons
+ ed.addButton('wp_more', {
+ title : 'wordpress.wp_more_desc',
+ image : url + '/img/more.gif',
+ cmd : 'WP_More'
+ });
+
+ ed.addButton('wp_page', {
+ title : 'wordpress.wp_page_desc',
+ image : url + '/img/page.gif',
+ cmd : 'WP_Page'
+ });
+
+ ed.addButton('wp_help', {
+ title : 'wordpress.wp_help_desc',
+ image : url + '/img/help.gif',
+ cmd : 'WP_Help'
+ });
+
+ ed.addButton('wp_adv', {
+ title : 'wordpress.wp_adv_desc',
+ image : url + '/img/toolbars.gif',
+ cmd : 'WP_Adv'
+ });
+
+ // Add class "alignleft" or "alignright" when selecting align for images.
+ ed.onBeforeExecCommand.add(function( editor, cmd ) {
+ var node, dir, xdir;
+
+ if ( ( cmd.indexOf('Justify') != -1 ) && ( node = editor.selection.getNode() ) ) {
+ if ( node.nodeName !== 'IMG' ) return;
+ dir = cmd.substring(7).toLowerCase();
+ if ( 'JustifyCenter' == cmd || editor.queryCommandState( cmd ) ) {
+ editor.dom.removeClass( node, "alignleft" );
+ editor.dom.removeClass( node, "alignright" );
+ } else {
+ xdir = ( dir == 'left' ) ? 'right' : 'left';
+ editor.dom.removeClass( node, "align"+xdir );
+ editor.dom.addClass( node, "align"+dir );
}
}
-
- // Remove normal line breaks
- content = content.replace(/\n|\r/g, ' ');
-
- // Look for
in , replace with \n
- var startPos = -1;
- while ((startPos = content.indexOf('', startPos+1);
- var innerPos = content.indexOf('>', startPos+1);
- var chunkBefore = content.substring(0, innerPos);
- var chunkAfter = content.substring(endPos);
-
- var innards = content.substring(innerPos, endPos);
- innards = innards.replace(new RegExp('
', 'g'), '\n');
- innards = innards.replace(new RegExp('\\s$', ''), '');
- content = chunkBefore + innards + chunkAfter;
- }
-
- // Remove anonymous, empty paragraphs.
- content = content.replace(new RegExp('
)*)*', 'g'), '<$1>');
-
- // Pretty it up for the source editor.
- var blocklist = 'blockquote|ul|ol|li|table|thead|tr|th|td|div|h\\d|pre|p';
- content = content.replace(new RegExp('\\s*('+blocklist+')>\\s*', 'mg'), '$1>\n');
- content = content.replace(new RegExp('\\s*<(('+blocklist+')[^>]*)>', 'mg'), '\n<$1>');
- content = content.replace(new RegExp('<((li|/?tr|/?thead|/?tfoot)( [^>]*)?)>', 'g'), '\t<$1>');
- content = content.replace(new RegExp('<((td|th)( [^>]*)?)>', 'g'), '\t\t<$1>');
- content = content.replace(new RegExp('\\s*
\\s*', 'mg'), '
\n');
- content = content.replace(new RegExp('^\\s*', ''), '');
- content = content.replace(new RegExp('\\s*$', ''), '');
-
- break;
- }
-
- // Pass through to next handler in chain
- return content;
- },
-
- handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-
- tinyMCE.switchClass(editor_id + '_wp_more', 'mceButtonNormal');
- tinyMCE.switchClass(editor_id + '_wp_page', 'mceButtonNormal');
-
- if (node == null)
- return;
-
- do {
- if (node.nodeName.toLowerCase() == "img" && tinyMCE.getAttrib(node, 'class').indexOf('mce_plugin_wordpress_more') == 0)
- tinyMCE.switchClass(editor_id + '_wp_more', 'mceButtonSelected');
- if (node.nodeName.toLowerCase() == "img" && tinyMCE.getAttrib(node, 'class').indexOf('mce_plugin_wordpress_page') == 0)
- tinyMCE.switchClass(editor_id + '_wp_page', 'mceButtonSelected');
- } while ((node = node.parentNode));
-
- return true;
- },
-
- saveCallback : function(el, content, body) {
- // We have a TON of cleanup to do.
-
- // Mark
\\s*', 'gi'), '\n');
-
- // Fix some block element newline issues
- var blocklist = 'blockquote|ul|ol|li|table|thead|tr|th|td|div|h\\d|pre';
- content = content.replace(new RegExp('\\s*<(('+blocklist+') ?[^>]*)\\s*>', 'mg'), '\n<$1>');
- content = content.replace(new RegExp('\\s*('+blocklist+')>\\s*', 'mg'), '$1>\n');
- content = content.replace(new RegExp('
]+>.*
)', 'mg'), '\n$1'); - - // Trim trailing whitespace - content = content.replace(new RegExp('\\s*$', ''), ''); - - // Hope. - return content; - - }, - - _parseAttributes : function(attribute_string) { - var attributeName = ""; - var attributeValue = ""; - var withInName; - var withInValue; - var attributes = new Array(); - var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g'); - var titleText = tinyMCE.getLang('lang_wordpress_more'); - var titleTextPage = tinyMCE.getLang('lang_wordpress_page'); - - if (attribute_string == null || attribute_string.length < 2) - return null; - - withInName = withInValue = false; - - for (var i=0; i
';
+
+ // Load plugin specific CSS into editor
+ ed.onInit.add(function() {
+ ed.dom.loadCSS(url + '/css/content.css');
+ });
+
+ // Display morebreak instead if img in element path
+ ed.onPostRender.add(function() {
+ if (ed.theme.onResolveName) {
+ ed.theme.onResolveName.add(function(th, o) {
+ if (o.node.nodeName == 'IMG') {
+ if ( ed.dom.hasClass(o.node, 'mceWPmore') )
+ o.name = 'wpmore';
+ if ( ed.dom.hasClass(o.node, 'mceWPnextpage') )
+ o.name = 'wppage';
+ }
+
+ });
+ }
+ });
+
+ // Replace morebreak with images
+ ed.onBeforeSetContent.add(function(ed, o) {
+ o.content = o.content.replace(//g, moreHTML);
+ o.content = o.content.replace(//g, nextpageHTML);
+ });
+
+ // Replace images with morebreak
+ ed.onPostProcess.add(function(ed, o) {
+ if (o.get)
+ o.content = o.content.replace(/$1
\n"); - pee = pee.replace(new RegExp('\\s*?
', 'gi'), ''); - pee = pee.replace(new RegExp('\\s*(?(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|hr|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)\\s*
', 'gi'), "$1"); - pee = pee.replace(new RegExp("(
]*)>', 'gi'), "'); - pee = pee.replace(new RegExp('', 'gi'), '"); - pee = pee.replace(new RegExp('
\\s*(?(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|hr|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)', 'gi'), "$1"); - pee = pee.replace(new RegExp('(?(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6])[^>]*>)\\s*
', 'gi'), "$1"); - pee = pee.replace(new RegExp('\\s*\\n', 'gi'), "Version: {$tinymce_version} ({$tinymce_releasedate})
+Version: ()
TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.
-Copyright © 2003-2007, Moxiecode Systems AB, All rights reserved.
+Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.
For more information about this software visit the TinyMCE website.
- +| {$lang_theme_charmap_title} | +{#advanced_dlg.charmap_title} | |||||
| - + | + |
-
| ||||