Edit File by line
/home/zeestwma/ceyloniy.../wp-inclu.../js/tinymce/plugins/compat3x
File: plugin.js
/**
[0] Fix | Delete
* plugin.js
[1] Fix | Delete
*
[2] Fix | Delete
* Released under LGPL License.
[3] Fix | Delete
* Copyright (c) 1999-2017 Ephox Corp. All rights reserved
[4] Fix | Delete
*
[5] Fix | Delete
* License: http://www.tinymce.com/license
[6] Fix | Delete
* Contributing: http://www.tinymce.com/contributing
[7] Fix | Delete
*/
[8] Fix | Delete
[9] Fix | Delete
/*global tinymce:true, console:true */
[10] Fix | Delete
/*eslint no-console:0, new-cap:0 */
[11] Fix | Delete
[12] Fix | Delete
/**
[13] Fix | Delete
* This plugin adds missing events form the 4.x API back. Not every event is
[14] Fix | Delete
* properly supported but most things should work.
[15] Fix | Delete
*
[16] Fix | Delete
* Unsupported things:
[17] Fix | Delete
* - No editor.onEvent
[18] Fix | Delete
* - Can't cancel execCommands with beforeExecCommand
[19] Fix | Delete
*/
[20] Fix | Delete
(function (tinymce) {
[21] Fix | Delete
var reported;
[22] Fix | Delete
[23] Fix | Delete
function noop() {
[24] Fix | Delete
}
[25] Fix | Delete
[26] Fix | Delete
function log(apiCall) {
[27] Fix | Delete
if (!reported && window && window.console) {
[28] Fix | Delete
reported = true;
[29] Fix | Delete
console.log("Deprecated TinyMCE API call: " + apiCall);
[30] Fix | Delete
}
[31] Fix | Delete
}
[32] Fix | Delete
[33] Fix | Delete
function Dispatcher(target, newEventName, argsMap, defaultScope) {
[34] Fix | Delete
target = target || this;
[35] Fix | Delete
var cbs = [];
[36] Fix | Delete
[37] Fix | Delete
if (!newEventName) {
[38] Fix | Delete
this.add = this.addToTop = this.remove = this.dispatch = noop;
[39] Fix | Delete
return;
[40] Fix | Delete
}
[41] Fix | Delete
[42] Fix | Delete
this.add = function (callback, scope, prepend) {
[43] Fix | Delete
log('<target>.on' + newEventName + ".add(..)");
[44] Fix | Delete
[45] Fix | Delete
// Convert callback({arg1:x, arg2:x}) -> callback(arg1, arg2)
[46] Fix | Delete
function patchedEventCallback(e) {
[47] Fix | Delete
var callbackArgs = [];
[48] Fix | Delete
[49] Fix | Delete
if (typeof argsMap == "string") {
[50] Fix | Delete
argsMap = argsMap.split(" ");
[51] Fix | Delete
}
[52] Fix | Delete
[53] Fix | Delete
if (argsMap && typeof argsMap !== "function") {
[54] Fix | Delete
for (var i = 0; i < argsMap.length; i++) {
[55] Fix | Delete
callbackArgs.push(e[argsMap[i]]);
[56] Fix | Delete
}
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
if (typeof argsMap == "function") {
[60] Fix | Delete
callbackArgs = argsMap(newEventName, e, target);
[61] Fix | Delete
if (!callbackArgs) {
[62] Fix | Delete
return;
[63] Fix | Delete
}
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
if (!argsMap) {
[67] Fix | Delete
callbackArgs = [e];
[68] Fix | Delete
}
[69] Fix | Delete
[70] Fix | Delete
callbackArgs.unshift(defaultScope || target);
[71] Fix | Delete
[72] Fix | Delete
if (callback.apply(scope || defaultScope || target, callbackArgs) === false) {
[73] Fix | Delete
e.stopImmediatePropagation();
[74] Fix | Delete
}
[75] Fix | Delete
}
[76] Fix | Delete
[77] Fix | Delete
target.on(newEventName, patchedEventCallback, prepend);
[78] Fix | Delete
[79] Fix | Delete
var handlers = {
[80] Fix | Delete
original: callback,
[81] Fix | Delete
patched: patchedEventCallback
[82] Fix | Delete
};
[83] Fix | Delete
[84] Fix | Delete
cbs.push(handlers);
[85] Fix | Delete
return patchedEventCallback;
[86] Fix | Delete
};
[87] Fix | Delete
[88] Fix | Delete
this.addToTop = function (callback, scope) {
[89] Fix | Delete
this.add(callback, scope, true);
[90] Fix | Delete
};
[91] Fix | Delete
[92] Fix | Delete
this.remove = function (callback) {
[93] Fix | Delete
cbs.forEach(function (item, i) {
[94] Fix | Delete
if (item.original === callback) {
[95] Fix | Delete
cbs.splice(i, 1);
[96] Fix | Delete
return target.off(newEventName, item.patched);
[97] Fix | Delete
}
[98] Fix | Delete
});
[99] Fix | Delete
[100] Fix | Delete
return target.off(newEventName, callback);
[101] Fix | Delete
};
[102] Fix | Delete
[103] Fix | Delete
this.dispatch = function () {
[104] Fix | Delete
target.fire(newEventName);
[105] Fix | Delete
return true;
[106] Fix | Delete
};
[107] Fix | Delete
}
[108] Fix | Delete
[109] Fix | Delete
tinymce.util.Dispatcher = Dispatcher;
[110] Fix | Delete
tinymce.onBeforeUnload = new Dispatcher(tinymce, "BeforeUnload");
[111] Fix | Delete
tinymce.onAddEditor = new Dispatcher(tinymce, "AddEditor", "editor");
[112] Fix | Delete
tinymce.onRemoveEditor = new Dispatcher(tinymce, "RemoveEditor", "editor");
[113] Fix | Delete
[114] Fix | Delete
tinymce.util.Cookie = {
[115] Fix | Delete
get: noop, getHash: noop, remove: noop, set: noop, setHash: noop
[116] Fix | Delete
};
[117] Fix | Delete
[118] Fix | Delete
function patchEditor(editor) {
[119] Fix | Delete
[120] Fix | Delete
function translate(str) {
[121] Fix | Delete
var prefix = editor.settings.language || "en";
[122] Fix | Delete
var prefixedStr = [prefix, str].join('.');
[123] Fix | Delete
var translatedStr = tinymce.i18n.translate(prefixedStr);
[124] Fix | Delete
[125] Fix | Delete
return prefixedStr !== translatedStr ? translatedStr : tinymce.i18n.translate(str);
[126] Fix | Delete
}
[127] Fix | Delete
[128] Fix | Delete
function patchEditorEvents(oldEventNames, argsMap) {
[129] Fix | Delete
tinymce.each(oldEventNames.split(" "), function (oldName) {
[130] Fix | Delete
editor["on" + oldName] = new Dispatcher(editor, oldName, argsMap);
[131] Fix | Delete
});
[132] Fix | Delete
}
[133] Fix | Delete
[134] Fix | Delete
function convertUndoEventArgs(type, event, target) {
[135] Fix | Delete
return [
[136] Fix | Delete
event.level,
[137] Fix | Delete
target
[138] Fix | Delete
];
[139] Fix | Delete
}
[140] Fix | Delete
[141] Fix | Delete
function filterSelectionEvents(needsSelection) {
[142] Fix | Delete
return function (type, e) {
[143] Fix | Delete
if ((!e.selection && !needsSelection) || e.selection == needsSelection) {
[144] Fix | Delete
return [e];
[145] Fix | Delete
}
[146] Fix | Delete
};
[147] Fix | Delete
}
[148] Fix | Delete
[149] Fix | Delete
if (editor.controlManager) {
[150] Fix | Delete
return;
[151] Fix | Delete
}
[152] Fix | Delete
[153] Fix | Delete
function cmNoop() {
[154] Fix | Delete
var obj = {}, methods = 'add addMenu addSeparator collapse createMenu destroy displayColor expand focus ' +
[155] Fix | Delete
'getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark ' +
[156] Fix | Delete
'postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex ' +
[157] Fix | Delete
'setActive setAriaProperty setColor setDisabled setSelected setState showMenu update';
[158] Fix | Delete
[159] Fix | Delete
log('editor.controlManager.*');
[160] Fix | Delete
[161] Fix | Delete
function _noop() {
[162] Fix | Delete
return cmNoop();
[163] Fix | Delete
}
[164] Fix | Delete
[165] Fix | Delete
tinymce.each(methods.split(' '), function (method) {
[166] Fix | Delete
obj[method] = _noop;
[167] Fix | Delete
});
[168] Fix | Delete
[169] Fix | Delete
return obj;
[170] Fix | Delete
}
[171] Fix | Delete
[172] Fix | Delete
editor.controlManager = {
[173] Fix | Delete
buttons: {},
[174] Fix | Delete
[175] Fix | Delete
setDisabled: function (name, state) {
[176] Fix | Delete
log("controlManager.setDisabled(..)");
[177] Fix | Delete
[178] Fix | Delete
if (this.buttons[name]) {
[179] Fix | Delete
this.buttons[name].disabled(state);
[180] Fix | Delete
}
[181] Fix | Delete
},
[182] Fix | Delete
[183] Fix | Delete
setActive: function (name, state) {
[184] Fix | Delete
log("controlManager.setActive(..)");
[185] Fix | Delete
[186] Fix | Delete
if (this.buttons[name]) {
[187] Fix | Delete
this.buttons[name].active(state);
[188] Fix | Delete
}
[189] Fix | Delete
},
[190] Fix | Delete
[191] Fix | Delete
onAdd: new Dispatcher(),
[192] Fix | Delete
onPostRender: new Dispatcher(),
[193] Fix | Delete
[194] Fix | Delete
add: function (obj) {
[195] Fix | Delete
return obj;
[196] Fix | Delete
},
[197] Fix | Delete
createButton: cmNoop,
[198] Fix | Delete
createColorSplitButton: cmNoop,
[199] Fix | Delete
createControl: cmNoop,
[200] Fix | Delete
createDropMenu: cmNoop,
[201] Fix | Delete
createListBox: cmNoop,
[202] Fix | Delete
createMenuButton: cmNoop,
[203] Fix | Delete
createSeparator: cmNoop,
[204] Fix | Delete
createSplitButton: cmNoop,
[205] Fix | Delete
createToolbar: cmNoop,
[206] Fix | Delete
createToolbarGroup: cmNoop,
[207] Fix | Delete
destroy: noop,
[208] Fix | Delete
get: noop,
[209] Fix | Delete
setControlType: cmNoop
[210] Fix | Delete
};
[211] Fix | Delete
[212] Fix | Delete
patchEditorEvents("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate", "editor");
[213] Fix | Delete
patchEditorEvents("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset");
[214] Fix | Delete
patchEditorEvents("BeforeExecCommand ExecCommand", "command ui value args"); // args.terminate not supported
[215] Fix | Delete
patchEditorEvents("PreProcess PostProcess LoadContent SaveContent Change");
[216] Fix | Delete
patchEditorEvents("BeforeSetContent BeforeGetContent SetContent GetContent", filterSelectionEvents(false));
[217] Fix | Delete
patchEditorEvents("SetProgressState", "state time");
[218] Fix | Delete
patchEditorEvents("VisualAid", "element hasVisual");
[219] Fix | Delete
patchEditorEvents("Undo Redo", convertUndoEventArgs);
[220] Fix | Delete
[221] Fix | Delete
patchEditorEvents("NodeChange", function (type, e) {
[222] Fix | Delete
return [
[223] Fix | Delete
editor.controlManager,
[224] Fix | Delete
e.element,
[225] Fix | Delete
editor.selection.isCollapsed(),
[226] Fix | Delete
e
[227] Fix | Delete
];
[228] Fix | Delete
});
[229] Fix | Delete
[230] Fix | Delete
var originalAddButton = editor.addButton;
[231] Fix | Delete
editor.addButton = function (name, settings) {
[232] Fix | Delete
var originalOnPostRender;
[233] Fix | Delete
[234] Fix | Delete
function patchedPostRender() {
[235] Fix | Delete
editor.controlManager.buttons[name] = this;
[236] Fix | Delete
[237] Fix | Delete
if (originalOnPostRender) {
[238] Fix | Delete
return originalOnPostRender.apply(this, arguments);
[239] Fix | Delete
}
[240] Fix | Delete
}
[241] Fix | Delete
[242] Fix | Delete
for (var key in settings) {
[243] Fix | Delete
if (key.toLowerCase() === "onpostrender") {
[244] Fix | Delete
originalOnPostRender = settings[key];
[245] Fix | Delete
settings.onPostRender = patchedPostRender;
[246] Fix | Delete
}
[247] Fix | Delete
}
[248] Fix | Delete
[249] Fix | Delete
if (!originalOnPostRender) {
[250] Fix | Delete
settings.onPostRender = patchedPostRender;
[251] Fix | Delete
}
[252] Fix | Delete
[253] Fix | Delete
if (settings.title) {
[254] Fix | Delete
settings.title = translate(settings.title);
[255] Fix | Delete
}
[256] Fix | Delete
[257] Fix | Delete
return originalAddButton.call(this, name, settings);
[258] Fix | Delete
};
[259] Fix | Delete
[260] Fix | Delete
editor.on('init', function () {
[261] Fix | Delete
var undoManager = editor.undoManager, selection = editor.selection;
[262] Fix | Delete
[263] Fix | Delete
undoManager.onUndo = new Dispatcher(editor, "Undo", convertUndoEventArgs, null, undoManager);
[264] Fix | Delete
undoManager.onRedo = new Dispatcher(editor, "Redo", convertUndoEventArgs, null, undoManager);
[265] Fix | Delete
undoManager.onBeforeAdd = new Dispatcher(editor, "BeforeAddUndo", null, undoManager);
[266] Fix | Delete
undoManager.onAdd = new Dispatcher(editor, "AddUndo", null, undoManager);
[267] Fix | Delete
[268] Fix | Delete
selection.onBeforeGetContent = new Dispatcher(editor, "BeforeGetContent", filterSelectionEvents(true), selection);
[269] Fix | Delete
selection.onGetContent = new Dispatcher(editor, "GetContent", filterSelectionEvents(true), selection);
[270] Fix | Delete
selection.onBeforeSetContent = new Dispatcher(editor, "BeforeSetContent", filterSelectionEvents(true), selection);
[271] Fix | Delete
selection.onSetContent = new Dispatcher(editor, "SetContent", filterSelectionEvents(true), selection);
[272] Fix | Delete
});
[273] Fix | Delete
[274] Fix | Delete
editor.on('BeforeRenderUI', function () {
[275] Fix | Delete
var windowManager = editor.windowManager;
[276] Fix | Delete
[277] Fix | Delete
windowManager.onOpen = new Dispatcher();
[278] Fix | Delete
windowManager.onClose = new Dispatcher();
[279] Fix | Delete
windowManager.createInstance = function (className, a, b, c, d, e) {
[280] Fix | Delete
log("windowManager.createInstance(..)");
[281] Fix | Delete
[282] Fix | Delete
var constr = tinymce.resolve(className);
[283] Fix | Delete
return new constr(a, b, c, d, e);
[284] Fix | Delete
};
[285] Fix | Delete
});
[286] Fix | Delete
}
[287] Fix | Delete
[288] Fix | Delete
tinymce.on('SetupEditor', function (e) {
[289] Fix | Delete
patchEditor(e.editor);
[290] Fix | Delete
});
[291] Fix | Delete
[292] Fix | Delete
tinymce.PluginManager.add("compat3x", patchEditor);
[293] Fix | Delete
[294] Fix | Delete
tinymce.addI18n = function (prefix, o) {
[295] Fix | Delete
var I18n = tinymce.util.I18n, each = tinymce.each;
[296] Fix | Delete
[297] Fix | Delete
if (typeof prefix == "string" && prefix.indexOf('.') === -1) {
[298] Fix | Delete
I18n.add(prefix, o);
[299] Fix | Delete
return;
[300] Fix | Delete
}
[301] Fix | Delete
[302] Fix | Delete
if (!tinymce.is(prefix, 'string')) {
[303] Fix | Delete
each(prefix, function (o, lc) {
[304] Fix | Delete
each(o, function (o, g) {
[305] Fix | Delete
each(o, function (o, k) {
[306] Fix | Delete
if (g === 'common') {
[307] Fix | Delete
I18n.data[lc + '.' + k] = o;
[308] Fix | Delete
} else {
[309] Fix | Delete
I18n.data[lc + '.' + g + '.' + k] = o;
[310] Fix | Delete
}
[311] Fix | Delete
});
[312] Fix | Delete
});
[313] Fix | Delete
});
[314] Fix | Delete
} else {
[315] Fix | Delete
each(o, function (o, k) {
[316] Fix | Delete
I18n.data[prefix + '.' + k] = o;
[317] Fix | Delete
});
[318] Fix | Delete
}
[319] Fix | Delete
};
[320] Fix | Delete
})(tinymce);
[321] Fix | Delete
[322] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function