Вход Регистрация
Файл: wordpress/wp-includes/js/tinymce/plugins/compat3x/plugin.js
Строк: 488
<?php
/**
 * plugin.js
 *
 * Copyright, Moxiecode Systems AB
 * Released under LGPL License.
 *
 * License: http://www.tinymce.com/license
 * Contributing: http://www.tinymce.com/contributing
 */

/*global tinymce:true, console:true */
/*eslint no-console:0, new-cap:0 */

/**
 * This plugin adds missing events form the 4.x API back. Not every event is
 * properly supported but most things should work.
 *
 * Unsupported things:
 *  - No editor.onEvent
 *  - Can't cancel execCommands with beforeExecCommand
 */
(function(tinymce) {
    var 
reported;

    function 
noop() {
    }

    function 
log(apiCall) {
        if (!
reported && window && window.console) {
            
reported true;
            
console.log("Deprecated TinyMCE API call: " apiCall);
        }
    }

    function 
Dispatcher(targetnewEventNameargsMapdefaultScope) {
        
target target || this;

        if (!
newEventName) {
            
this.add this.addToTop this.remove this.dispatch noop;
            return;
        }

        
this.add = function(callbackscopeprepend) {
            
log('<target>.on' newEventName ".add(..)");

            
// Convert callback({arg1:x, arg2:x}) -> callback(arg1, arg2)
            
function patchedEventCallback(e) {
                var 
callbackArgs = [];

                if (
typeof argsMap == "string") {
                    
argsMap argsMap.split(" ");
                }

                if (
argsMap && typeof argsMap != "function") {
                    for (var 
0argsMap.lengthi++) {
                        
callbackArgs.push(e[argsMap[i]]);
                    }
                }

                if (
typeof argsMap == "function") {
                    
callbackArgs argsMap(newEventNameetarget);
                    if (!
callbackArgs) {
                        return;
                    }
                }

                if (!
argsMap) {
                    
callbackArgs = [e];
                }

                
callbackArgs.unshift(defaultScope || target);

                if (
callback.apply(scope || defaultScope || targetcallbackArgs) === false) {
                    
e.stopImmediatePropagation();
                }
            }

            
target.on(newEventNamepatchedEventCallbackprepend);

            return 
patchedEventCallback;
        };

        
this.addToTop = function(callbackscope) {
            
this.add(callbackscopetrue);
        };

        
this.remove = function(callback) {
            return 
target.off(newEventNamecallback);
        };

        
this.dispatch = function() {
            
target.fire(newEventName);

            return 
true;
        };
    }

    
tinymce.util.Dispatcher Dispatcher;
    
tinymce.onBeforeUnload = new Dispatcher(tinymce"BeforeUnload");
    
tinymce.onAddEditor = new Dispatcher(tinymce"AddEditor""editor");
    
tinymce.onRemoveEditor = new Dispatcher(tinymce"RemoveEditor""editor");

    
tinymce.util.Cookie = {
        
getnoopgetHashnoopremovenoopsetnoopsetHashnoop
    
};

    function 
patchEditor(editor) {
        function 
patchEditorEvents(oldEventNamesargsMap) {
            
tinymce.each(oldEventNames.split(" "), function(oldName) {
                
editor["on" oldName] = new Dispatcher(editoroldNameargsMap);
            });
        }

        function 
convertUndoEventArgs(typeeventtarget) {
            return [
                
event.level,
                
target
            
];
        }

        function 
filterSelectionEvents(needsSelection) {
            return function(
typee) {
                if ((!
e.selection && !needsSelection) || e.selection == needsSelection) {
                    return [
e];
                }
            };
        }

        if (
editor.controlManager) {
            return;
        }

        function 
cmNoop() {
            var 
obj = {}, methods 'add addMenu addSeparator collapse createMenu destroy displayColor expand focus ' +
                
'getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark ' +
                
'postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex ' +
                
'setActive setAriaProperty setColor setDisabled setSelected setState showMenu update';

            
log('editor.controlManager.*');

            function 
_noop() {
                return 
cmNoop();
            }

            
tinymce.each(methods.split(' '), function(method) {
                
obj[method] = _noop;
            });

            return 
obj;
        }

        
editor.controlManager = {
            
buttons: {},

            
setDisabled: function(namestate) {
                
log("controlManager.setDisabled(..)");

                if (
this.buttons[name]) {
                    
this.buttons[name].disabled(state);
                }
            },

            
setActive: function(namestate) {
                
log("controlManager.setActive(..)");

                if (
this.buttons[name]) {
                    
this.buttons[name].active(state);
                }
            },

            
onAdd: new Dispatcher(),
            
onPostRender: new Dispatcher(),

            
add: function(obj) {
                return 
obj;
            },
            
createButtoncmNoop,
            
createColorSplitButtoncmNoop,
            
createControlcmNoop,
            
createDropMenucmNoop,
            
createListBoxcmNoop,
            
createMenuButtoncmNoop,
            
createSeparatorcmNoop,
            
createSplitButtoncmNoop,
            
createToolbarcmNoop,
            
createToolbarGroupcmNoop,
            
destroynoop,
            
getnoop,
            
setControlTypecmNoop
        
};

        
patchEditorEvents("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate""editor");
        
patchEditorEvents("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset");
        
patchEditorEvents("BeforeExecCommand ExecCommand""command ui value args"); // args.terminate not supported
        
patchEditorEvents("PreProcess PostProcess LoadContent SaveContent Change");
        
patchEditorEvents("BeforeSetContent BeforeGetContent SetContent GetContent"filterSelectionEvents(false));
        
patchEditorEvents("SetProgressState""state time");
        
patchEditorEvents("VisualAid""element hasVisual");
        
patchEditorEvents("Undo Redo"convertUndoEventArgs);

        
patchEditorEvents("NodeChange", function(typee) {
            return [
                
editor.controlManager,
                
e.element,
                
editor.selection.isCollapsed(),
                
e
            
];
        });

        var 
originalAddButton editor.addButton;
        
editor.addButton = function(namesettings) {
            var 
originalOnPostRenderstringtranslated;

            function 
patchedPostRender() {
                
editor.controlManager.buttons[name] = this;

                if (
originalOnPostRender) {
                    return 
originalOnPostRender.call(this);
                }
            }

            for (var 
key in settings) {
                if (
key.toLowerCase() === "onpostrender") {
                    
originalOnPostRender settings[key];
                    
settings.onPostRender patchedPostRender;
                }
            }

            if (!
originalOnPostRender) {
                
settings.onPostRender patchedPostRender;
            }

            if ( 
settings.title ) {
                
// WP
                
string = (editor.settings.language || "en") + "." settings.title;
                
translated tinymce.i18n.translate(string);

                if ( 
string !== translated ) {
                    
settings.title translated;
                }
                
// WP end
            
}

            return 
originalAddButton.call(thisnamesettings);
        };

        
editor.on('init', function() {
            var 
undoManager editor.undoManagerselection editor.selection;

            
undoManager.onUndo = new Dispatcher(editor"Undo"convertUndoEventArgsnullundoManager);
            
undoManager.onRedo = new Dispatcher(editor"Redo"convertUndoEventArgsnullundoManager);
            
undoManager.onBeforeAdd = new Dispatcher(editor"BeforeAddUndo"nullundoManager);
            
undoManager.onAdd = new Dispatcher(editor"AddUndo"nullundoManager);

            
selection.onBeforeGetContent = new Dispatcher(editor"BeforeGetContent"filterSelectionEvents(true), selection);
            
selection.onGetContent = new Dispatcher(editor"GetContent"filterSelectionEvents(true), selection);
            
selection.onBeforeSetContent = new Dispatcher(editor"BeforeSetContent"filterSelectionEvents(true), selection);
            
selection.onSetContent = new Dispatcher(editor"SetContent"filterSelectionEvents(true), selection);
        });

        
editor.on('BeforeRenderUI', function() {
            var 
windowManager editor.windowManager;

            
windowManager.onOpen = new Dispatcher();
            
windowManager.onClose = new Dispatcher();
            
windowManager.createInstance = function(classNameabcde) {
                
log("windowManager.createInstance(..)");

                var 
constr tinymce.resolve(className);
                return new 
constr(abcde);
            };
        });
    }

    
tinymce.on('SetupEditor'patchEditor);
    
tinymce.PluginManager.add("compat3x"patchEditor);

    
tinymce.addI18n = function(prefixo) {
        var 
I18n tinymce.util.I18neach tinymce.each;

        if (
typeof(prefix) == "string" && prefix.indexOf('.') === -1) {
            
I18n.add(prefixo);
            return;
        }

        if (!
tinymce.is(prefix'string')) {
            
each(prefix, function(olc) {
                
each(o, function(og) {
                    
each(o, function(ok) {
                        if (
=== 'common') {
                            
I18n.data[lc '.' k] = o;
                        } else {
                            
I18n.data[lc '.' '.' k] = o;
                        }
                    });
                });
            });
        } else {
            
each(o, function(ok) {
                
I18n.data[prefix '.' k] = o;
            });
        }
    };
})(
tinymce);
?>
Онлайн: 1
Реклама