TinyMCE: fix the More and Next Page tags behavior:
- Append them inside top level <p> tags. - If the caret is not in a top level <p>, create new paragraph after the current top level tag. - Do not change placement when edited in the Text editor. See #27378 Built from https://develop.svn.wordpress.org/trunk@27729 git-svn-id: http://core.svn.wordpress.org/trunk@27566 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
339a33bb45
commit
c66f166956
|
@ -643,7 +643,7 @@ function edButton(id, display, tagStart, tagEnd, access) {
|
|||
edButtons[90] = new qt.TagButton('ol','ol','<ol>\n','</ol>\n\n','o'),
|
||||
edButtons[100] = new qt.TagButton('li','li','\t<li>','</li>\n','l'),
|
||||
edButtons[110] = new qt.TagButton('code','code','<code>','</code>','c'),
|
||||
edButtons[120] = new qt.TagButton('more','more','\n\n<!--more-->\n\n','','t'),
|
||||
edButtons[120] = new qt.TagButton('more','more','<!--more-->\n\n','','t'),
|
||||
edButtons[140] = new qt.CloseButton();
|
||||
|
||||
})();
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -130,32 +130,10 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
|
|||
}
|
||||
});
|
||||
|
||||
// Make sure the "more" tag is in a separate paragraph
|
||||
editor.on( 'PreProcess', function( event ) {
|
||||
var more;
|
||||
|
||||
if ( event.save ) {
|
||||
more = editor.dom.select( 'img.wp-more-tag', event.node );
|
||||
|
||||
if ( more.length ) {
|
||||
tinymce.each( more, function( node ) {
|
||||
var parent = node.parentNode, p;
|
||||
|
||||
if ( parent.nodeName === 'P' && parent.childNodes.length > 1 ) {
|
||||
p = editor.dom.create('p');
|
||||
parent.parentNode.insertBefore( p, parent );
|
||||
p.appendChild( node );
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Register commands
|
||||
editor.addCommand( 'WP_More', function( tag ) {
|
||||
var parent, html, title, p1, p2,
|
||||
var parent, html, title,
|
||||
classname = 'wp-more-tag',
|
||||
spacer = tinymce.Env.ie ? '' : '<br data-mce-bogus="1" />',
|
||||
dom = editor.dom,
|
||||
node = editor.selection.getNode();
|
||||
|
||||
|
@ -165,8 +143,9 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
|
|||
html = '<img src="' + tinymce.Env.transparentSrc + '" title="' + title + '" class="' + classname + '" ' +
|
||||
'data-mce-resize="false" data-mce-placeholder="1" />';
|
||||
|
||||
if ( node.nodeName === 'BODY' ) {
|
||||
editor.insertContent( '<p>' + html + '</p><p></p>' );
|
||||
// Most common case
|
||||
if ( node.nodeName === 'BODY' || ( node.nodeName === 'P' && node.parentNode.nodeName === 'BODY' ) ) {
|
||||
editor.insertContent( html );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -180,16 +159,13 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
|
|||
}, editor.getBody() );
|
||||
|
||||
if ( parent ) {
|
||||
p1 = dom.create( 'p', null, html );
|
||||
dom.insertAfter( p1, parent );
|
||||
|
||||
if ( ! ( p2 = p1.nextSibling ) ) {
|
||||
p2 = dom.create( 'p', null, spacer );
|
||||
dom.insertAfter( p2, p1 );
|
||||
if ( parent.nodeName === 'P' ) {
|
||||
parent.appendChild( dom.create( 'p', null, html ).firstChild );
|
||||
} else {
|
||||
dom.insertAfter( dom.create( 'p', null, html ), parent );
|
||||
}
|
||||
|
||||
editor.nodeChanged();
|
||||
editor.selection.setCursorLocation( p2, 0 );
|
||||
}
|
||||
});
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Loading…
Reference in New Issue