diff --git a/src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js b/src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js index fd6de50fc0..fc39aba6b9 100644 --- a/src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +++ b/src/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js @@ -587,231 +587,6 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) { dom.addClass( editor.getBody(), captionClass ); - // Add caption field to the default image dialog - editor.on( 'wpLoadImageForm', function( event ) { - if ( editor.getParam( 'wpeditimage_disable_captions' ) ) { - return; - } - - var captionField = { - type: 'textbox', - flex: 1, - name: 'wpcaption', - minHeight: 60, - multiline: true, - scroll: true, - label: 'Image caption' - }; - - event.data.splice( event.data.length - 1, 0, captionField ); - }); - - // Fix caption parent width for images added from URL - editor.on( 'wpNewImageRefresh', function( event ) { - var parent, captionWidth; - - if ( parent = dom.getParent( event.node, 'dl.wp-caption' ) ) { - if ( ! parent.style.width ) { - captionWidth = parseInt( event.node.clientWidth, 10 ) + 10; - captionWidth = captionWidth ? captionWidth + 'px' : '50%'; - dom.setStyle( parent, 'width', captionWidth ); - } - } - }); - - editor.on( 'wpImageFormSubmit', function( event ) { - var data = event.imgData.data, - imgNode = event.imgData.node, - caption = event.imgData.wpcaption, - captionId = '', - captionAlign = '', - captionWidth = '', - imgId = null, - wrap, parent, node, html; - - // Temp image id so we can find the node later - data.id = '__wp-temp-img-id'; - // Cancel the original callback - event.imgData.cancel = true; - - if ( ! data.style ) { - data.style = null; - } - - if ( ! data.src ) { - // Delete the image and the caption - if ( imgNode ) { - if ( wrap = dom.getParent( imgNode, 'div.mceTemp' ) ) { - dom.remove( wrap ); - } else if ( imgNode.parentNode.nodeName === 'A' ) { - dom.remove( imgNode.parentNode ); - } else { - dom.remove( imgNode ); - } - - editor.nodeChanged(); - } - return; - } - - if ( caption ) { - caption = caption.replace( /\r\n|\r/g, '\n' ).replace( /<\/?[a-zA-Z0-9]+( [^<>]+)?>/g, function( a ) { - // No line breaks inside HTML tags - return a.replace( /[\r\n\t]+/, ' ' ); - }); - - // Convert remaining line breaks to
- caption = caption.replace( /(]*>)\s*\n\s*/g, '$1' ).replace( /\s*\n\s*/g, '
' ); - caption = verifyHTML( caption ); - } - - if ( ! imgNode ) { - // New image inserted - html = dom.createHTML( 'img', data ); - - if ( caption ) { - node = editor.selection.getNode(); - - if ( data.width ) { - captionWidth = parseInt( data.width, 10 ); - - if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) { - captionWidth += 10; - } - - captionWidth = ' style="width: ' + captionWidth + 'px"'; - } - - html = '
' + - '
'+ html +'
'+ caption +'
'; - - if ( node.nodeName === 'P' ) { - parent = node; - } else { - parent = dom.getParent( node, 'p' ); - } - - if ( parent && parent.nodeName === 'P' ) { - wrap = dom.create( 'div', { 'class': 'mceTemp' }, html ); - parent.parentNode.insertBefore( wrap, parent ); - editor.selection.select( wrap ); - editor.nodeChanged(); - - if ( dom.isEmpty( parent ) ) { - dom.remove( parent ); - } - } else { - editor.selection.setContent( '
' + html + '
' ); - } - } else { - editor.selection.setContent( html ); - } - } else { - // Edit existing image - - // Store the original image id if any - imgId = imgNode.id || null; - // Update the image node - dom.setAttribs( imgNode, data ); - wrap = dom.getParent( imgNode, 'dl.wp-caption' ); - - if ( caption ) { - if ( wrap ) { - if ( parent = dom.select( 'dd.wp-caption-dd', wrap )[0] ) { - parent.innerHTML = caption; - } - } else { - if ( imgNode.className ) { - captionId = imgNode.className.match( /wp-image-([0-9]+)/ ); - captionAlign = imgNode.className.match( /align(left|right|center|none)/ ); - } - - if ( captionAlign ) { - captionAlign = captionAlign[0]; - imgNode.className = imgNode.className.replace( /align(left|right|center|none)/g, '' ); - } else { - captionAlign = 'alignnone'; - } - - captionAlign = ' class="wp-caption ' + captionAlign + '"'; - - if ( captionId ) { - captionId = ' id="attachment_' + captionId[1] + '"'; - } - - captionWidth = data.width || imgNode.clientWidth; - - if ( captionWidth ) { - captionWidth = parseInt( captionWidth, 10 ); - - if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) { - captionWidth += 10; - } - - captionWidth = ' style="width: '+ captionWidth +'px"'; - } - - if ( imgNode.parentNode && imgNode.parentNode.nodeName === 'A' ) { - node = imgNode.parentNode; - } else { - node = imgNode; - } - - html = '
' + - '
'+ caption +'
'; - - wrap = dom.create( 'div', { 'class': 'mceTemp' }, html ); - - if ( parent = dom.getParent( node, 'p' ) ) { - parent.parentNode.insertBefore( wrap, parent ); - } else { - node.parentNode.insertBefore( wrap, node ); - } - - editor.$( wrap ).find( 'dt.wp-caption-dt' ).append( node ); - - if ( parent && dom.isEmpty( parent ) ) { - dom.remove( parent ); - } - } - } else { - if ( wrap ) { - // Remove the caption wrapper and place the image in new paragraph - if ( imgNode.parentNode.nodeName === 'A' ) { - html = dom.getOuterHTML( imgNode.parentNode ); - } else { - html = dom.getOuterHTML( imgNode ); - } - - parent = dom.create( 'p', {}, html ); - dom.insertAfter( parent, wrap.parentNode ); - editor.selection.select( parent ); - editor.nodeChanged(); - dom.remove( wrap.parentNode ); - } - } - } - - imgNode = dom.get('__wp-temp-img-id'); - dom.setAttrib( imgNode, 'id', imgId || null ); - event.imgData.node = imgNode; - }); - - editor.on( 'wpLoadImageData', function( event ) { - var parent, - data = event.imgData.data, - imgNode = event.imgData.node; - - if ( parent = dom.getParent( imgNode, 'dl.wp-caption' ) ) { - parent = dom.select( 'dd.wp-caption-dd', parent )[0]; - - if ( parent ) { - data.wpcaption = editor.serializer.serialize( parent ) - .replace( /]*>/g, '$&\n' ).replace( /^

/, '' ).replace( /<\/p>$/, '' ); - } - } - }); - // Prevent IE11 from making dl.wp-caption resizable if ( tinymce.Env.ie && tinymce.Env.ie > 10 ) { // The 'mscontrolselect' event is supported only in IE11+