diff --git a/src/wp-includes/js/mce-view.js b/src/wp-includes/js/mce-view.js index a2dca4272b..8c8de56a0e 100644 --- a/src/wp-includes/js/mce-view.js +++ b/src/wp-includes/js/mce-view.js @@ -157,6 +157,14 @@ text = tinymce.DOM.decode( text ); + if ( text.indexOf( '[' ) !== -1 && text.indexOf( ']' ) !== -1 ) { + // Looks like a shortcode? Remove any line breaks from inside of shortcodes + // or autop will replace them with
and
later and the string won't match.
+ text = text.replace( /\[[^\]]+\]/g, function( match ) {
+ return match.replace( /[\r\n]/g, '' );
+ });
+ }
+
if ( ! force ) {
instance = this.getInstance( text );
@@ -208,7 +216,7 @@
*/
render: function( force ) {
_.each( instances, function( instance ) {
- instance.render( force );
+ instance.render( null, force );
} );
},
@@ -490,7 +498,8 @@
var dom = editor.dom,
styles = '',
bodyClasses = editor.getBody().className || '',
- editorHead = editor.getDoc().getElementsByTagName( 'head' )[0];
+ editorHead = editor.getDoc().getElementsByTagName( 'head' )[0],
+ iframe, iframeWin, iframeDoc, MutationObserver, observer, i, block;
tinymce.each( dom.$( 'link[rel="stylesheet"]', editorHead ), function( link ) {
if ( link.href && link.href.indexOf( 'skins/lightgray/content.min.css' ) === -1 &&
@@ -511,125 +520,127 @@
}, '\u200B' );
}
- // Seems the browsers need a bit of time to insert/set the view nodes,
- // or the iframe will fail especially when switching Text => Visual.
- setTimeout( function() {
- var iframe, iframeWin, iframeDoc, MutationObserver, observer, i, block;
+ editor.undoManager.transact( function() {
+ node.innerHTML = '';
- editor.undoManager.transact( function() {
- node.innerHTML = '';
-
- iframe = dom.add( node, 'iframe', {
- /* jshint scripturl: true */
- src: tinymce.Env.ie ? 'javascript:""' : '',
- frameBorder: '0',
- allowTransparency: 'true',
- scrolling: 'no',
- 'class': 'wpview-sandbox',
- style: {
- width: '100%',
- display: 'block'
- },
- height: self.iframeHeight
- } );
-
- dom.add( node, 'span', { 'class': 'mce-shim' } );
- dom.add( node, 'span', { 'class': 'wpview-end' } );
+ iframe = dom.add( node, 'iframe', {
+ /* jshint scripturl: true */
+ src: tinymce.Env.ie ? 'javascript:""' : '',
+ frameBorder: '0',
+ allowTransparency: 'true',
+ scrolling: 'no',
+ 'class': 'wpview-sandbox',
+ style: {
+ width: '100%',
+ display: 'block'
+ },
+ height: self.iframeHeight
} );
- // Bail if the iframe node is not attached to the DOM.
- // Happens when the view is dragged in the editor.
- // There is a browser restriction when iframes are moved in the DOM. They get emptied.
- // The iframe will be rerendered after dropping the view node at the new location.
- if ( ! iframe.contentWindow ) {
+ dom.add( node, 'span', { 'class': 'mce-shim' } );
+ dom.add( node, 'span', { 'class': 'wpview-end' } );
+ } );
+
+ // Bail if the iframe node is not attached to the DOM.
+ // Happens when the view is dragged in the editor.
+ // There is a browser restriction when iframes are moved in the DOM. They get emptied.
+ // The iframe will be rerendered after dropping the view node at the new location.
+ if ( ! iframe.contentWindow ) {
+ return;
+ }
+
+ iframeWin = iframe.contentWindow;
+ iframeDoc = iframeWin.document;
+ iframeDoc.open();
+
+ iframeDoc.write(
+ '' +
+ '' +
+ '