1 /* 2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 6 /** 7 * @fileOverview Defines the {@link CKEDITOR.plugins} object, which is used to 8 * manage plugins registration and loading. 9 */ 10 11 /** 12 * Manages plugins registration and loading. 13 * @namespace 14 * @augments CKEDITOR.resourceManager 15 * @example 16 */ 17 CKEDITOR.plugins = new CKEDITOR.resourceManager( 19 'plugins/', 'plugin' ); 20 21 CKEDITOR.plugins.load = CKEDITOR.tools.override( CKEDITOR.plugins.load, function( originalLoad ) 22 { 23 return function( name, callback, scope ) 24 { 25 var allPlugins = {}; 26 27 var loadPlugins = function( names ) 28 { 29 originalLoad.call( this, names, function( plugins ) 30 { 31 CKEDITOR.tools.extend( allPlugins, plugins ); 32 33 var requiredPlugins = []; 34 for ( var pluginName in plugins ) 35 { 36 var plugin = plugins[ pluginName ], 37 requires = plugin && plugin.requires; 38 39 if ( requires ) 40 { 41 for ( var i = 0 ; i < requires.length ; i++ ) 42 { 43 if ( !allPlugins[ requires[ i ] ] ) 44 requiredPlugins.push( requires[ i ] ); 45 } 46 } 47 } 48 49 if ( requiredPlugins.length ) 50 loadPlugins.call( this, requiredPlugins ); 51 else if ( callback ) 52 callback.call( scope || window, allPlugins ); 53 } 54 , this); 55 56 }; 57 58 loadPlugins.call( this, name ); 59 }; 60 }); 61 62 CKEDITOR.plugins.setLang = function( pluginName, languageCode, languageEntries ) 63 { 64 var plugin = this.get( pluginName ); 65 plugin.lang[ languageCode ] = languageEntries; 66 }; 67