TinyMCE: fix send_to_editor(). It no longer needs to replace shortcode strings with html placeholers before inserting them in the editor. This is handled properly by the editor's 'BeforeSetContent' event callbacks. See #24067.

git-svn-id: https://develop.svn.wordpress.org/trunk@26945 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Ozz
2014-01-14 23:34:23 +00:00
parent b807bea28c
commit de5ad05a48
2 changed files with 41 additions and 76 deletions

View File

@@ -3,44 +3,34 @@
var wpActiveEditor, send_to_editor;
send_to_editor = function(h) {
var ed, mce = typeof(tinymce) != 'undefined', qt = typeof(QTags) != 'undefined';
send_to_editor = function( html ) {
var editor,
hasTinymce = typeof tinymce !== 'undefined',
hasQuicktags = typeof QTags !== 'undefined';
if ( ! wpActiveEditor ) {
if ( mce && tinymce.activeEditor ) {
ed = tinymce.activeEditor;
wpActiveEditor = ed.id;
} else if ( ! qt ) {
if ( hasTinymce && tinymce.activeEditor ) {
editor = tinymce.activeEditor;
wpActiveEditor = editor.id;
} else if ( ! hasQuicktags ) {
return false;
}
} else if ( mce ) {
ed = tinymce.get( wpActiveEditor );
} else if ( hasTinymce ) {
editor = tinymce.get( wpActiveEditor );
}
if ( ed && ! ed.isHidden() ) {
// restore caret position on IE
// if ( tinymce.isIE && ed.windowManager.insertimagebookmark )
// ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
if ( h.indexOf('[caption') !== -1 ) {
if ( ed.wpSetImgCaption )
h = ed.wpSetImgCaption(h);
} else if ( h.indexOf('[gallery') !== -1 ) {
if ( ed.plugins.wpgallery )
h = ed.plugins.wpgallery._do_gallery(h);
} else if ( h.indexOf('[embed') === 0 ) {
if ( ed.plugins.wordpress )
h = ed.plugins.wordpress._setEmbed(h);
}
ed.execCommand('mceInsertContent', false, h);
} else if ( qt ) {
QTags.insertContent(h);
if ( editor && ! editor.isHidden() ) {
editor.execCommand( 'mceInsertContent', false, html );
} else if ( hasQuicktags ) {
QTags.insertContent( html );
} else {
document.getElementById(wpActiveEditor).value += h;
document.getElementById( wpActiveEditor ).value += html;
}
try{tb_remove();}catch(e){}
// If the old thickbox remove function exists, call it
if ( window.tb_remove ) {
try { window.tb_remove(); } catch( e ) {}
}
};
// thickbox settings
@@ -75,17 +65,5 @@ var tb_position;
};
$(window).resize(function(){ tb_position(); });
/*
// store caret position in IE
$(document).ready(function($){
$('a.thickbox').click(function(){
var ed;
if ( typeof(tinymce) != 'undefined' && tinymce.isIE && ( ed = tinymce.get(wpActiveEditor) ) && !ed.isHidden() ) {
ed.focus();
ed.windowManager.insertimagebookmark = ed.selection.getBookmark();
}
});
});
*/
})(jQuery);

View File

@@ -446,56 +446,43 @@
$( wp.media.featuredImage.init );
wp.media.editor = {
insert: function( h ) {
var mce = typeof(tinymce) != 'undefined',
qt = typeof(QTags) != 'undefined',
wpActiveEditor = window.wpActiveEditor,
ed;
insert: function( html ) {
var editor,
hasTinymce = typeof tinymce !== 'undefined',
hasQuicktags = typeof QTags !== 'undefined',
wpActiveEditor = window.wpActiveEditor;
// Delegate to the global `send_to_editor` if it exists.
// This attempts to play nice with any themes/plugins that have
// overridden the insert functionality.
if ( window.send_to_editor )
if ( window.send_to_editor ) {
return window.send_to_editor.apply( this, arguments );
if ( ! wpActiveEditor ) {
if ( mce && tinymce.activeEditor ) {
ed = tinymce.activeEditor;
wpActiveEditor = window.wpActiveEditor = ed.id;
} else if ( !qt ) {
return false;
}
} else if ( mce ) {
ed = tinymce.get( wpActiveEditor );
}
if ( ed && ! ed.isHidden() ) {
// restore caret position on IE
// if ( tinymce.isIE && ed.windowManager.insertimagebookmark )
// ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
if ( h.indexOf('[caption') !== -1 ) {
if ( ed.wpSetImgCaption )
h = ed.wpSetImgCaption(h);
} else if ( h.indexOf('[gallery') !== -1 ) {
if ( ed.plugins.wpgallery )
h = ed.plugins.wpgallery._do_gallery(h);
} else if ( h.indexOf('[embed') === 0 ) {
if ( ed.plugins.wordpress )
h = ed.plugins.wordpress._setEmbed(h);
if ( ! wpActiveEditor ) {
if ( hasTinymce && tinymce.activeEditor ) {
editor = tinymce.activeEditor;
wpActiveEditor = window.wpActiveEditor = editor.id;
} else if ( ! hasQuicktags ) {
return false;
}
} else if ( hasTinymce ) {
editor = tinymce.get( wpActiveEditor );
}
ed.execCommand('mceInsertContent', false, h);
} else if ( qt ) {
QTags.insertContent(h);
if ( editor && ! editor.isHidden() ) {
editor.execCommand( 'mceInsertContent', false, html );
} else if ( hasQuicktags ) {
QTags.insertContent( html );
} else {
document.getElementById(wpActiveEditor).value += h;
document.getElementById( wpActiveEditor ).value += html;
}
// If the old thickbox remove function exists, call it in case
// a theme/plugin overloaded it.
if ( window.tb_remove )
if ( window.tb_remove ) {
try { window.tb_remove(); } catch( e ) {}
}
},
add: function( id, options ) {