12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /**
- * Created with JetBrains PhpStorm.
- * User: campaign
- * Date: 10/8/13
- * Time: 6:15 PM
- * To change this template use File | Settings | File Templates.
- */
- UE.plugin = (function() {
- var _plugins = {};
- return {
- register: function(pluginName, fn, oldOptionName, afterDisabled) {
- if (oldOptionName && utils.isFunction(oldOptionName)) {
- afterDisabled = oldOptionName;
- oldOptionName = null;
- }
- _plugins[pluginName] = {
- optionName: oldOptionName || pluginName,
- execFn: fn,
- //当插件被禁用时执行
- afterDisabled: afterDisabled
- };
- },
- load: function(editor) {
- utils.each(_plugins, function(plugin) {
- var _export = plugin.execFn.call(editor);
- if (editor.options[plugin.optionName] !== false) {
- if (_export) {
- //后边需要再做扩展
- utils.each(_export, function(v, k) {
- switch (k.toLowerCase()) {
- case "shortcutkey":
- editor.addshortcutkey(v);
- break;
- case "bindevents":
- utils.each(v, function(fn, eventName) {
- editor.addListener(eventName, fn);
- });
- break;
- case "bindmultievents":
- utils.each(utils.isArray(v) ? v : [v], function(event) {
- var types = utils.trim(event.type).split(/\s+/);
- utils.each(types, function(eventName) {
- editor.addListener(eventName, event.handler);
- });
- });
- break;
- case "commands":
- utils.each(v, function(execFn, execName) {
- editor.commands[execName] = execFn;
- });
- break;
- case "outputrule":
- editor.addOutputRule(v);
- break;
- case "inputrule":
- editor.addInputRule(v);
- break;
- case "defaultoptions":
- editor.setOpt(v);
- }
- });
- }
- } else if (plugin.afterDisabled) {
- plugin.afterDisabled.call(editor);
- }
- });
- //向下兼容
- utils.each(UE.plugins, function(plugin) {
- plugin.call(editor);
- });
- },
- run: function(pluginName, editor) {
- var plugin = _plugins[pluginName];
- if (plugin) {
- plugin.exeFn.call(editor);
- }
- }
- };
- })();
|