From a59cf45c4d4f04149fdfd8eabf782ebc3ac0aa05 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Fri, 6 Jun 2014 04:20:14 +0000 Subject: [PATCH] TinyMCE: remove   from empty paragraphs inside the visual editor, props avryl, fixes #28282 Built from https://develop.svn.wordpress.org/trunk@28685 git-svn-id: http://core.svn.wordpress.org/trunk@28503 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../js/tinymce/plugins/wordpress/plugin.js | 9 ++++++++- .../tinymce/plugins/wordpress/plugin.min.js | 2 +- wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 125501 -> 125522 bytes 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/wp-includes/js/tinymce/plugins/wordpress/plugin.js b/wp-includes/js/tinymce/plugins/wordpress/plugin.js index 62c786783b..f7f2b3cd40 100644 --- a/wp-includes/js/tinymce/plugins/wordpress/plugin.js +++ b/wp-includes/js/tinymce/plugins/wordpress/plugin.js @@ -355,13 +355,20 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } // Keep empty paragraphs :( - e.content = e.content.replace( /

(
|\u00a0|\uFEFF)?<\/p>/g, '

 

' ); + e.content = e.content.replace( /

(?:
|\u00a0|\uFEFF| )*<\/p>/g, '

 

' ); if ( editor.getParam( 'wpautop', true ) && typeof window.switchEditors !== 'undefined' ) { e.content = window.switchEditors.pre_wpautop( e.content ); } }); + // Remove spaces from empty paragraphs. + editor.on( 'BeforeSetContent', function( event ) { + if ( event.content ) { + event.content = event.content.replace( /

(?: |\u00a0|\uFEFF| )+<\/p>/gi, '

