mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-05-16 01:04:31 +00:00
TinyMCE: update to 4.1.3, changelog: https://github.com/tinymce/tinymce/blob/master/changelog.txt, fixes #29166
git-svn-id: https://develop.svn.wordpress.org/trunk@29458 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -22,7 +22,8 @@
|
||||
(function(tinymce) {
|
||||
var reported;
|
||||
|
||||
function noop() {}
|
||||
function noop() {
|
||||
}
|
||||
|
||||
function log(apiCall) {
|
||||
if (!reported && window && window.console) {
|
||||
@@ -170,7 +171,9 @@
|
||||
onAdd: new Dispatcher(),
|
||||
onPostRender: new Dispatcher(),
|
||||
|
||||
add: function(obj) { return obj; },
|
||||
add: function(obj) {
|
||||
return obj;
|
||||
},
|
||||
createButton: cmNoop,
|
||||
createColorSplitButton: cmNoop,
|
||||
createControl: cmNoop,
|
||||
|
||||
@@ -17,6 +17,7 @@ tinymce.PluginManager.add('media', function(editor, url) {
|
||||
{regex: /youtu\.be\/([\w\-.]+)/, type: 'iframe', w: 425, h: 350, url: '//www.youtube.com/embed/$1'},
|
||||
{regex: /youtube\.com(.+)v=([^&]+)/, type: 'iframe', w: 425, h: 350, url: '//www.youtube.com/embed/$2'},
|
||||
{regex: /vimeo\.com\/([0-9]+)/, type: 'iframe', w: 425, h: 350, url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc'},
|
||||
{regex: /vimeo\.com\/(.*)\/([0-9]+)/, type: "iframe", w: 425, h: 350, url: "//player.vimeo.com/video/$2?title=0&byline=0"},
|
||||
{regex: /maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/, type: 'iframe', w: 425, h: 350, url: '//maps.google.com/maps/ms?msid=$2&output=embed"'}
|
||||
];
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -250,7 +250,7 @@ define("tinymce/pasteplugin/Clipboard", [
|
||||
"tinymce/pasteplugin/Utils"
|
||||
], function(Env, VK, Utils) {
|
||||
return function(editor) {
|
||||
var self = this, pasteBinElm, lastRng, keyboardPasteTimeStamp = 0;
|
||||
var self = this, pasteBinElm, lastRng, keyboardPasteTimeStamp = 0, draggingInternally = false;
|
||||
var pasteBinDefaultContent = '%MCEPASTEBIN%', keyboardPastePlainTextState;
|
||||
|
||||
/**
|
||||
@@ -455,16 +455,20 @@ define("tinymce/pasteplugin/Clipboard", [
|
||||
function getDataTransferItems(dataTransfer) {
|
||||
var data = {};
|
||||
|
||||
if (dataTransfer && dataTransfer.types) {
|
||||
// Use old WebKit API
|
||||
var legacyText = dataTransfer.getData('Text');
|
||||
if (legacyText && legacyText.length > 0) {
|
||||
data['text/plain'] = legacyText;
|
||||
if (dataTransfer) {
|
||||
// Use old WebKit/IE API
|
||||
if (dataTransfer.getData) {
|
||||
var legacyText = dataTransfer.getData('Text');
|
||||
if (legacyText && legacyText.length > 0) {
|
||||
data['text/plain'] = legacyText;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < dataTransfer.types.length; i++) {
|
||||
var contentType = dataTransfer.types[i];
|
||||
data[contentType] = dataTransfer.getData(contentType);
|
||||
if (dataTransfer.types) {
|
||||
for (var i = 0; i < dataTransfer.types.length; i++) {
|
||||
var contentType = dataTransfer.types[i];
|
||||
data[contentType] = dataTransfer.getData(contentType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -675,6 +679,11 @@ define("tinymce/pasteplugin/Clipboard", [
|
||||
|
||||
removePasteBin();
|
||||
|
||||
// If we got nothing from clipboard API and pastebin then we could try the last resort: plain/text
|
||||
if (!content.length) {
|
||||
plainTextMode = true;
|
||||
}
|
||||
|
||||
// Grab plain text from Clipboard API or convert existing HTML to plain text
|
||||
if (plainTextMode) {
|
||||
// Use plain text contents from Clipboard API unless the HTML contains paragraphs then
|
||||
@@ -704,20 +713,14 @@ define("tinymce/pasteplugin/Clipboard", [
|
||||
}, 0);
|
||||
});
|
||||
|
||||
editor.on('dragstart', function(e) {
|
||||
if (e.dataTransfer.types) {
|
||||
try {
|
||||
e.dataTransfer.setData('mce-internal', editor.selection.getContent());
|
||||
} catch (ex) {
|
||||
// IE 10 throws an error since it doesn't support custom data items
|
||||
}
|
||||
}
|
||||
editor.on('dragstart dragend', function(e) {
|
||||
draggingInternally = e.type == 'dragstart';
|
||||
});
|
||||
|
||||
editor.on('drop', function(e) {
|
||||
var rng = getCaretRangeFromEvent(e);
|
||||
|
||||
if (e.isDefaultPrevented()) {
|
||||
if (e.isDefaultPrevented() || draggingInternally) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -725,7 +728,7 @@ define("tinymce/pasteplugin/Clipboard", [
|
||||
return;
|
||||
}
|
||||
|
||||
if (rng) {
|
||||
if (rng && editor.settings.paste_filter_drop !== false) {
|
||||
var dropContent = getDataTransferItems(e.dataTransfer);
|
||||
var content = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];
|
||||
|
||||
@@ -739,6 +742,8 @@ define("tinymce/pasteplugin/Clipboard", [
|
||||
|
||||
editor.selection.setRng(rng);
|
||||
|
||||
content = Utils.trimHtml(content);
|
||||
|
||||
if (!dropContent['text/html']) {
|
||||
pasteText(content);
|
||||
} else {
|
||||
@@ -830,6 +835,38 @@ define("tinymce/pasteplugin/WordFilter", [
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the specified text starts with "1. " or "a. " etc.
|
||||
*/
|
||||
function isNumericList(text) {
|
||||
var found, patterns;
|
||||
|
||||
patterns = [
|
||||
/^[IVXLMCD]{1,2}\.[ \u00a0]/, // Roman upper case
|
||||
/^[ivxlmcd]{1,2}\.[ \u00a0]/, // Roman lower case
|
||||
/^[a-z]{1,2}[\.\)][ \u00a0]/, // Alphabetical a-z
|
||||
/^[A-Z]{1,2}[\.\)][ \u00a0]/, // Alphabetical A-Z
|
||||
/^[0-9]+\.[ \u00a0]/, // Numeric lists
|
||||
/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/, // Japanese
|
||||
/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/ // Chinese
|
||||
];
|
||||
|
||||
text = text.replace(/^[\u00a0 ]+/, '');
|
||||
|
||||
Tools.each(patterns, function(pattern) {
|
||||
if (pattern.test(text)) {
|
||||
found = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
function isBulletList(text) {
|
||||
return /^[\s\u00a0]*[\u2022\u00b7\u00a7\u00d8\u25CF]\s*/.test(text);
|
||||
}
|
||||
|
||||
function WordFilter(editor) {
|
||||
var settings = editor.settings;
|
||||
|
||||
@@ -951,16 +988,15 @@ define("tinymce/pasteplugin/WordFilter", [
|
||||
if (node.name == 'p' && node.firstChild) {
|
||||
// Find first text node in paragraph
|
||||
var nodeText = getText(node);
|
||||
var listStartTextNode = node.firstChild;
|
||||
|
||||
// Detect unordered lists look for bullets
|
||||
if (/^[\s\u00a0]*[\u2022\u00b7\u00a7\u00d8\u25CF]\s*/.test(nodeText)) {
|
||||
if (isBulletList(nodeText)) {
|
||||
convertParagraphToLi(node, 'ul');
|
||||
continue;
|
||||
}
|
||||
|
||||
// Detect ordered lists 1., a. or ixv.
|
||||
if (/^[\s\u00a0]*\w+\./.test(nodeText) && !/^[\s\u00a0]*\w+\.\s*[^\s]+/.test(listStartTextNode.value)) {
|
||||
if (isNumericList(nodeText)) {
|
||||
// Parse OL start number
|
||||
var matches = /([0-9])\./.exec(nodeText);
|
||||
var start = 1;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -33,11 +33,16 @@ tinymce.PluginManager.add( 'wpautoresize', function( editor ) {
|
||||
return;
|
||||
}
|
||||
|
||||
function getInt( n ) {
|
||||
return parseInt( n, 10 ) || 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method gets executed each time the editor needs to resize.
|
||||
*/
|
||||
function resize( e ) {
|
||||
var deltaSize, doc, body, docElm, DOM = tinymce.DOM, resizeHeight, myHeight, marginTop, marginBottom;
|
||||
var deltaSize, doc, body, docElm, DOM = tinymce.DOM, resizeHeight, myHeight,
|
||||
marginTop, marginBottom, paddingTop, paddingBottom, borderTop, borderBottom;
|
||||
|
||||
if ( ! isActive ) {
|
||||
return;
|
||||
@@ -65,7 +70,13 @@ tinymce.PluginManager.add( 'wpautoresize', function( editor ) {
|
||||
// Calculate outer height of the body element using CSS styles
|
||||
marginTop = editor.dom.getStyle( body, 'margin-top', true );
|
||||
marginBottom = editor.dom.getStyle( body, 'margin-bottom', true );
|
||||
myHeight = body.offsetHeight + parseInt( marginTop, 10 ) + parseInt( marginBottom, 10 );
|
||||
paddingTop = editor.dom.getStyle( body, 'padding-top', true );
|
||||
paddingBottom = editor.dom.getStyle( body, 'padding-bottom', true );
|
||||
borderTop = editor.dom.getStyle( body, 'border-top-width', true );
|
||||
borderBottom = editor.dom.getStyle( body, 'border-bottom-width', true );
|
||||
myHeight = body.offsetHeight + getInt( marginTop ) + getInt( marginBottom ) +
|
||||
getInt( paddingTop ) + getInt( paddingBottom ) +
|
||||
getInt( borderTop ) + getInt( borderBottom );
|
||||
|
||||
// IE < 11, other?
|
||||
if ( myHeight && myHeight < docElm.offsetHeight ) {
|
||||
@@ -97,7 +108,7 @@ tinymce.PluginManager.add( 'wpautoresize', function( editor ) {
|
||||
// Resize content element
|
||||
if (resizeHeight !== oldSize) {
|
||||
deltaSize = resizeHeight - oldSize;
|
||||
DOM.setStyle( DOM.get( editor.id + '_ifr'), 'height', resizeHeight + 'px' );
|
||||
DOM.setStyle( editor.iframeElement, 'height', resizeHeight + 'px' );
|
||||
oldSize = resizeHeight;
|
||||
|
||||
// WebKit doesn't decrease the size of the body element until the iframe gets resized
|
||||
|
||||
Reference in New Issue
Block a user