diff --git a/src/wp-includes/js/tinymce/plugins/wordpress/plugin.js b/src/wp-includes/js/tinymce/plugins/wordpress/plugin.js index 7a811404cd..3a6dc07bb6 100644 --- a/src/wp-includes/js/tinymce/plugins/wordpress/plugin.js +++ b/src/wp-includes/js/tinymce/plugins/wordpress/plugin.js @@ -885,7 +885,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { function hide( event ) { if ( activeToolbar ) { - if ( event.type === 'hide' ) { + if ( activeToolbar.tempHide || event.type === 'hide' ) { activeToolbar.hide(); activeToolbar = false; } else if ( ( event.type === 'resize' || event.type === 'scroll' ) && ! activeToolbar.blockHide ) { diff --git a/src/wp-includes/js/tinymce/plugins/wplink/plugin.js b/src/wp-includes/js/tinymce/plugins/wplink/plugin.js index fcad125f3f..14f46c94a1 100644 --- a/src/wp-includes/js/tinymce/plugins/wplink/plugin.js +++ b/src/wp-includes/js/tinymce/plugins/wplink/plugin.js @@ -223,13 +223,17 @@ } ); editor.addCommand( 'wp_link_cancel', function() { - inputInstance.reset(); - removePlaceholders(); - editor.focus(); - - if ( tinymce.isIE ) { - editor.selection.moveToBookmark( editor.windowManager.wplinkBookmark ); - editor.windowManager.wplinkBookmark = null; + if ( ! editToolbar.tempHide ) { + inputInstance.reset(); + removePlaceholders(); + editor.focus(); + + if ( tinymce.isIE ) { + editor.selection.moveToBookmark( editor.windowManager.wplinkBookmark ); + editor.windowManager.wplinkBookmark = null; + } + + editToolbar.tempHide = false; } } ); @@ -285,8 +289,10 @@ // Prevent adding undo levels on inserting link placeholder. editor.on( 'BeforeAddUndo', function( event ) { - if ( event.level.content ) { - event.level.content = removePlaceholderStrings( event.level.content ); + if ( event.lastLevel && event.lastLevel.content && event.level.content && + event.lastLevel.content === removePlaceholderStrings( event.level.content ) ) { + + event.preventDefault(); } }); @@ -388,9 +394,12 @@ $linkNode, href, edit; if ( tinymce.$( document.body ).hasClass( 'modal-open' ) ) { + editToolbar.tempHide = true; return; } + editToolbar.tempHide = false; + if ( linkNode ) { $linkNode = editor.$( linkNode ); href = $linkNode.attr( 'href' ); @@ -432,8 +441,10 @@ var url = inputInstance.getURL() || null, text = inputInstance.getLinkText() || null; - editor.focus(); + editor.focus(); // Needed for IE window.wpLink.open( editor.id, url, text ); + + editToolbar.tempHide = true; inputInstance.reset(); } } @@ -447,8 +458,9 @@ } ); return { - hideEditToolbar: function() { - editToolbar.hide(); + close: function() { + editToolbar.tempHide = false; + editor.execCommand( 'wp_link_cancel' ); } }; } ); diff --git a/src/wp-includes/js/wplink.js b/src/wp-includes/js/wplink.js index 8e177cf276..d1f34dd1a9 100644 --- a/src/wp-includes/js/wplink.js +++ b/src/wp-includes/js/wplink.js @@ -244,11 +244,17 @@ var wpLink; }, mceRefresh: function( url, text ) { - var linkNode = editor.dom.getParent( editor.selection.getNode(), 'a[href]' ), + var linkText, + linkNode = getLink(), onlyText = this.hasSelectedText( linkNode ); if ( linkNode ) { - text = tinymce.trim( linkNode.innerText || linkNode.textContent ) || text; + linkText = linkNode.innerText || linkNode.textContent; + + if ( ! tinymce.trim( linkText ) ) { + linkText = text || ''; + } + url = url || editor.dom.getAttrib( linkNode, 'href' ); if ( url === '_wp_link_placeholder' ) { @@ -264,7 +270,7 @@ var wpLink; } if ( onlyText ) { - inputs.text.val( text || '' ); + inputs.text.val( linkText || '' ); inputs.wrap.addClass( 'has-text-field' ); } else { inputs.text.val( '' ); @@ -283,7 +289,10 @@ var wpLink; wpLink.range.select(); } } else { - editor.plugins.wplink.hideEditToolbar(); + if ( editor.plugins.wplink ) { + editor.plugins.wplink.close(); + } + editor.focus(); }