Changeset 7173
- Timestamp:
- 03/06/08 19:56:02 (9 months ago)
- Files:
-
- trunk/wp-admin/js/editor.js (modified) (6 diffs)
- trunk/wp-includes/js/tinymce/langs/wp-langs.php (modified) (5 diffs)
- trunk/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css (modified) (2 diffs)
- trunk/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js (modified) (1 diff)
- trunk/wp-includes/js/tinymce/themes/advanced/js/link.js (modified) (1 diff)
- trunk/wp-includes/js/tinymce/themes/advanced/skins/default/content.css (modified) (1 diff)
- trunk/wp-includes/js/tinymce/themes/advanced/skins/default/ui.css (modified) (1 diff)
- trunk/wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css (modified) (1 diff)
- trunk/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css (modified) (3 diffs)
- trunk/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css (modified) (7 diffs)
- trunk/wp-includes/js/tinymce/tiny_mce.js (modified) (1 diff)
- trunk/wp-includes/js/tinymce/tiny_mce_config.php (modified) (7 diffs)
- trunk/wp-includes/script-loader.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/wp-admin/js/editor.js
r7130 r7173 3 3 if ( ( 'undefined' == typeof wpTinyMCEConfig ) || 'tinymce' == wpTinyMCEConfig.defaultEditor ) { 4 4 document.getElementById('editorcontainer').style.padding = '0px'; 5 tinyMCE.execCommand("mceAddControl", true, "content");5 tinyMCE.execCommand("mceAddControl", false, "content"); 6 6 } else { 7 7 var H; … … 14 14 15 15 saveCallback : function(el, content, body) { 16 17 16 document.getElementById(el).style.color = '#fff'; 18 if ( tinyMCE.activeEditor.isHidden() ) 19 content = document.getElementById(el).value; 20 else 21 content = this.pre_wpautop(content); 22 23 return content; 17 return this.pre_wpautop(content); 24 18 }, 25 19 … … 27 21 // We have a TON of cleanup to do. 28 22 29 // content = content.replace(/\n|\r/g, ' ');30 23 // Remove anonymous, empty paragraphs. 31 content = content.replace(new RegExp('<p>(\\s| |<br >)*</p>', 'mg'), '');24 content = content.replace(new RegExp('<p>(\\s| |<br />)*</p>', 'mg'), ''); 32 25 33 26 // Mark </p> if it has any attributes. … … 85 78 else tinyMCE.execCommand("mceAddControl", false, id); 86 79 87 this.wpSetDefaultEditor( 'tinymce');80 this.wpSetDefaultEditor('tinymce'); 88 81 } else { 89 82 this.edToggle(H, P); 90 tinyMCE.triggerSave(); 91 ta.style.height = tinyMCE.activeEditor.contentAreaContainer.offsetHeight + 6 + 'px'; 83 ta.style.height = ed.getContentAreaContainer().offsetHeight + 6 + 'px'; 92 84 93 85 ed.hide(); 94 ta.value = this.pre_wpautop(ta.value);95 86 qt.style.display = 'block'; 96 87 … … 105 96 106 97 ta.style.color = ''; 107 108 this.wpSetDefaultEditor( 'html' ); 98 this.wpSetDefaultEditor('html'); 109 99 } 110 100 }, … … 118 108 }, 119 109 120 wpSetDefaultEditor : function( editor) {110 wpSetDefaultEditor : function(editor) { 121 111 try { 122 112 editor = escape( editor.toString() ); trunk/wp-includes/js/tinymce/langs/wp-langs.php
r7131 r7173 134 134 }, 135 135 fullscreen:{ 136 desc:"' . mce_escape( __('Toggle fullscreen mode') ) . ' "136 desc:"' . mce_escape( __('Toggle fullscreen mode') ) . ' (Alt+Shift+G)" 137 137 }, 138 138 media:{ … … 152 152 }, 153 153 spellchecker:{ 154 desc:"' . mce_escape( __('Toggle spellchecker') ) . ' ",154 desc:"' . mce_escape( __('Toggle spellchecker') ) . ' (Alt+Shift+N)", 155 155 menu:"' . mce_escape( __('Spellchecker settings') ) . '", 156 156 ignore_word:"' . mce_escape( __('Ignore word') ) . '", … … 186 186 dt:"' . mce_escape( __('Definition term ') ) . '", 187 187 dd:"' . mce_escape( __('Definition description') ) . '", 188 bold_desc:"' . mce_escape( __('Bold (Ctrl+B)') ) . '",189 italic_desc:"' . mce_escape( __('Italic (Ctrl+I)') ) . '",190 underline_desc:"' . mce_escape( __('Underline (Ctrl+U)') ) . '",191 striketrough_desc:"' . mce_escape( __('Strikethrough') ) . ' ",192 justifyleft_desc:"' . mce_escape( __('Align left') ) . ' ",193 justifycenter_desc:"' . mce_escape( __('Align center') ) . ' ",194 justifyright_desc:"' . mce_escape( __('Align right') ) . ' ",195 justifyfull_desc:"' . mce_escape( __('Align full') ) . ' ",196 bullist_desc:"' . mce_escape( __('Unordered list') ) . ' ",197 numlist_desc:"' . mce_escape( __('Ordered list') ) . ' ",188 bold_desc:"' . mce_escape( __('Bold') ) . ' (Ctrl / Alt+Shift + B)", 189 italic_desc:"' . mce_escape( __('Italic') ) . ' (Ctrl / Alt+Shift + I)", 190 underline_desc:"' . mce_escape( __('Underline') ) . '", 191 striketrough_desc:"' . mce_escape( __('Strikethrough') ) . ' (Alt+Shift+D)", 192 justifyleft_desc:"' . mce_escape( __('Align left') ) . ' (Alt+Shift+L)", 193 justifycenter_desc:"' . mce_escape( __('Align center') ) . ' (Alt+Shift+C)", 194 justifyright_desc:"' . mce_escape( __('Align right') ) . ' (Alt+Shift+R)", 195 justifyfull_desc:"' . mce_escape( __('Align full') ) . ' (Alt+Shift+J)", 196 bullist_desc:"' . mce_escape( __('Unordered list') ) . ' (Alt+Shift+U)", 197 numlist_desc:"' . mce_escape( __('Ordered list') ) . ' (Alt+Shift+O)", 198 198 outdent_desc:"' . mce_escape( __('Outdent') ) . '", 199 199 indent_desc:"' . mce_escape( __('Indent') ) . '", 200 undo_desc:"' . mce_escape( __('Undo (Ctrl+Z)') ) . '",201 redo_desc:"' . mce_escape( __('Redo (Ctrl+Y)') ) . '",202 link_desc:"' . mce_escape( __('Insert/edit link') ) . ' ",200 undo_desc:"' . mce_escape( __('Undo') ) . ' (Ctrl+Z)", 201 redo_desc:"' . mce_escape( __('Redo') ) . ' (Ctrl+Y)", 202 link_desc:"' . mce_escape( __('Insert/edit link') ) . ' (Alt+Shift+A)", 203 203 link_delta_width:"' . mce_escape( _c('0| Extra width for the link popup in pixels') ) . '", 204 204 link_delta_height:"' . mce_escape( _c('0| Extra height for the link popup in pixels') ) . '", 205 unlink_desc:"' . mce_escape( __('Unlink') ) . ' ",206 image_desc:"' . mce_escape( __('Insert/edit image') ) . ' ",205 unlink_desc:"' . mce_escape( __('Unlink') ) . ' (Alt+Shift+S)", 206 image_desc:"' . mce_escape( __('Insert/edit image') ) . ' (Alt+Shift+M)", 207 207 image_delta_width:"' . mce_escape( _c('0| Extra width for the image popup in pixels') ) . '", 208 208 image_delta_height:"' . mce_escape( _c('0| Extra height for the image popup in pixels') ) . '", … … 224 224 newdocument_desc:"' . mce_escape( __('New document') ) . '", 225 225 help_desc:"' . mce_escape( __('Help') ) . '", 226 blockquote_desc:"' . mce_escape( __('Blockquote') ) . ' ",226 blockquote_desc:"' . mce_escape( __('Blockquote') ) . ' (Alt+Shift+Q)", 227 227 clipboard_msg:"' . mce_escape( __('Copy/Cut/Paste is not available in Mozilla and Firefox.') ) . '", 228 228 path:"' . mce_escape( __('Path') ) . '", … … 391 391 392 392 tinyMCE.addI18n("' . $language . '.wordpress",{ 393 wp_adv_desc:"' . mce_escape( __('Show/Hide Advanced Toolbar') ) . '",394 wp_more_desc:"' . mce_escape( __('Insert More tag') ) . ' ",395 wp_page_desc:"' . mce_escape( __('Insert Page break') ) . ' ",396 wp_help_desc:"' . mce_escape( __('Help') ) . ' ",393 wp_adv_desc:"' . mce_escape( __('Show/Hide Advanced Toolbar') ) . ' (Alt+Shift+Z)", 394 wp_more_desc:"' . mce_escape( __('Insert More tag') ) . ' (Alt+Shift+T)", 395 wp_page_desc:"' . mce_escape( __('Insert Page break') ) . ' (Alt+Shift+P)", 396 wp_help_desc:"' . mce_escape( __('Help') ) . ' (Alt+Shift+H)", 397 397 wp_more_alt:"' . mce_escape( __('More...') ) . '", 398 398 wp_page_alt:"' . mce_escape( __('Next page...') ) . '" trunk/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css
r7060 r7173 13 13 .clearlooks2 .mceTop, 14 14 .clearlooks2 .mceTop div { 15 top:0;16 width:100%;17 height:23px15 top:0; 16 width:100%; 17 height:23px 18 18 } 19 19 .clearlooks2 .mceTop .mceLeft { 20 width:55%;21 background: #cee1ef;22 border-left: 1px solid #c6d9e9;23 border-top: 1px solid #c6d9e9;20 width:55%; 21 background: #cee1ef; 22 border-left: 1px solid #c6d9e9; 23 border-top: 1px solid #c6d9e9; 24 24 } 25 25 .clearlooks2 .mceTop .mceCenter { 26 26 } 27 27 .clearlooks2 .mceTop .mceRight { 28 right:0;29 width:55%;30 height:23px;31 background: #cee1ef;32 border-right: 1px solid #c6d9e9;33 border-top: 1px solid #c6d9e9;28 right:0; 29 width:55%; 30 height:23px; 31 background: #cee1ef; 32 border-right: 1px solid #c6d9e9; 33 border-top: 1px solid #c6d9e9; 34 34 } 35 35 .clearlooks2 .mceTop span { 36 width:100%;37 font: 12px/20px bold "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana,sans-serif;38 text-align:center;39 vertical-align:middle;40 line-height:23px;41 font-weight:bold;36 width:100%; 37 font: 12px/20px bold "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana,sans-serif; 38 text-align:center; 39 vertical-align:middle; 40 line-height:23px; 41 font-weight:bold; 42 42 } 43 43 .clearlooks2 .mceFocus .mceTop .mceLeft { 44 background: #2683ae;45 border-left: 1px solid #464646;46 border-top: 1px solid #464646;44 background: #2683ae; 45 border-left: 1px solid #464646; 46 border-top: 1px solid #464646; 47 47 } 48 48 .clearlooks2 .mceFocus .mceTop .mceCenter { 49 49 } 50 50 .clearlooks2 .mceFocus .mceTop .mceRight { 51 background: #2683ae;52 border-right: 1px solid #464646;53 border-top: 1px solid #464646;51 background: #2683ae; 52 border-right: 1px solid #464646; 53 border-top: 1px solid #464646; 54 54 } 55 55 .clearlooks2 .mceFocus .mceTop span { … … 118 118 .clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal;} 119 119 .clearlooks2 a:hover {font-weight:bold;} 120 .clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:# D6D7D5;}120 .clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#eaf3fa;} 121 121 .clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px;} 122 122 .clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif);} trunk/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js
r6959 r7173 1 (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;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(){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();});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').split(','),function(v){v=v.split('=');if(v[0].indexOf('+')===0){v[0]=v[0].substring(1);t.selectedLang=v[1];}t.languages[v[0]]=v[1];});},createControl:function(n,cm){var t=this,c,ed=t.editor;if(n=='spellchecker'){c=cm.createSplitButton(n,{title:'spellchecker.desc',cmd:'mceSpellCheck',scope:t});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;o.onclick=function(){mi.setSelected(1);t.selectedItem.setSelected(0);t.selectedItem=mi;t.selectedLang=v;};o.title=k;mi=m.add(o);mi.setSelected(v==t.selectedLang);if(v==t.selectedLang)t.selectedItem=mi;})});return c;}},_walk:function(n,f){var d=this.editor.getDoc(),w;if(d.createTreeWalker){w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while((n=w.nextNode())!=null)f.call(this,n);}else tinymce.walk(n,f,'childNodes');},_getSeparators:function(){var re='',i,str=this.editor.getParam('spellchecker_word_separator_chars','\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}����������������\u201d\u201c');for(i=0;i<str.length;i++)re+='\\'+str.charAt(i);return re;},_getWords:function(){var ed=this.editor,wl=[],tx='',lo={};this._walk(ed.getBody(),function(n){if(n.nodeType==3)tx+=n.nodeValue+' ';});tx=tx.replace(new RegExp('([0-9]|['+this._getSeparators()+'])','g'),' ');tx=tinymce.trim(tx.replace(/(\s+)/g,' '));each(tx.split(' '),function(v){if(!lo[v]){wl.push(v);lo[v]=1;}});return wl;},_removeWords:function(w){var ed=this.editor,dom=ed.dom,se=ed.selection,b=se.getBookmark();each(dom.select('span').reverse(),function(n){if(n&&(dom.hasClass(n,'mceItemHiddenSpellWord')||dom.hasClass(n,'mceItemHidden'))){if(!w||dom.decode(n.innerHTML)==w)dom.remove(n,1);}});se.moveToBookmark(b);},_markWords:function(wl){var r1,r2,r3,r4,r5,w='',ed=this.editor,re=this._getSeparators(),dom=ed.dom,nl=[];var se=ed.selection,b=se.getBookmark();each(wl,function(v){w+=(w?'|':'')+v;});r1=new RegExp('(['+re+'])('+w+')(['+re+'])','g');r2=new RegExp('^('+w+')','g');r3=new RegExp('('+w+')(['+re+']?)$','g');r4=new RegExp('^('+w+')(['+re+']?)$','g');r5=new RegExp('('+w+')(['+re+'])','g');this._walk(this.editor.getBody(),function(n){if(n.nodeType==3){nl.push(n);}});each(nl,function(n){var v;if(n.nodeType==3){v=n.nodeValue;if(r1.test(v)||r2.test(v)||r3.test(v)||r4.test(v)){v=dom.encode(v);v=v.replace(r5,'<span class="mceItemHiddenSpellWord">$1</span>$2');v=v.replace(r3,'<span class="mceItemHiddenSpellWord">$1</span>$2');dom.replace(dom.create('span',{'class':'mceItemHidden'},v),n);}}});se.moveToBookmark(b);},_showMenu:function(ed,e){var t=this,ed=t.editor,m=t._menu,p1,dom=ed.dom,vp=dom.getViewPort(ed.getWin());if(!m){p1=DOM.getPos(ed.getContentAreaContainer());m=ed.controlManager.createDropMenu('spellcheckermenu',{offset_x:p1.x,offset_y:p1.y,'class':'noIcons'});t._menu=m;}if(dom.hasClass(e.target,'mceItemHiddenSpellWord')){m.removeAll();m.add({title:'spellchecker.wait','class':'mceMenuItemTitle'}).setDisabled(1);t._sendRPC('getSuggestions',[t.selectedLang,dom.decode(e.target.innerHTML)],function(r){m.removeAll();if(r.length>0){m.add({title:'spellchecker.sug','class':'mceMenuItemTitle'}).setDisabled(1);each(r,function(v){m.add({title:v,onclick:function(){dom.replace(ed.getDoc().createTextNode(v),e.target);t._checkDone();}});});m.addSeparator();}else m.add({title:'spellchecker.no_sug','class':'mceMenuItemTitle'}).setDisabled(1);m.add({title:'spellchecker.ignore_word',onclick:function(){dom.remove(e.target,1);t._checkDone();}});m.add({title:'spellchecker.ignore_words',onclick:function(){t._removeWords(dom.decode(e.target.innerHTML));t._checkDone();}});m.update();});ed.selection.select(e.target);p1=dom.getPos(e.target);m.showMenu(p1.x,p1.y+e.target.offsetHeight-vp.y);return tinymce.dom.Event.cancel(e);}else m.hideMenu();},_checkDone:function(){var t=this,ed=t.editor,dom=ed.dom,o;each(dom.select('span'),function(n){if(n&&dom.hasClass(n,'mceItemHiddenSpellWord')){o=true;return false;}});if(!o)t._done();},_done:function(){var t=this,la=t.active;t.active=0;t._removeWords();if(t._menu)t._menu.hideMenu();if(la)t.editor.nodeChanged();},_sendRPC:function(m,p,cb){var t=this,url=t.editor.getParam("spellchecker_rpc_url",this.url+"/rpc.php");if(url=='{backend}'){alert('Please specify: spellchecker_rpc_url');return;}JSONRequest.sendRPC({url:url,method:m,params:p,success:cb,error:function(e,x){t.editor.setProgressState(0);t.editor.windowManager.alert(e.errstr||('Error response: '+x.responseText));}});}});tinymce.PluginManager.add('spellchecker',tinymce.plugins.SpellcheckerPlugin);})(); 1 /** 2 * $Id: editor_plugin_src.js 425 2007-11-21 15:17:39Z spocke $ 3 * 4 * @author Moxiecode 5 * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. 6 */ 7 8 (function() { 9 var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM; 10 11 tinymce.create('tinymce.plugins.SpellcheckerPlugin', { 12 getInfo : function() { 13 return { 14 longname : 'Spellchecker', 15 author : 'Moxiecode Systems AB', 16 authorurl : 'http://tinymce.moxiecode.com', 17 infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker', 18 version : tinymce.majorVersion + "." + tinymce.minorVersion 19 }; 20 }, 21 22 init : function(ed, url) { 23 var t = this, cm; 24 25 t.url = url; 26 t.editor = ed; 27 28 // Register commands 29 ed.addCommand('mceSpellCheck', function() { 30 if (!t.active) { 31 ed.setProgressState(1); 32 t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) { 33 if (r.length > 0) { 34 t.active = 1; 35 t._markWords(r); 36 ed.setProgressState(0); 37 ed.nodeChanged(); 38 } else { 39 ed.setProgressState(0); 40 ed.windowManager.alert('spellchecker.no_mpell'); 41 } 42 }); 43 } else 44 t._done(); 45 }); 46 47 ed.onInit.add(function() { 48 ed.dom.loadCSS(url + '/css/content.css'); 49 }); 50 51 ed.onClick.add(t._showMenu, t); 52 ed.onContextMenu.add(t._showMenu, t); 53 ed.onBeforeGetContent.add(function() { 54 if (t.active) 55 t._removeWords(); 56 }); 57 58 ed.onNodeChange.add(function(ed, cm) { 59 cm.setActive('spellchecker', t.active); 60 }); 61 62 ed.onSetContent.add(function() { 63 t._done(); 64 }); 65 66 ed.onBeforeGetContent.add(function() { 67 t._done(); 68 }); 69 70 ed.onBeforeExecCommand.add(function(ed, cmd) { 71 if (cmd == 'mceFullScreen') 72 t._done(); 73 }); 74 75 // Find selected language 76 t.languages = {}; 77 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) { 78 if (k.indexOf('+') === 0) { 79 k = k.substring(1); 80 t.selectedLang = v; 81 } 82 83 t.languages[k] = v; 84 }); 85 }, 86 87 createControl : function(n, cm) { 88 var t = this, c, ed = t.editor; 89 90 if (n == 'spellchecker') { 91 c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); 92 93 c.onRenderMenu.add(function(c, m) { 94 m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1); 95 each(t.languages, function(v, k) { 96 var o = {icon : 1}, mi; 97 98 o.onclick = function() { 99 mi.setSelected(1); 100 t.selectedItem.setSelected(0); 101 t.selectedItem = mi; 102 t.selectedLang = v; 103 }; 104 105 o.title = k; 106 mi = m.add(o); 107 mi.setSelected(v == t.selectedLang); 108 109 if (v == t.selectedLang) 110 t.selectedItem = mi; 111 }) 112 }); 113 114 return c; 115 } 116 }, 117 118 // Internal functions 119 120 _walk : function(n, f) { 121 var d = this.editor.getDoc(), w; 122 123 if (d.createTreeWalker) { 124 w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); 125 126 while ((n = w.nextNode()) != null) 127 f.call(this, n); 128 } else 129 tinymce.walk(n, f, 'childNodes'); 130 }, 131 132 _getSeparators : function() { 133 var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}���������������\u201d\u201c'); 134 135 // Build word separator regexp 136 for (i=0; i<str.length; i++) 137 re += '\\' + str.charAt(i); 138 139 return re; 140 }, 141 142 _getWords : function() { 143 var ed = this.editor, wl = [], tx = '', lo = {}; 144 145 // Get area text 146 this._walk(ed.getBody(), function(n) { 147 if (n.nodeType == 3) 148 tx += n.nodeValue + ' '; 149 }); 150 151 // Split words by separator 152 tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' '); 153 tx = tinymce.trim(tx.replace(/(\s+)/g, ' ')); 154 155 // Build word array and remove duplicates 156 each(tx.split(' '), function(v) { 157 if (!lo[v]) { 158 wl.push(v); 159 lo[v] = 1; 160 } 161 }); 162 163 return wl; 164 }, 165 166 _removeWords : function(w) { 167 var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark(); 168 169 each(dom.select('span').reverse(), function(n) { 170 if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) { 171 if (!w || dom.decode(n.innerHTML) == w) 172 dom.remove(n, 1); 173 } 174 }); 175 176 se.moveToBookmark(b); 177 }, 178 179 _markWords : function(wl) { 180 var r1, r2, r3, r4, r5, w = '', ed = this.editor, re = this._getSeparators(), dom = ed.dom, nl = []; 181 var se = ed.selection, b = se.getBookmark(); 182 183 each(wl, function(v) { 184 w += (w ? '|' : '') + v; 185 }); 186 187 r1 = new RegExp('([' + re + '])(' + w + ')([' + re + '])', 'g'); 188 r2 = new RegExp('^(' + w + ')', 'g'); 189 r3 = new RegExp('(' + w + ')([' + re + ']?)$', 'g'); 190 r4 = new RegExp('^(' + w + ')([' + re + ']?)$', 'g'); 191 r5 = new RegExp('(' + w + ')([' + re + '])', 'g'); 192 193 // Collect all text nodes 194 this._walk(this.editor.getBody(), function(n) { 195 if (n.nodeType == 3) { 196 nl.push(n); 197 } 198 }); 199 200 // Wrap incorrect words in spans 201 each(nl, function(n) { 202 var v; 203 204 if (n.nodeType == 3) { 205 v = n.nodeValue; 206 207 if (r1.test(v) || r2.test(v) || r3.test(v) || r4.test(v)) { 208 v = dom.encode(v); 209 v = v.replace(r5, '<span class="mceItemHiddenSpellWord">$1</span>$2'); 210 v = v.replace(r3, '<span class="mceItemHiddenSpellWord">$1</span>$2'); 211 212 dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n); 213 } 214 } 215 }); 216 217 se.moveToBookmark(b); 218 }, 219 220 _showMenu : function(ed, e) { 221 var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()); 222 223 if (!m) { 224 p1 = DOM.getPos(ed.getContentAreaContainer()); 225 //p2 = DOM.getPos(ed.getContainer()); 226 227 m = ed.controlManager.createDropMenu('spellcheckermenu', { 228 offset_x : p1.x, 229 offset_y : p1.y, 230 'class' : 'noIcons' 231 }); 232 233 t._menu = m; 234 } 235 236 if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) { 237 m.removeAll(); 238 m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1); 239 240 t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) { 241 m.removeAll(); 242 243 if (r.length > 0) { 244 m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); 245 each(r, function(v) { 246 m.add({title : v, onclick : function() { 247 dom.replace(ed.getDoc().createTextNode(v), e.target); 248 t._checkDone(); 249 }}); 250 }); 251 252 m.addSeparator(); 253 } else 254 m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); 255 256 m.add({ 257 title : 'spellchecker.ignore_word', 258 onclick : function() { 259 dom.remove(e.target, 1); 260 t._checkDone(); 261 } 262 }); 263 264 m.add({ 265 title : 'spellchecker.ignore_words', 266 onclick : function() { 267 t._removeWords(dom.decode(e.target.innerHTML)); 268 t._checkDone(); 269 } 270 }); 271 272 m.update(); 273 }); 274 275 ed.selection.select(e.target); 276 p1 = dom.getPos(e.target); 277 m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y); 278 279 return tinymce.dom.Event.cancel(e); 280 } else 281 m.hideMenu(); 282 }, 283 284 _checkDone : function() { 285 var t = this, ed = t.editor, dom = ed.dom, o; 286 287 each(dom.select('span'), function(n) { 288 if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) { 289 o = true; 290 return false; 291 } 292 }); 293 294 if (!o) 295 t._done(); 296 }, 297 298 _done : function() { 299 var t = this, la = t.active; 300 301 if (t.active) { 302 t.active = 0; 303 t._removeWords(); 304 305 if (t._menu) 306 t._menu.hideMenu(); 307 308 if (la) 309 t.editor.nodeChanged(); 310 } 311 }, 312 313 _sendRPC : function(m, p, cb) { 314 var t = this, url = t.editor.getParam("spellchecker_rpc_url", this.url+"/rpc.php"); 315 316 if (url == '{backend}') { 317 t.editor.setProgressState(0); 318 alert('Please specify: spellchecker_rpc_url'); 319 return; 320 } 321 322 JSONRequest.sendRPC({ 323 url : url, 324 method : m, 325 params : p, 326 success : cb, 327 error : function(e, x) { 328 t.editor.setProgressState(0); 329 t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText)); 330 } 331 }); 332 } 333 }); 334 335 // Register plugin 336 tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin); 337 })(); trunk/wp-includes/js/tinymce/themes/advanced/js/link.js
r7147 r7173 51 51 href : f.href.value, 52 52 title : f.linktitle.value, 53 target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : '',54 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : ''53 target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null, 54 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null 55 55 }); 56 56 trunk/wp-includes/js/tinymce/themes/advanced/skins/default/content.css
r7025 r7173 1 body, td, pre {background:#FFF; color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px; } 1 body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} 2 body {background:#FFF;} 2 3 body.mceForceColors {background:#FFF; color:#000;} 3 .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mce VisualAid {border: 1px dashed #BBB;}4 .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} 4 5 a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;} 5 6 img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;} trunk/wp-includes/js/tinymce/themes/advanced/skins/default/ui.css
r7025 r7173 77 77 .defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A} 78 78 .defaultSkin .mceColorPreview {position:absolute; top:15px; left:2px; width:16px; height:4px; overflow:hidden} 79 .defaultSkin .mce_forecolor, .defaultSkin .mce_backcolor {position:relative} 79 80 80 81 /* Menu */ trunk/wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css
r7025 r7173 1 body, td, pre {background:#FFF; color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px; } 1 body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} 2 body {background:#FFF;} 2 3 body.mceForceColors {background:#FFF; color:#000;} 3 .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mce VisualAid {border: 1px dashed #BBB;}4 .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} 4 5 a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;} 5 6 img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;} trunk/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css
r7025 r7173 25 25 .o2k7Skin .mceStatusbar a:hover {text-decoration:underline} 26 26 .o2k7Skin table.mceToolbar {margin-left:3px} 27 .o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; } 27 .o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;} 28 .o2k7Skin .mceToolbar td.mceFirst span {margin:0} 28 29 .o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} 29 .o2k7Skin .mceToolbar .mceToolbarEndListBox span {display:none}30 .o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none} 30 31 .o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px} 31 32 .o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} … … 46 47 47 48 /* ListBox */ 49 .o2k7Skin .mceListBox {margin-left:3px} 48 50 .o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block} 49 51 .o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} 50 .o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0 ; margin-right:2px}52 .o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0} 51 53 .o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF} 52 54 .o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px} … … 77 79 .o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A} 78 80 .o2k7Skin .mceColorPreview {position:absolute; top:15px; left:2px; width:16px; height:4px; overflow:hidden} 81 .o2k7Skin .mce_forecolor, .o2k7Skin .mce_backcolor {position:relative} 79 82 80 83 /* Menu */ trunk/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css
r7147 r7173 36 36 /* Button */ 37 37 .wp_themeSkin .mceButton { 38 display:block;39 width: 20px;40 height: 20px;41 cursor: default;42 padding: 1px 2px;43 margin: 1px;44 background: #e9e8e8 url(img/butt2.png) 2px 1px no-repeat scroll;45 -moz-border-radius: 3px;46 -webkit-border-radius: 3px;47 -khtml-border-radius: 3px;48 border-radius: 3px;49 border: 1px solid #abc0fb;38 display:block; 39 width: 20px; 40 height: 20px; 41 cursor: default; 42 padding: 1px 2px; 43 margin: 1px; 44 background: #e9e8e8 url(img/butt2.png) 2px 1px no-repeat scroll; 45 -moz-border-radius: 3px; 46 -webkit-border-radius: 3px; 47 -khtml-border-radius: 3px; 48 border-radius: 3px; 49 border: 1px solid #abc0fb; 50 50 } 51 51 .wp_themeSkin a.mceButton span, .wp_themeSkin a.mceButton img {} 52 52 .wp_themeSkin .mceOldBoxModel a.mceButton span, .wp_themeSkin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px} 53 53 .wp_themeSkin a.mceButtonEnabled:hover { 54 background-color:#d6d8da;55 background-position:0 -20px;56 border: 1px solid #7789ba !important;54 background-color:#d6d8da; 55 background-position:0 -20px; 56 border: 1px solid #7789ba !important; 57 57 } 58 58 .wp_themeSkin a.mceButtonActive, .wp_themeSkin a.mceButtonSelected { 59 background-color: #d6d8da;60 background-position:0 -20px;61 border: 1px solid #7789ba !important;59 background-color: #d6d8da; 60 background-position:0 -20px; 61 border: 1px solid #7789ba !important; 62 62 } 63 63 .wp_themeSkin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30);} … … 66 66 /* Separator */ 67 67 .wp_themeSkin .mceSeparator { 68 height: 24px;69 width: 1px;70 display: block;71 background: transparent;72 overflow: hidden;73 margin: 0 2px;68 height: 24px; 69 width: 1px; 70 display: block; 71 background: transparent; 72 overflow: hidden; 73 margin: 0 2px; 74 74 } 75 75 … … 77 77 .wp_themeSkin .mceListBox, .wp_themeSkin .mceListBox a {display:block} 78 78 .wp_themeSkin .mceListBox .mceText { 79 padding: 1px 2px 1px 5px;80 border: 1px solid #abc0fb;81 text-align:left;82 width:70px;83 border-right:0;84 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll;85 font-family: Tahoma,Verdana,Arial,Helvetica;86 font-size: 11px;87 height: 20px;88 line-height: 20px;89 overflow: hidden;79 padding: 1px 2px 1px 5px; 80 border: 1px solid #abc0fb; 81 text-align:left; 82 width:70px; 83 border-right:0; 84 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll; 85 font-family: Tahoma,Verdana,Arial,Helvetica; 86 font-size: 11px; 87 height: 20px; 88 line-height: 20px; 89 overflow: hidden; 90 90 } 91 91 .wp_themeSkin .mceListBox { 92 margin: 1px;93 direction: ltr;92 margin: 1px; 93 direction: ltr; 94 94 } 95 95 .wp_themeSkin .mceListBox .mceOpen { 96 width:14px;97 height:20px;98 border-collapse:separate;99 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll;100 padding: 1px;101 border: 1px solid #abc0fb;96 width:14px; 97 height:20px; 98 border-collapse:separate; 99 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll; 100 padding: 1px; 101 border: 1px solid #abc0fb; 102 102 } 103 103 .wp_themeSkin .mceListBox .mceOpen span { 104 display: block;105 width:14px;106 height:20px;107 background:url(img/down_arrow.gif) 2px 1px no-repeat;104 display: block; 105 width:14px; 106 height:20px; 107 background:url(img/down_arrow.gif) 2px 1px no-repeat; 108 108 } 109 109 .wp_themeSkin table.mceListBoxEnabled:hover .mceText, 110 110 .wp_themeSkin .mceListBoxHover .mceText, 111 111 .wp_themeSkin .mceListBoxSelected .mceText { 112 background:#eae8ea;113 border-collapse:separate;114 border: 1px solid #7789ba !important;115 border-right: 0 none !important;112 background:#eae8ea; 113 border-collapse:separate; 114 border: 1px solid #7789ba !important; 115 border-right: 0 none !important; 116 116 } 117 117 .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, 118 118 .wp_themeSkin .mceListBoxHover .mceOpen, 119 119 .wp_themeSkin .mceListBoxSelected .mceOpen { 120 background-color:#d6d8da;121 border: 1px solid #7789ba !important;120 background-color:#d6d8da; 121 border: 1px solid #7789ba !important; 122 122 } 123 123 .wp_themeSkin .mceListBoxDisabled .mceText {color:gray} … … 129 129 .wp_themeSkin .mceSplitButton a, .wp_themeSkin .mceSplitButton span {display:block; height:20px} 130 130 .wp_themeSkin .mceSplitButton { 131 display:block;132 margin: 1px;133 direction: ltr;131 display:block; 132 margin: 1px; 133 direction: ltr; 134 134 } 135 135 .wp_themeSkin table.mceSplitButton td { 136 padding: 2px;136 padding: 2px; 137 137 } 138 138 .wp_themeSkin .mceSplitButton a.mceAction { 139 height:20px;140 width:20px;141 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll;142 padding: 1px 2px;143 border: 1px solid #abc0fb;139 height:20px; 140 width:20px; 141 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll; 142 padding: 1px 2px; 143 border: 1px solid #abc0fb; 144 144 } 145 145 .wp_themeSkin .mceSplitButton span.mceAction { 146 background: url(../../img/icons.gif) 20px 20px;147 width:20px;146 background: url(../../img/icons.gif) 20px 20px; 147 width:20px; 148 148 } 149 149 .wp_themeSkin .mceSplitButton a.mceOpen { 150 width:10px;151 height:20px;152 border-collapse:separate;153 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll;154 padding: 1px;155 border: 1px solid #abc0fb;156 border-left: 0 none;150 width:10px; 151 height:20px; 152 border-collapse:separate; 153 background: #e9e8e8 url(img/butt2.png) 1px 1px repeat-x scroll; 154 padding: 1px; 155 border: 1px solid #abc0fb; 156 border-left: 0 none; 157 157 } 158 158 .wp_themeSkin .mceSplitButton span.mceOpen { 159 width:10px;160 background:url(img/down_arrow.gif) 0px 1px;159 width:10px; 160 background:url(img/down_arrow.gif) 0px 1px; 161 161 } 162 162 .wp_themeSkin .mceSplitButton a.mceOpen:hover, 163 163 .wp_themeSkin .mceSplitButtonSelected a.mceOpen { 164 background:#d6d8da;165 border-collapse:separate;166 border: 1px solid #7789ba !important;167 border-left: 0 none !important;164 background:#d6d8da; 165 border-collapse:separate; 166 border: 1px solid #7789ba !important; 167 border-left: 0 none !important; 168 168 } 169 169 .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction { 170 background:#d6d8da;171 border: 1px solid #7789ba !important;170 background:#d6d8da; 171 border: 1px solid #7789ba !important; 172 172 } 173 173 .wp_themeSkin .mceSplitButton a.mceAction:hover { 174 background:#d6d8da;175 border-collapse:separate;176 border: 1px solid #7789ba !important;174 background:#d6d8da; 175 border-collapse:separate; 176 border: 1px solid #7789ba !important; 177 177 } 178 178 .wp_themeSkin table.mceSplitButtonEnabled:hover span.mceOpen, … … 181 181 } 182 182 .wp_themeSkin .mceSplitButtonDisabled .mceAction { 183 opacity:0.3; filter:alpha(opacity=30)183 opacity:0.3; filter:alpha(opacity=30) 184 184 } 185 185 .wp_themeSkin .mceSplitButtonActive { 186 background: #d6d8da;186 background: #d6d8da; 187 187 } 188 188 .wp_themeSkin .mceListBox a.mceText, .wp_themeSkin .mceSplitButton a.mceAction { 189 -moz-border-radius-bottomleft: 3px;190 -webkit-border-bottom-left-radius: 3px;191 -khtml-border-bottom-left-radius: 3px;192 border-bottom-left-radius: 3px;193 -moz-border-radius-topleft: 3px;194 -webkit-border-top-left-radius: 3px;195 -khtml-border-top-left-radius: 3px;196 border-top-left-radius: 3px;189 -moz-border-radius-bottomleft: 3px; 190 -webkit-border-bottom-left-radius: 3px; 191 -khtml-border-bottom-left-radius: 3px; 192 border-bottom-left-radius: 3px; 193 -moz-border-radius-topleft: 3px; 194 -webkit-border-top-left-radius: 3px; 195 -khtml-border-top-left-radius: 3px; 196 border-top-left-radius: 3px; 197 197 } 198 198 .wp_themeSkin .mceSplitButton a.mceOpen, .wp_themeSkin .mceListBox a.mceOpen { 199 -moz-border-radius-bottomright: 3px;200 -webkit-border-bottom-right-radius: 3px;201 -khtml-border-bottom-right-radius: 3px;202 border-bottom-right-radius: 3px;203 -moz-border-radius-topright: 3px;204 -webkit-border-top-right-radius: 3px;205 -khtml-border-top-right-radius: 3px;206 border-top-right-radius: 3px;199 -moz-border-radius-bottomright: 3px; 200 -webkit-border-bottom-right-radius: 3px; 201 -khtml-border-bottom-right-radius: 3px; 202 border-bottom-right-radius:
