TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
/* global tinymce */
|
|
|
|
tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
|
|
|
|
function parseShortcode( content ) {
|
|
|
|
return content.replace( /(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g, function( a, b, c ) {
|
|
|
|
var id, cls, w, cap, img, width,
|
|
|
|
trim = tinymce.trim;
|
|
|
|
|
|
|
|
id = b.match( /id=['"]([^'"]*)['"] ?/ );
|
|
|
|
if ( id ) {
|
|
|
|
b = b.replace( id[0], '' );
|
|
|
|
}
|
|
|
|
|
|
|
|
cls = b.match( /align=['"]([^'"]*)['"] ?/ );
|
|
|
|
if ( cls ) {
|
|
|
|
b = b.replace( cls[0], '' );
|
|
|
|
}
|
|
|
|
|
|
|
|
w = b.match( /width=['"]([0-9]*)['"] ?/ );
|
|
|
|
if ( w ) {
|
|
|
|
b = b.replace( w[0], '' );
|
|
|
|
}
|
|
|
|
|
|
|
|
c = trim( c );
|
|
|
|
img = c.match( /((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i );
|
|
|
|
|
|
|
|
if ( img && img[2] ) {
|
|
|
|
cap = trim( img[2] );
|
|
|
|
img = trim( img[1] );
|
|
|
|
} else {
|
|
|
|
// old captions shortcode style
|
|
|
|
cap = trim( b ).replace( /caption=['"]/, '' ).replace( /['"]$/, '' );
|
|
|
|
img = c;
|
|
|
|
}
|
|
|
|
|
|
|
|
id = ( id && id[1] ) ? id[1] : '';
|
|
|
|
cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
|
2014-03-06 01:13:14 +01:00
|
|
|
|
|
|
|
if ( ! w && img ) {
|
|
|
|
w = img.match( /width=['"]([0-9]*)['"]/ );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( w && w[1] ) {
|
|
|
|
w = w[1];
|
|
|
|
}
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
|
|
|
if ( ! w || ! cap ) {
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
Introduce HTML5 caption support.
When a theme supports HTML5 captions via add_theme_support( 'html5', 'caption' ), figure and figcaption will be used instead of div and p.
There's a bonus. But first, some history: Captions were introduced with an inline style set for the container. This remains, as it is there to force captions to wrap. But this inline style included an extra 10 pixels, which have vexxed theme developers for years. While these pixels were designed to ensure padding around floated images, modern themes handle this with grace. The additional pixels thus feel encumbering.
As the new HTML5 gallery support avoids outputting default gallery styles (again, irking theme developers for years; see #26697), the new HTML5 caption support will also ditch these 10 pixels of unwanted hand-holding.
The 10 pixels are also removed entirely in the visual editor (and more styles may also disappear here; see #26642), giving themes the power necessary to match the frontend styles.
The filter img_caption_shortcode_width added in 3.7 to work around this madness (see #14380) is skipped entirely when the theme supports HTML5 captions.
props obenland, azaozz.
see #26642. also fixes #9066.
Built from https://develop.svn.wordpress.org/trunk@27668
git-svn-id: http://core.svn.wordpress.org/trunk@27511 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 03:05:14 +01:00
|
|
|
width = parseInt( w, 10 );
|
|
|
|
if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) {
|
|
|
|
width += 10;
|
|
|
|
}
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
return '<div class="mceTemp"><dl id="'+ id +'" class="wp-caption '+ cls +'" style="width: '+ width +'px">' +
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
'<dt class="wp-caption-dt">'+ img +'</dt><dd class="wp-caption-dd">'+ cap +'</dd></dl></div>';
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function getShortcode( content ) {
|
|
|
|
return content.replace( /<div (?:id="attachment_|class="mceTemp)[^>]*>([\s\S]+?)<\/div>/g, function( a, b ) {
|
2013-12-31 04:10:11 +01:00
|
|
|
var out = '';
|
|
|
|
|
2013-12-30 02:54:11 +01:00
|
|
|
if ( b.indexOf('<img ') === -1 ) {
|
2013-12-31 04:10:11 +01:00
|
|
|
// Broken caption. The user managed to drag the image out?
|
|
|
|
// Try to return the caption text as a paragraph.
|
|
|
|
out = b.match( /<dd [^>]+>([\s\S]+?)<\/dd>/i );
|
|
|
|
|
|
|
|
if ( out && out[1] ) {
|
2014-01-04 02:28:13 +01:00
|
|
|
return '<p>' + out[1] + '</p>';
|
2013-12-31 04:10:11 +01:00
|
|
|
}
|
|
|
|
|
2013-12-30 02:54:11 +01:00
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
2013-12-31 04:10:11 +01:00
|
|
|
out = b.replace( /<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>/gi, function( a, b, c, cap ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
var id, cls, w;
|
|
|
|
|
|
|
|
w = c.match( /width="([0-9]*)"/ );
|
|
|
|
w = ( w && w[1] ) ? w[1] : '';
|
|
|
|
|
|
|
|
if ( ! w || ! cap ) {
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
id = b.match( /id="([^"]*)"/ );
|
|
|
|
id = ( id && id[1] ) ? id[1] : '';
|
|
|
|
|
|
|
|
cls = b.match( /class="([^"]*)"/ );
|
|
|
|
cls = ( cls && cls[1] ) ? cls[1] : '';
|
|
|
|
cls = cls.match( /align[a-z]+/ ) || 'alignnone';
|
|
|
|
|
|
|
|
cap = cap.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 <br>
|
|
|
|
cap = cap.replace( /\s*\n\s*/g, '<br />' );
|
|
|
|
|
|
|
|
return '[caption id="'+ id +'" align="'+ cls +'" width="'+ w +'"]'+ c +' '+ cap +'[/caption]';
|
|
|
|
});
|
|
|
|
|
2013-12-31 04:10:11 +01:00
|
|
|
if ( out.indexOf('[caption') !== 0 ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
// the caption html seems brocken, try to find the image that may be wrapped in a link
|
|
|
|
// and may be followed by <p> with the caption text.
|
2013-12-31 04:10:11 +01:00
|
|
|
out = b.replace( /[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi, '<p>$1</p>$2' );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
|
|
|
|
2013-12-31 04:10:11 +01:00
|
|
|
return out;
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2014-01-28 22:17:12 +01:00
|
|
|
function extractImageData( imageNode ) {
|
2014-02-11 00:48:12 +01:00
|
|
|
var classes, metadata, captionBlock, caption,
|
|
|
|
dom = editor.dom;
|
2014-01-28 22:17:12 +01:00
|
|
|
|
|
|
|
// default attributes
|
|
|
|
metadata = {
|
|
|
|
attachment_id: false,
|
|
|
|
url: false,
|
|
|
|
height: '',
|
|
|
|
width: '',
|
|
|
|
size: 'none',
|
|
|
|
caption: '',
|
|
|
|
alt: '',
|
|
|
|
align: 'none',
|
|
|
|
link: false,
|
|
|
|
linkUrl: ''
|
|
|
|
};
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
metadata.url = dom.getAttrib( imageNode, 'src' );
|
|
|
|
metadata.alt = dom.getAttrib( imageNode, 'alt' );
|
|
|
|
metadata.width = parseInt( dom.getAttrib( imageNode, 'width' ), 10 );
|
|
|
|
metadata.height = parseInt( dom.getAttrib( imageNode, 'height' ), 10 );
|
2014-01-28 22:17:12 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
//TODO: probably should capture attributes on both the <img /> and the <a /> so that they can be restored
|
|
|
|
// when the image and/or caption are updated
|
2014-01-28 22:17:12 +01:00
|
|
|
// maybe use getAttribs()
|
|
|
|
|
|
|
|
// extract meta data from classes (candidate for turning into a method)
|
|
|
|
classes = imageNode.className.split( ' ' );
|
|
|
|
tinymce.each( classes, function( name ) {
|
|
|
|
|
|
|
|
if ( /^wp-image/.test( name ) ) {
|
|
|
|
metadata.attachment_id = parseInt( name.replace( 'wp-image-', '' ), 10 );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( /^align/.test( name ) ) {
|
|
|
|
metadata.align = name.replace( 'align', '' );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( /^size/.test( name ) ) {
|
|
|
|
metadata.size = name.replace( 'size-', '' );
|
|
|
|
}
|
|
|
|
} );
|
|
|
|
|
|
|
|
// extract caption
|
2014-02-11 00:48:12 +01:00
|
|
|
captionBlock = dom.getParents( imageNode, '.wp-caption' );
|
2014-01-28 22:17:12 +01:00
|
|
|
|
|
|
|
if ( captionBlock.length ) {
|
|
|
|
captionBlock = captionBlock[0];
|
|
|
|
|
|
|
|
classes = captionBlock.className.split( ' ' );
|
|
|
|
tinymce.each( classes, function( name ) {
|
|
|
|
if ( /^align/.test( name ) ) {
|
|
|
|
metadata.align = name.replace( 'align', '' );
|
|
|
|
}
|
|
|
|
} );
|
2014-02-11 00:48:12 +01:00
|
|
|
|
|
|
|
caption = dom.select( 'dd.wp-caption-dd', captionBlock );
|
2014-01-28 22:17:12 +01:00
|
|
|
if ( caption.length ) {
|
|
|
|
caption = caption[0];
|
|
|
|
// need to do some more thinking about this
|
|
|
|
metadata.caption = editor.serializer.serialize( caption )
|
|
|
|
.replace( /<br[^>]*>/g, '$&\n' ).replace( /^<p>/, '' ).replace( /<\/p>$/, '' );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// extract linkTo
|
2014-02-11 00:48:12 +01:00
|
|
|
if ( imageNode.parentNode && imageNode.parentNode.nodeName === 'A' ) {
|
|
|
|
metadata.linkUrl = dom.getAttrib( imageNode.parentNode, 'href' );
|
2014-01-28 22:17:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return metadata;
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateImage( imageNode, imageData ) {
|
2014-02-11 00:48:12 +01:00
|
|
|
var className, width, node, html, captionNode, nodeToReplace, uid, editedImg;
|
2014-01-28 22:17:12 +01:00
|
|
|
|
|
|
|
if ( imageData.caption ) {
|
|
|
|
|
|
|
|
html = createImageAndLink( imageData, 'html' );
|
|
|
|
|
2014-03-25 00:02:13 +01:00
|
|
|
width = parseInt( imageData.width, 10 );
|
Introduce HTML5 caption support.
When a theme supports HTML5 captions via add_theme_support( 'html5', 'caption' ), figure and figcaption will be used instead of div and p.
There's a bonus. But first, some history: Captions were introduced with an inline style set for the container. This remains, as it is there to force captions to wrap. But this inline style included an extra 10 pixels, which have vexxed theme developers for years. While these pixels were designed to ensure padding around floated images, modern themes handle this with grace. The additional pixels thus feel encumbering.
As the new HTML5 gallery support avoids outputting default gallery styles (again, irking theme developers for years; see #26697), the new HTML5 caption support will also ditch these 10 pixels of unwanted hand-holding.
The 10 pixels are also removed entirely in the visual editor (and more styles may also disappear here; see #26642), giving themes the power necessary to match the frontend styles.
The filter img_caption_shortcode_width added in 3.7 to work around this madness (see #14380) is skipped entirely when the theme supports HTML5 captions.
props obenland, azaozz.
see #26642. also fixes #9066.
Built from https://develop.svn.wordpress.org/trunk@27668
git-svn-id: http://core.svn.wordpress.org/trunk@27511 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 03:05:14 +01:00
|
|
|
|
|
|
|
if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) {
|
|
|
|
width += 10;
|
|
|
|
}
|
|
|
|
|
2014-01-28 22:17:12 +01:00
|
|
|
className = 'align' + imageData.align;
|
|
|
|
|
|
|
|
//TODO: shouldn't add the id attribute if it isn't an attachment
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
// should create a new function for generating the caption markup
|
2014-01-28 22:17:12 +01:00
|
|
|
html = '<dl id="'+ imageData.attachment_id +'" class="wp-caption '+ className +'" style="width: '+ width +'px">' +
|
|
|
|
'<dt class="wp-caption-dt">'+ html + '</dt><dd class="wp-caption-dd">'+ imageData.caption +'</dd></dl>';
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
node = editor.dom.create( 'div', { 'class': 'mceTemp' }, html );
|
2014-01-28 22:17:12 +01:00
|
|
|
} else {
|
|
|
|
node = createImageAndLink( imageData, 'node' );
|
|
|
|
}
|
|
|
|
|
|
|
|
nodeToReplace = imageNode;
|
|
|
|
|
|
|
|
captionNode = editor.dom.getParent( imageNode, '.mceTemp' );
|
|
|
|
|
|
|
|
if ( captionNode ) {
|
|
|
|
nodeToReplace = captionNode;
|
|
|
|
} else {
|
|
|
|
if ( imageNode.parentNode.nodeName === 'A' ) {
|
|
|
|
nodeToReplace = imageNode.parentNode;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// uniqueId isn't super exciting, so maybe we want to use something else
|
|
|
|
uid = editor.dom.uniqueId( 'wp_' );
|
|
|
|
editor.dom.setAttrib( node, 'data-wp-replace-id', uid );
|
|
|
|
editor.dom.replace( node, nodeToReplace );
|
|
|
|
|
|
|
|
// find the updated node
|
|
|
|
node = editor.dom.select( '[data-wp-replace-id="' + uid + '"]' )[0];
|
|
|
|
|
|
|
|
editor.dom.setAttrib( node, 'data-wp-replace-id', '' );
|
|
|
|
|
|
|
|
editor.nodeChanged();
|
2014-02-11 00:48:12 +01:00
|
|
|
|
|
|
|
editedImg = node.nodeName === 'IMG' ? node : editor.dom.select( 'img', node )[0];
|
|
|
|
|
|
|
|
if ( editedImg ) {
|
|
|
|
editor.selection.select( editedImg );
|
|
|
|
// refresh toolbar
|
|
|
|
addToolbar( editedImg );
|
|
|
|
}
|
2014-01-28 22:17:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function createImageAndLink( imageData, mode ) {
|
|
|
|
var classes = [],
|
|
|
|
props;
|
|
|
|
|
|
|
|
mode = mode ? mode : 'node';
|
|
|
|
|
|
|
|
if ( ! imageData.caption ) {
|
|
|
|
classes.push( 'align' + imageData.align );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( imageData.attachment_id ) {
|
|
|
|
classes.push( 'wp-image-' + imageData.attachment_id );
|
|
|
|
if ( imageData.size ) {
|
|
|
|
classes.push( 'size-' + imageData.size );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
props = {
|
|
|
|
src: imageData.url,
|
|
|
|
width: imageData.width,
|
|
|
|
height: imageData.height,
|
|
|
|
alt: imageData.alt
|
|
|
|
};
|
|
|
|
|
|
|
|
if ( classes.length ) {
|
|
|
|
props['class'] = classes.join( ' ' );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( imageData.linkUrl ) {
|
|
|
|
if ( mode === 'node' ) {
|
|
|
|
return editor.dom.create( 'a', { href: imageData.linkUrl }, editor.dom.createHTML( 'img', props ) );
|
|
|
|
} else if ( mode === 'html' ) {
|
|
|
|
return editor.dom.createHTML( 'a', { href: imageData.linkUrl }, editor.dom.createHTML( 'img', props ) );
|
|
|
|
}
|
2014-01-29 00:21:13 +01:00
|
|
|
} else if ( mode === 'node' ) {
|
|
|
|
return editor.dom.create( 'img', props );
|
|
|
|
} else if ( mode === 'html' ) {
|
|
|
|
return editor.dom.createHTML( 'img', props );
|
2014-01-28 22:17:12 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
function editImage( img ) {
|
|
|
|
var frame, callback;
|
|
|
|
|
|
|
|
if ( typeof wp === 'undefined' || ! wp.media ) {
|
|
|
|
editor.execCommand( 'mceImage' );
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
editor.undoManager.add();
|
|
|
|
|
|
|
|
frame = wp.media({
|
|
|
|
frame: 'image',
|
|
|
|
state: 'image-details',
|
|
|
|
metadata: extractImageData( img )
|
|
|
|
} );
|
|
|
|
|
|
|
|
callback = function( imageData ) {
|
|
|
|
updateImage( img, imageData );
|
|
|
|
editor.focus();
|
2014-02-25 22:03:15 +01:00
|
|
|
frame.detach();
|
2014-02-11 00:48:12 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
frame.state('image-details').on( 'update', callback );
|
|
|
|
frame.state('replace-image').on( 'replace', callback );
|
|
|
|
frame.on( 'close', function() {
|
|
|
|
editor.focus();
|
2014-02-25 22:03:15 +01:00
|
|
|
frame.detach();
|
2014-02-11 00:48:12 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
frame.open();
|
|
|
|
}
|
|
|
|
|
|
|
|
function removeImage( node ) {
|
|
|
|
var wrap;
|
|
|
|
|
|
|
|
if ( node.nodeName === 'DIV' && editor.dom.hasClass( node, 'mceTemp' ) ) {
|
|
|
|
wrap = node;
|
|
|
|
} else if ( node.nodeName === 'IMG' || node.nodeName === 'DT' || node.nodeName === 'A' ) {
|
|
|
|
wrap = editor.dom.getParent( node, 'div.mceTemp' );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( wrap ) {
|
|
|
|
if ( wrap.nextSibling ) {
|
|
|
|
editor.selection.select( wrap.nextSibling );
|
|
|
|
} else if ( wrap.previousSibling ) {
|
|
|
|
editor.selection.select( wrap.previousSibling );
|
|
|
|
} else {
|
|
|
|
editor.selection.select( wrap.parentNode );
|
|
|
|
}
|
|
|
|
|
|
|
|
editor.selection.collapse( true );
|
|
|
|
editor.nodeChanged();
|
|
|
|
editor.dom.remove( wrap );
|
|
|
|
} else {
|
|
|
|
editor.dom.remove( node );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function addToolbar( node ) {
|
2014-03-18 03:30:15 +01:00
|
|
|
var rectangle, toolbarHtml, toolbar, toolbarSize,
|
2014-02-11 00:48:12 +01:00
|
|
|
dom = editor.dom;
|
|
|
|
|
|
|
|
removeToolbar();
|
|
|
|
|
|
|
|
// Don't add to placeholders
|
|
|
|
if ( ! node || node.nodeName !== 'IMG' || isPlaceholder( node ) ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
dom.setAttrib( node, 'data-wp-imgselect', 1 );
|
2014-03-18 03:30:15 +01:00
|
|
|
rectangle = dom.getRect( node );
|
2014-02-11 00:48:12 +01:00
|
|
|
|
2014-03-20 01:48:15 +01:00
|
|
|
toolbarHtml = '<div class="dashicons dashicons-edit edit" data-mce-bogus="1"></div>' +
|
2014-03-18 01:20:15 +01:00
|
|
|
'<div class="dashicons dashicons-no-alt remove" data-mce-bogus="1"></div>';
|
2014-02-11 00:48:12 +01:00
|
|
|
|
|
|
|
toolbar = dom.create( 'div', {
|
|
|
|
'id': 'wp-image-toolbar',
|
|
|
|
'data-mce-bogus': '1',
|
|
|
|
'contenteditable': false
|
|
|
|
}, toolbarHtml );
|
|
|
|
|
|
|
|
editor.getBody().appendChild( toolbar );
|
2014-03-18 03:30:15 +01:00
|
|
|
toolbarSize = dom.getSize( toolbar );
|
2014-02-11 00:48:12 +01:00
|
|
|
|
|
|
|
dom.setStyles( toolbar, {
|
2014-03-18 03:30:15 +01:00
|
|
|
top: rectangle.y,
|
|
|
|
left: rectangle.x + rectangle.w - toolbarSize.w
|
2014-02-11 00:48:12 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function removeToolbar() {
|
|
|
|
var toolbar = editor.dom.get( 'wp-image-toolbar' );
|
|
|
|
|
|
|
|
if ( toolbar ) {
|
|
|
|
editor.dom.remove( toolbar );
|
|
|
|
}
|
|
|
|
|
|
|
|
editor.dom.setAttrib( editor.dom.select( 'img[data-wp-imgselect]' ), 'data-wp-imgselect', null );
|
|
|
|
}
|
|
|
|
|
|
|
|
function isPlaceholder( node ) {
|
|
|
|
var dom = editor.dom;
|
|
|
|
|
|
|
|
if ( dom.hasClass( node, 'mceItem' ) || dom.getAttrib( node, 'data-mce-placeholder' ) ||
|
|
|
|
dom.getAttrib( node, 'data-mce-object' ) ) {
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
editor.on( 'init', function() {
|
2014-03-27 00:13:15 +01:00
|
|
|
var dom = editor.dom,
|
|
|
|
captionClass = editor.getParam( 'wpeditimage_html5_captions' ) ? 'html5-captions' : 'html4-captions';
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
2014-03-27 00:13:15 +01:00
|
|
|
dom.addClass( editor.getBody(), captionClass );
|
Introduce HTML5 caption support.
When a theme supports HTML5 captions via add_theme_support( 'html5', 'caption' ), figure and figcaption will be used instead of div and p.
There's a bonus. But first, some history: Captions were introduced with an inline style set for the container. This remains, as it is there to force captions to wrap. But this inline style included an extra 10 pixels, which have vexxed theme developers for years. While these pixels were designed to ensure padding around floated images, modern themes handle this with grace. The additional pixels thus feel encumbering.
As the new HTML5 gallery support avoids outputting default gallery styles (again, irking theme developers for years; see #26697), the new HTML5 caption support will also ditch these 10 pixels of unwanted hand-holding.
The 10 pixels are also removed entirely in the visual editor (and more styles may also disappear here; see #26642), giving themes the power necessary to match the frontend styles.
The filter img_caption_shortcode_width added in 3.7 to work around this madness (see #14380) is skipped entirely when the theme supports HTML5 captions.
props obenland, azaozz.
see #26642. also fixes #9066.
Built from https://develop.svn.wordpress.org/trunk@27668
git-svn-id: http://core.svn.wordpress.org/trunk@27511 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 03:05:14 +01:00
|
|
|
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
// Add caption field to the default image dialog
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'wpLoadImageForm', function( event ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
if ( editor.getParam( 'wpeditimage_disable_captions' ) ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var captionField = {
|
|
|
|
type: 'textbox',
|
|
|
|
flex: 1,
|
|
|
|
name: 'caption',
|
|
|
|
minHeight: 60,
|
|
|
|
multiline: true,
|
|
|
|
scroll: true,
|
|
|
|
label: 'Image caption'
|
|
|
|
};
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
event.data.splice( event.data.length - 1, 0, captionField );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
// Fix caption parent width for images added from URL
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'wpNewImageRefresh', function( event ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
var parent, captionWidth;
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
if ( parent = dom.getParent( event.node, 'dl.wp-caption' ) ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
if ( ! parent.style.width ) {
|
2014-02-11 00:48:12 +01:00
|
|
|
captionWidth = parseInt( event.node.clientWidth, 10 ) + 10;
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
captionWidth = captionWidth ? captionWidth + 'px' : '50%';
|
|
|
|
dom.setStyle( parent, 'width', captionWidth );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'wpImageFormSubmit', function( event ) {
|
|
|
|
var data = event.imgData.data,
|
|
|
|
imgNode = event.imgData.node,
|
|
|
|
caption = event.imgData.caption,
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
captionId = '',
|
|
|
|
captionAlign = '',
|
|
|
|
captionWidth = '',
|
2013-12-30 02:54:11 +01:00
|
|
|
wrap, parent, node, html, imgId;
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
|
|
|
// Temp image id so we can find the node later
|
|
|
|
data.id = '__wp-temp-img-id';
|
|
|
|
// Cancel the original callback
|
2014-02-11 00:48:12 +01:00
|
|
|
event.imgData.cancel = true;
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2013-12-31 04:10:11 +01:00
|
|
|
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 <br>
|
|
|
|
caption = caption.replace( /(<br[^>]*>)\s*\n\s*/g, '$1' ).replace( /\s*\n\s*/g, '<br />' );
|
|
|
|
}
|
|
|
|
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
if ( ! imgNode ) {
|
|
|
|
// New image inserted
|
|
|
|
html = dom.createHTML( 'img', data );
|
|
|
|
|
|
|
|
if ( caption ) {
|
|
|
|
node = editor.selection.getNode();
|
|
|
|
|
|
|
|
if ( data.width ) {
|
Introduce HTML5 caption support.
When a theme supports HTML5 captions via add_theme_support( 'html5', 'caption' ), figure and figcaption will be used instead of div and p.
There's a bonus. But first, some history: Captions were introduced with an inline style set for the container. This remains, as it is there to force captions to wrap. But this inline style included an extra 10 pixels, which have vexxed theme developers for years. While these pixels were designed to ensure padding around floated images, modern themes handle this with grace. The additional pixels thus feel encumbering.
As the new HTML5 gallery support avoids outputting default gallery styles (again, irking theme developers for years; see #26697), the new HTML5 caption support will also ditch these 10 pixels of unwanted hand-holding.
The 10 pixels are also removed entirely in the visual editor (and more styles may also disappear here; see #26642), giving themes the power necessary to match the frontend styles.
The filter img_caption_shortcode_width added in 3.7 to work around this madness (see #14380) is skipped entirely when the theme supports HTML5 captions.
props obenland, azaozz.
see #26642. also fixes #9066.
Built from https://develop.svn.wordpress.org/trunk@27668
git-svn-id: http://core.svn.wordpress.org/trunk@27511 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 03:05:14 +01:00
|
|
|
captionWidth = parseInt( data.width, 10 );
|
|
|
|
|
|
|
|
if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) {
|
|
|
|
captionWidth += 10;
|
|
|
|
}
|
|
|
|
|
|
|
|
captionWidth = ' style="width: ' + captionWidth + 'px"';
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
html = '<dl class="wp-caption alignnone"' + captionWidth + '>' +
|
|
|
|
'<dt class="wp-caption-dt">'+ html +'</dt><dd class="wp-caption-dd">'+ caption +'</dd></dl>';
|
|
|
|
|
|
|
|
if ( node.nodeName === 'P' ) {
|
|
|
|
parent = node;
|
|
|
|
} else {
|
|
|
|
parent = dom.getParent( node, 'p' );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( parent && parent.nodeName === 'P' ) {
|
2014-02-11 00:48:12 +01:00
|
|
|
wrap = dom.create( 'div', { 'class': 'mceTemp' }, html );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
dom.insertAfter( wrap, parent );
|
|
|
|
editor.selection.select( wrap );
|
|
|
|
editor.nodeChanged();
|
|
|
|
|
|
|
|
if ( dom.isEmpty( parent ) ) {
|
|
|
|
dom.remove( parent );
|
|
|
|
}
|
|
|
|
} else {
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.selection.setContent( '<div class="mceTemp">' + html + '</div>' );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
|
|
|
} 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 ) {
|
Introduce HTML5 caption support.
When a theme supports HTML5 captions via add_theme_support( 'html5', 'caption' ), figure and figcaption will be used instead of div and p.
There's a bonus. But first, some history: Captions were introduced with an inline style set for the container. This remains, as it is there to force captions to wrap. But this inline style included an extra 10 pixels, which have vexxed theme developers for years. While these pixels were designed to ensure padding around floated images, modern themes handle this with grace. The additional pixels thus feel encumbering.
As the new HTML5 gallery support avoids outputting default gallery styles (again, irking theme developers for years; see #26697), the new HTML5 caption support will also ditch these 10 pixels of unwanted hand-holding.
The 10 pixels are also removed entirely in the visual editor (and more styles may also disappear here; see #26642), giving themes the power necessary to match the frontend styles.
The filter img_caption_shortcode_width added in 3.7 to work around this madness (see #14380) is skipped entirely when the theme supports HTML5 captions.
props obenland, azaozz.
see #26642. also fixes #9066.
Built from https://develop.svn.wordpress.org/trunk@27668
git-svn-id: http://core.svn.wordpress.org/trunk@27511 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 03:05:14 +01:00
|
|
|
captionWidth = parseInt( captionWidth, 10 );
|
|
|
|
|
|
|
|
if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) {
|
|
|
|
captionWidth += 10;
|
|
|
|
}
|
|
|
|
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
captionWidth = ' style="width: '+ captionWidth +'px"';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( imgNode.parentNode && imgNode.parentNode.nodeName === 'A' ) {
|
|
|
|
html = dom.getOuterHTML( imgNode.parentNode );
|
|
|
|
node = imgNode.parentNode;
|
|
|
|
} else {
|
|
|
|
html = dom.getOuterHTML( imgNode );
|
|
|
|
node = imgNode;
|
|
|
|
}
|
|
|
|
|
|
|
|
html = '<dl ' + captionId + captionAlign + captionWidth + '>' +
|
|
|
|
'<dt class="wp-caption-dt">'+ html +'</dt><dd class="wp-caption-dd">'+ caption +'</dd></dl>';
|
|
|
|
|
|
|
|
if ( parent = dom.getParent( imgNode, 'p' ) ) {
|
2014-02-11 00:48:12 +01:00
|
|
|
wrap = dom.create( 'div', { 'class': 'mceTemp' }, html );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
dom.insertAfter( wrap, parent );
|
|
|
|
editor.selection.select( wrap );
|
|
|
|
editor.nodeChanged();
|
|
|
|
|
|
|
|
// Delete the old image node
|
|
|
|
dom.remove( node );
|
|
|
|
|
|
|
|
if ( dom.isEmpty( parent ) ) {
|
|
|
|
dom.remove( parent );
|
|
|
|
}
|
|
|
|
} else {
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.selection.setContent( '<div class="mceTemp">' + html + '</div>' );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} 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 );
|
2014-02-11 00:48:12 +01:00
|
|
|
event.imgData.node = imgNode;
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
});
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'wpLoadImageData', function( event ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
var parent,
|
2014-02-11 00:48:12 +01:00
|
|
|
data = event.imgData.data,
|
|
|
|
imgNode = event.imgData.node;
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
|
|
|
if ( parent = dom.getParent( imgNode, 'dl.wp-caption' ) ) {
|
|
|
|
parent = dom.select( 'dd.wp-caption-dd', parent )[0];
|
2013-12-31 04:10:11 +01:00
|
|
|
|
|
|
|
if ( parent ) {
|
|
|
|
data.caption = editor.serializer.serialize( parent )
|
|
|
|
.replace( /<br[^>]*>/g, '$&\n' ).replace( /^<p>/, '' ).replace( /<\/p>$/, '' );
|
|
|
|
}
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
dom.bind( editor.getDoc(), 'dragstart', function( event ) {
|
|
|
|
var node = editor.selection.getNode();
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
// Prevent dragging images out of the caption elements
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
if ( node.nodeName === 'IMG' && dom.getParent( node, '.wp-caption' ) ) {
|
|
|
|
event.preventDefault();
|
|
|
|
}
|
2014-02-11 00:48:12 +01:00
|
|
|
|
|
|
|
// Remove toolbar to avoid an orphaned toolbar when dragging an image to a new location
|
|
|
|
removeToolbar();
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
});
|
2014-02-11 00:48:12 +01:00
|
|
|
|
|
|
|
// Prevent IE11 from making dl.wp-caption resizable
|
|
|
|
if ( tinymce.Env.ie && tinymce.Env.ie > 10 ) {
|
|
|
|
// The 'mscontrolselect' event is supported only in IE11+
|
|
|
|
dom.bind( editor.getBody(), 'mscontrolselect', function( event ) {
|
|
|
|
if ( event.target.nodeName === 'IMG' && dom.getParent( event.target, '.wp-caption' ) ) {
|
|
|
|
// Hide the thick border with resize handles around dl.wp-caption
|
|
|
|
editor.getBody().focus(); // :(
|
|
|
|
} else if ( event.target.nodeName === 'DL' && dom.hasClass( event.target, 'wp-caption' ) ) {
|
|
|
|
// Trigger the thick border with resize handles...
|
|
|
|
// This will make the caption text editable.
|
|
|
|
event.target.focus();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
editor.on( 'click', function( event ) {
|
|
|
|
if ( event.target.nodeName === 'IMG' && dom.getAttrib( event.target, 'data-wp-imgselect' ) &&
|
|
|
|
dom.getParent( event.target, 'dl.wp-caption' ) ) {
|
|
|
|
|
|
|
|
editor.getBody().focus();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
});
|
|
|
|
|
2014-01-13 02:13:10 +01:00
|
|
|
editor.on( 'ObjectResized', function( event ) {
|
2014-02-05 03:07:13 +01:00
|
|
|
var parent, width,
|
2014-03-25 01:16:14 +01:00
|
|
|
node = event.target,
|
|
|
|
dom = editor.dom;
|
2014-01-13 02:13:10 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
if ( node.nodeName === 'IMG' ) {
|
2014-03-25 01:16:14 +01:00
|
|
|
node.className = node.className.replace( /\bsize-[^ ]+/, '' );
|
|
|
|
|
|
|
|
if ( parent = dom.getParent( node, '.wp-caption' ) ) {
|
|
|
|
width = event.width || dom.getAttrib( node, 'width' );
|
2014-02-05 03:07:13 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
if ( width ) {
|
Introduce HTML5 caption support.
When a theme supports HTML5 captions via add_theme_support( 'html5', 'caption' ), figure and figcaption will be used instead of div and p.
There's a bonus. But first, some history: Captions were introduced with an inline style set for the container. This remains, as it is there to force captions to wrap. But this inline style included an extra 10 pixels, which have vexxed theme developers for years. While these pixels were designed to ensure padding around floated images, modern themes handle this with grace. The additional pixels thus feel encumbering.
As the new HTML5 gallery support avoids outputting default gallery styles (again, irking theme developers for years; see #26697), the new HTML5 caption support will also ditch these 10 pixels of unwanted hand-holding.
The 10 pixels are also removed entirely in the visual editor (and more styles may also disappear here; see #26642), giving themes the power necessary to match the frontend styles.
The filter img_caption_shortcode_width added in 3.7 to work around this madness (see #14380) is skipped entirely when the theme supports HTML5 captions.
props obenland, azaozz.
see #26642. also fixes #9066.
Built from https://develop.svn.wordpress.org/trunk@27668
git-svn-id: http://core.svn.wordpress.org/trunk@27511 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-03-24 03:05:14 +01:00
|
|
|
width = parseInt( width, 10 );
|
|
|
|
|
|
|
|
if ( ! editor.getParam( 'wpeditimage_html5_captions' ) ) {
|
|
|
|
width += 10;
|
|
|
|
}
|
|
|
|
|
2014-03-25 01:16:14 +01:00
|
|
|
dom.setStyle( parent, 'width', width + 'px' );
|
2014-02-11 00:48:12 +01:00
|
|
|
}
|
2014-02-05 03:07:13 +01:00
|
|
|
}
|
2014-02-11 00:48:12 +01:00
|
|
|
// refresh toolbar
|
|
|
|
addToolbar( node );
|
2014-01-13 02:13:10 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'BeforeExecCommand', function( event ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
var node, p, DL, align,
|
2014-02-11 00:48:12 +01:00
|
|
|
cmd = event.command,
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
dom = editor.dom;
|
|
|
|
|
|
|
|
if ( cmd === 'mceInsertContent' ) {
|
|
|
|
// When inserting content, if the caret is inside a caption create new paragraph under
|
|
|
|
// and move the caret there
|
|
|
|
if ( node = dom.getParent( editor.selection.getNode(), 'div.mceTemp' ) ) {
|
|
|
|
p = dom.create( 'p' );
|
|
|
|
dom.insertAfter( p, node );
|
|
|
|
editor.selection.setCursorLocation( p, 0 );
|
|
|
|
editor.nodeChanged();
|
|
|
|
|
|
|
|
if ( tinymce.Env.ie > 8 ) {
|
|
|
|
setTimeout( function() {
|
|
|
|
editor.selection.setCursorLocation( p, 0 );
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.selection.setContent( event.value );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}, 500 );
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if ( cmd === 'JustifyLeft' || cmd === 'JustifyRight' || cmd === 'JustifyCenter' ) {
|
|
|
|
node = editor.selection.getNode();
|
|
|
|
align = cmd.substr(7).toLowerCase();
|
|
|
|
align = 'align' + align;
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
removeToolbar();
|
|
|
|
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
if ( dom.is( node, 'dl.wp-caption' ) ) {
|
|
|
|
DL = node;
|
|
|
|
} else {
|
|
|
|
DL = dom.getParent( node, 'dl.wp-caption' );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( DL ) {
|
2014-01-14 06:52:09 +01:00
|
|
|
// When inside an image caption, set the align* class on dl.wp-caption
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
if ( dom.hasClass( DL, align ) ) {
|
|
|
|
dom.removeClass( DL, align );
|
|
|
|
dom.addClass( DL, 'alignnone' );
|
|
|
|
} else {
|
|
|
|
DL.className = DL.className.replace( /align[^ ]+/g, '' );
|
|
|
|
dom.addClass( DL, align );
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
2014-01-14 06:52:09 +01:00
|
|
|
|
|
|
|
if ( node.nodeName === 'IMG' ) {
|
|
|
|
if ( dom.hasClass( node, align ) ) {
|
|
|
|
// The align class is being removed
|
|
|
|
dom.addClass( node, 'alignnone' );
|
|
|
|
} else {
|
|
|
|
dom.removeClass( node, 'alignnone' );
|
|
|
|
}
|
|
|
|
}
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'keydown', function( event ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
var node, wrap, P, spacer,
|
|
|
|
selection = editor.selection,
|
|
|
|
dom = editor.dom;
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
if ( event.keyCode === tinymce.util.VK.ENTER ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
// When pressing Enter inside a caption move the caret to a new parapraph under it
|
2014-02-11 00:48:12 +01:00
|
|
|
node = selection.getNode();
|
|
|
|
wrap = dom.getParent( node, 'div.mceTemp' );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
|
|
|
if ( wrap ) {
|
2014-02-11 00:48:12 +01:00
|
|
|
dom.events.cancel( event ); // Doesn't cancel all :(
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
|
|
|
|
// Remove any extra dt and dd cleated on pressing Enter...
|
|
|
|
tinymce.each( dom.select( 'dt, dd', wrap ), function( element ) {
|
|
|
|
if ( dom.isEmpty( element ) ) {
|
|
|
|
dom.remove( element );
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
spacer = tinymce.Env.ie && tinymce.Env.ie < 11 ? '' : '<br data-mce-bogus="1" />';
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
P = dom.create( 'p', null, spacer );
|
2014-02-11 00:48:12 +01:00
|
|
|
|
|
|
|
if ( node.nodeName === 'DD' ) {
|
|
|
|
dom.insertAfter( P, wrap );
|
|
|
|
} else {
|
|
|
|
wrap.parentNode.insertBefore( P, wrap );
|
|
|
|
}
|
|
|
|
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
editor.nodeChanged();
|
2014-02-11 00:48:12 +01:00
|
|
|
selection.setCursorLocation( P, 0 );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
2014-02-11 00:48:12 +01:00
|
|
|
} else if ( event.keyCode === tinymce.util.VK.DELETE || event.keyCode === tinymce.util.VK.BACKSPACE ) {
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
node = selection.getNode();
|
|
|
|
|
|
|
|
if ( node.nodeName === 'DIV' && dom.hasClass( node, 'mceTemp' ) ) {
|
|
|
|
wrap = node;
|
|
|
|
} else if ( node.nodeName === 'IMG' || node.nodeName === 'DT' || node.nodeName === 'A' ) {
|
|
|
|
wrap = dom.getParent( node, 'div.mceTemp' );
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( wrap ) {
|
2014-02-11 00:48:12 +01:00
|
|
|
dom.events.cancel( event );
|
|
|
|
removeImage( node );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'mousedown', function( event ) {
|
2014-03-07 07:34:14 +01:00
|
|
|
if ( editor.dom.getParent( event.target, '#wp-image-toolbar' ) ) {
|
|
|
|
if ( tinymce.Env.ie ) {
|
|
|
|
// Stop IE > 8 from making the wrapper resizable on mousedown
|
|
|
|
event.preventDefault();
|
|
|
|
}
|
|
|
|
} else if ( event.target.nodeName !== 'IMG' ) {
|
|
|
|
removeToolbar();
|
2014-02-11 00:48:12 +01:00
|
|
|
}
|
|
|
|
});
|
2014-01-28 22:17:12 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'mouseup', function( event ) {
|
|
|
|
var image,
|
|
|
|
node = event.target,
|
|
|
|
dom = editor.dom;
|
2014-01-28 22:17:12 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
// Don't trigger on right-click
|
|
|
|
if ( event.button && event.button > 1 ) {
|
|
|
|
return;
|
|
|
|
}
|
2014-01-28 22:17:12 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
if ( node.nodeName === 'DIV' && dom.getParent( node, '#wp-image-toolbar' ) ) {
|
|
|
|
image = dom.select( 'img[data-wp-imgselect]' )[0];
|
2014-01-28 22:17:12 +01:00
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
if ( image ) {
|
|
|
|
editor.selection.select( image );
|
|
|
|
|
|
|
|
if ( dom.hasClass( node, 'remove' ) ) {
|
|
|
|
removeImage( image );
|
|
|
|
removeToolbar();
|
|
|
|
} else if ( dom.hasClass( node, 'edit' ) ) {
|
|
|
|
editImage( image );
|
|
|
|
}
|
2014-01-28 22:17:12 +01:00
|
|
|
}
|
2014-03-07 07:34:14 +01:00
|
|
|
} else if ( node.nodeName === 'IMG' && ! editor.dom.getAttrib( node, 'data-wp-imgselect' ) && ! isPlaceholder( node ) ) {
|
|
|
|
addToolbar( node );
|
2014-02-11 00:48:12 +01:00
|
|
|
} else if ( node.nodeName !== 'IMG' ) {
|
|
|
|
removeToolbar();
|
2014-01-28 22:17:12 +01:00
|
|
|
}
|
2014-02-11 00:48:12 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
editor.on( 'cut', function() {
|
|
|
|
removeToolbar();
|
|
|
|
});
|
2014-01-28 22:17:12 +01:00
|
|
|
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
editor.wpSetImgCaption = function( content ) {
|
|
|
|
return parseShortcode( content );
|
|
|
|
};
|
|
|
|
|
|
|
|
editor.wpGetImgCaption = function( content ) {
|
|
|
|
return getShortcode( content );
|
|
|
|
};
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'BeforeSetContent', function( event ) {
|
|
|
|
event.content = editor.wpSetImgCaption( event.content );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
});
|
|
|
|
|
2014-02-11 00:48:12 +01:00
|
|
|
editor.on( 'PostProcess', function( event ) {
|
|
|
|
if ( event.get ) {
|
|
|
|
event.content = editor.wpGetImgCaption( event.content );
|
|
|
|
event.content = event.content.replace( / data-wp-imgselect="1"/g, '' );
|
TinyMCE 4.0.12, first run.
- Removes wp-tinymce-schema.js and mark-loaded.js, no longer needed.
- Removes the inlinepopups and most of the wpdialogs plugins; wpdialog.js is moved to wp-includes/js.
- Adds charmap, compat3x, image, link and textcolor plugins, previously contained in /themes/advanced.
- Updates the wordpress, wpeditimage, wpfullscreen, wpgallery and wplink plugins.
- Updates DFW, wp-admin/js/wp-fullscreen.js.
See #24067.
Built from https://develop.svn.wordpress.org/trunk@26876
git-svn-id: http://core.svn.wordpress.org/trunk@26759 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-12-29 00:53:15 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return {
|
|
|
|
_do_shcode: parseShortcode,
|
|
|
|
_get_shcode: getShortcode
|
|
|
|
};
|
|
|
|
});
|