' ); + } + }); + editor.on( 'preInit', function() { // Don't replace with and with and don't remove them when empty editor.schema.addValidElements( '@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b' ); diff --git a/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js b/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js index 933861b6db..7ea7079617 100644 --- a/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js @@ -1 +1 @@ -tinymce.ui.FloatPanel.zIndex=100100,tinymce.PluginManager.add("wordpress",function(a){function b(b){var c,d,e,f=0;d="hide"===b,a.theme.panel&&(e=a.theme.panel.find(".toolbar:not(.menubar)")),!e||e.length<2||"hide"===b&&!e[1].visible()||(!b&&e[1].visible()&&(b="hide"),tinymce.each(e,function(a,c){c>0&&("hide"===b?(a.hide(),f+=30):(a.show(),f-=30))}),f&&!d&&(tinymce.Env.iOS||(c=a.getContentAreaContainer().firstChild,j.setStyle(c,"height",c.clientHeight+f)),"hide"===b?(setUserSetting("hidetb","0"),g&&g.active(!1)):(setUserSetting("hidetb","1"),g&&g.active(!0))))}function c(a){return a.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(a,b){return''+b+''})}function d(a){return a.replace(/]+>/g,function(a){if(-1!==a.indexOf('class="wp-oembed')){var b=a.match(/alt="([^\"]+)"/);b[1]&&(a="[embed]"+b[1]+"[/embed]")}return a})}function e(b,c){var d,e,f,g,h;f=a.dom.getViewPort(a.getWin()),d=j.getPos(a.getContentAreaContainer()),e=a.dom.getPos(b),g=Math.max(e.x-f.x,0)+d.x,h=Math.max(e.y-f.y,0)+d.y,j.setStyles(c,{top:h+5+"px",left:g+5+"px",display:"block"})}function f(){j.hide(j.select("#wp_editbtns, #wp_gallerybtns"))}var g,h,i,j=tinymce.DOM,k=0;return a.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){g=this,g.active("1"===getUserSetting("hidetb")?!0:!1)}}),a.on("PostRender",function(){a.getParam("wordpress_adv_hidden",!0)&&"0"===getUserSetting("hidetb","0")&&b("hide")}),a.addCommand("WP_Adv",function(){b()}),a.on("focus",function(){window.wpActiveEditor=a.id}),a.on("BeforeSetContent",function(a){a.content&&(-1!==a.content.indexOf("/g,function(a,b){return''})),-1!==a.content.indexOf("")&&(a.content=a.content.replace(//g,'')))}),a.on("PostProcess",function(a){a.get&&(a.content=a.content.replace(/]+>/g,function(a){var b,c="";return-1!==a.indexOf("wp-more-tag")&&(-1!==a.indexOf("mce-wp-more")?((b=a.match(/data-wp-more="([^"]+)"/))&&(c=b[1]),a=""):-1!==a.indexOf("mce-wp-nextpage")&&(a="")),a}))}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.hasClass(d,"wp-more-tag")&&(c.hasClass(d,"mce-wp-more")?b.name="more":c.hasClass(d,"mce-wp-nextpage")&&(b.name="nextpage"))}),a.addCommand("WP_More",function(b){var c,d,e,f="wp-more-tag",g=a.dom,h=a.selection.getNode();return b=b||"more",f+=" mce-wp-"+b,e="more"===b?"More...":"Next Page",d='',"BODY"===h.nodeName||"P"===h.nodeName&&"BODY"===h.parentNode.nodeName?void a.insertContent(d):(c=g.getParent(h,function(a){return a.parentNode&&"BODY"===a.parentNode.nodeName?!0:!1},a.getBody()),void(c&&("P"===c.nodeName?c.appendChild(g.create("p",null,d).firstChild):g.insertAfter(g.create("p",null,d),c),a.nodeChanged())))}),a.addCommand("WP_Code",function(){a.formatter.toggle("code")}),a.addCommand("WP_Page",function(){a.execCommand("WP_More","nextpage")}),a.addCommand("WP_Help",function(){a.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",title:"Keyboard Shortcuts",width:450,height:420,inline:1,classes:"wp-help"})}),a.addCommand("WP_Medialib",function(){"undefined"!=typeof wp&&wp.media&&wp.media.editor&&wp.media.editor.open(a.id)}),a.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){a.execCommand("WP_More","more")}}),a.addButton("wp_page",{tooltip:"Page break",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.addButton("wp_help",{tooltip:"Keyboard Shortcuts",cmd:"WP_Help"}),a.addButton("wp_code",{tooltip:"Code",cmd:"WP_Code",stateSelector:"code"}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&a.addMenuItem("add_media",{text:"Add Media",icon:"wp-media-library",context:"insert",cmd:"WP_Medialib"}),a.addMenuItem("wp_more",{text:"Insert Read More tag",icon:"wp_more",context:"insert",onclick:function(){a.execCommand("WP_More","more")}}),a.addMenuItem("wp_page",{text:"Page break",icon:"wp_page",context:"insert",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.on("BeforeExecCommand",function(b){!tinymce.Env.webkit||"InsertUnorderedList"!==b.command&&"InsertOrderedList"!==b.command||(i||(i=a.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}")),a.getDoc().head.appendChild(i))}),a.on("ExecCommand",function(b){tinymce.Env.webkit&&i&&("InsertUnorderedList"===b.command||"InsertOrderedList"===b.command)&&a.dom.remove(i)}),a.on("init",function(){var b=tinymce.Env,c=["mceContentBody"],d=a.getDoc(),e=a.dom;tinymce.Env.iOS&&e.addClass(d.documentElement,"ios"),"rtl"===a.getParam("directionality")&&(c.push("rtl"),e.setAttrib(d.documentElement,"dir","rtl")),b.ie&&(9===parseInt(b.ie,10)?c.push("ie9"):8===parseInt(b.ie,10)?c.push("ie8"):b.ie<8&&c.push("ie7")),c.push("wp-editor"),tinymce.each(c,function(a){a&&e.addClass(d.body,a)}),a.on("BeforeSetContent",function(a){a.content&&(a.content=a.content.replace(/

\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>"),a.content=a.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,""))}),"undefined"!=typeof window.jQuery&&window.jQuery(document).triggerHandler("tinymce-editor-init",[a]),window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&e.bind(d,"dragstart dragend dragover drop",function(a){"undefined"!=typeof window.jQuery&&window.jQuery(document).trigger(new window.jQuery.Event(a))})}),"undefined"!=typeof window.jQuery&&a.on("keyup",function(b){var c=b.keyCode||b.charCode;c!==k&&((13===c||8===k||46===k)&&window.jQuery(document).triggerHandler("wpcountwords",[a.getContent({format:"raw"})]),k=c)}),a.on("SaveContent",function(b){return!a.inline&&a.isHidden()?void(b.content=b.element.value):(b.content=b.content.replace(/

(
|\u00a0|\uFEFF)?<\/p>/g,"

 

"),void(a.getParam("wpautop",!0)&&"undefined"!=typeof window.switchEditors&&(b.content=window.switchEditors.pre_wpautop(b.content))))}),a.on("preInit",function(){a.schema.addValidElements("@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b"),tinymce.Env.iOS&&(a.settings.height=300)}),h="alt+shift",a.addShortcut(h+"+c","","JustifyCenter"),a.addShortcut(h+"+r","","JustifyRight"),a.addShortcut(h+"+l","","JustifyLeft"),a.addShortcut(h+"+j","","JustifyFull"),a.addShortcut(h+"+q","","mceBlockQuote"),a.addShortcut(h+"+u","","InsertUnorderedList"),a.addShortcut(h+"+o","","InsertOrderedList"),a.addShortcut(h+"+n","","mceSpellCheck"),a.addShortcut(h+"+s","","unlink"),a.addShortcut(h+"+m","","WP_Medialib"),a.addShortcut(h+"+z","","WP_Adv"),a.addShortcut(h+"+t","","WP_More"),a.addShortcut(h+"+d","","Strikethrough"),a.addShortcut(h+"+h","","WP_Help"),a.addShortcut(h+"+p","","WP_Page"),a.addShortcut(h+"+x","","WP_Code"),a.addShortcut("ctrl+s","",function(){"undefined"!=typeof wp&&wp.autosave&&wp.autosave.server.triggerSave()}),a.on("init",function(){a.dom.bind(a.getWin(),"scroll",function(){f()}),a.dom.bind(a.getBody(),"dragstart",function(){f()})}),a.on("BeforeExecCommand",function(){f()}),a.on("SaveContent",function(){f()}),a.on("MouseDown",function(a){"IMG"!==a.target.nodeName&&f()}),a.on("keydown",function(a){(a.which===tinymce.util.VK.DELETE||a.which===tinymce.util.VK.BACKSPACE)&&f()}),{_showButtons:e,_hideButtons:f,_setEmbed:c,_getEmbed:d}}); \ No newline at end of file +tinymce.ui.FloatPanel.zIndex=100100,tinymce.PluginManager.add("wordpress",function(a){function b(b){var c,d,e,f=0;d="hide"===b,a.theme.panel&&(e=a.theme.panel.find(".toolbar:not(.menubar)")),!e||e.length<2||"hide"===b&&!e[1].visible()||(!b&&e[1].visible()&&(b="hide"),tinymce.each(e,function(a,c){c>0&&("hide"===b?(a.hide(),f+=30):(a.show(),f-=30))}),f&&!d&&(tinymce.Env.iOS||(c=a.getContentAreaContainer().firstChild,j.setStyle(c,"height",c.clientHeight+f)),"hide"===b?(setUserSetting("hidetb","0"),g&&g.active(!1)):(setUserSetting("hidetb","1"),g&&g.active(!0))))}function c(a){return a.replace(/\[embed\]([\s\S]+?)\[\/embed\][\s\u00a0]*/g,function(a,b){return''+b+''})}function d(a){return a.replace(/]+>/g,function(a){if(-1!==a.indexOf('class="wp-oembed')){var b=a.match(/alt="([^\"]+)"/);b[1]&&(a="[embed]"+b[1]+"[/embed]")}return a})}function e(b,c){var d,e,f,g,h;f=a.dom.getViewPort(a.getWin()),d=j.getPos(a.getContentAreaContainer()),e=a.dom.getPos(b),g=Math.max(e.x-f.x,0)+d.x,h=Math.max(e.y-f.y,0)+d.y,j.setStyles(c,{top:h+5+"px",left:g+5+"px",display:"block"})}function f(){j.hide(j.select("#wp_editbtns, #wp_gallerybtns"))}var g,h,i,j=tinymce.DOM,k=0;return a.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){g=this,g.active("1"===getUserSetting("hidetb")?!0:!1)}}),a.on("PostRender",function(){a.getParam("wordpress_adv_hidden",!0)&&"0"===getUserSetting("hidetb","0")&&b("hide")}),a.addCommand("WP_Adv",function(){b()}),a.on("focus",function(){window.wpActiveEditor=a.id}),a.on("BeforeSetContent",function(a){a.content&&(-1!==a.content.indexOf("/g,function(a,b){return''})),-1!==a.content.indexOf("")&&(a.content=a.content.replace(//g,'')))}),a.on("PostProcess",function(a){a.get&&(a.content=a.content.replace(/]+>/g,function(a){var b,c="";return-1!==a.indexOf("wp-more-tag")&&(-1!==a.indexOf("mce-wp-more")?((b=a.match(/data-wp-more="([^"]+)"/))&&(c=b[1]),a=""):-1!==a.indexOf("mce-wp-nextpage")&&(a="")),a}))}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.hasClass(d,"wp-more-tag")&&(c.hasClass(d,"mce-wp-more")?b.name="more":c.hasClass(d,"mce-wp-nextpage")&&(b.name="nextpage"))}),a.addCommand("WP_More",function(b){var c,d,e,f="wp-more-tag",g=a.dom,h=a.selection.getNode();return b=b||"more",f+=" mce-wp-"+b,e="more"===b?"More...":"Next Page",d='',"BODY"===h.nodeName||"P"===h.nodeName&&"BODY"===h.parentNode.nodeName?void a.insertContent(d):(c=g.getParent(h,function(a){return a.parentNode&&"BODY"===a.parentNode.nodeName?!0:!1},a.getBody()),void(c&&("P"===c.nodeName?c.appendChild(g.create("p",null,d).firstChild):g.insertAfter(g.create("p",null,d),c),a.nodeChanged())))}),a.addCommand("WP_Code",function(){a.formatter.toggle("code")}),a.addCommand("WP_Page",function(){a.execCommand("WP_More","nextpage")}),a.addCommand("WP_Help",function(){a.windowManager.open({url:tinymce.baseURL+"/wp-mce-help.php",title:"Keyboard Shortcuts",width:450,height:420,inline:1,classes:"wp-help"})}),a.addCommand("WP_Medialib",function(){"undefined"!=typeof wp&&wp.media&&wp.media.editor&&wp.media.editor.open(a.id)}),a.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){a.execCommand("WP_More","more")}}),a.addButton("wp_page",{tooltip:"Page break",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.addButton("wp_help",{tooltip:"Keyboard Shortcuts",cmd:"WP_Help"}),a.addButton("wp_code",{tooltip:"Code",cmd:"WP_Code",stateSelector:"code"}),"undefined"!=typeof wp&&wp.media&&wp.media.editor&&a.addMenuItem("add_media",{text:"Add Media",icon:"wp-media-library",context:"insert",cmd:"WP_Medialib"}),a.addMenuItem("wp_more",{text:"Insert Read More tag",icon:"wp_more",context:"insert",onclick:function(){a.execCommand("WP_More","more")}}),a.addMenuItem("wp_page",{text:"Page break",icon:"wp_page",context:"insert",onclick:function(){a.execCommand("WP_More","nextpage")}}),a.on("BeforeExecCommand",function(b){!tinymce.Env.webkit||"InsertUnorderedList"!==b.command&&"InsertOrderedList"!==b.command||(i||(i=a.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}")),a.getDoc().head.appendChild(i))}),a.on("ExecCommand",function(b){tinymce.Env.webkit&&i&&("InsertUnorderedList"===b.command||"InsertOrderedList"===b.command)&&a.dom.remove(i)}),a.on("init",function(){var b=tinymce.Env,c=["mceContentBody"],d=a.getDoc(),e=a.dom;tinymce.Env.iOS&&e.addClass(d.documentElement,"ios"),"rtl"===a.getParam("directionality")&&(c.push("rtl"),e.setAttrib(d.documentElement,"dir","rtl")),b.ie&&(9===parseInt(b.ie,10)?c.push("ie9"):8===parseInt(b.ie,10)?c.push("ie8"):b.ie<8&&c.push("ie7")),c.push("wp-editor"),tinymce.each(c,function(a){a&&e.addClass(d.body,a)}),a.on("BeforeSetContent",function(a){a.content&&(a.content=a.content.replace(/

\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)( [^>]*)?>/gi,"<$1$2>"),a.content=a.content.replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre|address)>\s*<\/p>/gi,""))}),"undefined"!=typeof window.jQuery&&window.jQuery(document).triggerHandler("tinymce-editor-init",[a]),window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&e.bind(d,"dragstart dragend dragover drop",function(a){"undefined"!=typeof window.jQuery&&window.jQuery(document).trigger(new window.jQuery.Event(a))})}),"undefined"!=typeof window.jQuery&&a.on("keyup",function(b){var c=b.keyCode||b.charCode;c!==k&&((13===c||8===k||46===k)&&window.jQuery(document).triggerHandler("wpcountwords",[a.getContent({format:"raw"})]),k=c)}),a.on("SaveContent",function(b){return!a.inline&&a.isHidden()?void(b.content=b.element.value):(b.content=b.content.replace(/

(?:
|\u00a0|\uFEFF| )*<\/p>/g,"

 

"),void(a.getParam("wpautop",!0)&&"undefined"!=typeof window.switchEditors&&(b.content=window.switchEditors.pre_wpautop(b.content))))}),a.on("BeforeSetContent",function(a){a.content&&(a.content=a.content.replace(/

(?: |\u00a0|\uFEFF| )+<\/p>/gi,"

"))}),a.on("preInit",function(){a.schema.addValidElements("@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b"),tinymce.Env.iOS&&(a.settings.height=300)}),h="alt+shift",a.addShortcut(h+"+c","","JustifyCenter"),a.addShortcut(h+"+r","","JustifyRight"),a.addShortcut(h+"+l","","JustifyLeft"),a.addShortcut(h+"+j","","JustifyFull"),a.addShortcut(h+"+q","","mceBlockQuote"),a.addShortcut(h+"+u","","InsertUnorderedList"),a.addShortcut(h+"+o","","InsertOrderedList"),a.addShortcut(h+"+n","","mceSpellCheck"),a.addShortcut(h+"+s","","unlink"),a.addShortcut(h+"+m","","WP_Medialib"),a.addShortcut(h+"+z","","WP_Adv"),a.addShortcut(h+"+t","","WP_More"),a.addShortcut(h+"+d","","Strikethrough"),a.addShortcut(h+"+h","","WP_Help"),a.addShortcut(h+"+p","","WP_Page"),a.addShortcut(h+"+x","","WP_Code"),a.addShortcut("ctrl+s","",function(){"undefined"!=typeof wp&&wp.autosave&&wp.autosave.server.triggerSave()}),a.on("init",function(){a.dom.bind(a.getWin(),"scroll",function(){f()}),a.dom.bind(a.getBody(),"dragstart",function(){f()})}),a.on("BeforeExecCommand",function(){f()}),a.on("SaveContent",function(){f()}),a.on("MouseDown",function(a){"IMG"!==a.target.nodeName&&f()}),a.on("keydown",function(a){(a.which===tinymce.util.VK.DELETE||a.which===tinymce.util.VK.BACKSPACE)&&f()}),{_showButtons:e,_hideButtons:f,_setEmbed:c,_getEmbed:d}}); \ No newline at end of file diff --git a/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp-includes/js/tinymce/wp-tinymce.js.gz index cf6b043e4bb607ef3a2cd9571b2dd92b72e57851..4edbb31a213f5fedb46369938ee50bf0ac8b03f1 100644 GIT binary patch delta 6899 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

NxEP-d{&~ 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