2 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.html or http://ckeditor.com/license
7 * @fileOverview Defines the {@link CKEDITOR.plugins} object, which is used to
8 * manage plugins registration and loading.
12 * Manages plugins registration and loading.
14 * @augments CKEDITOR.resourceManager
17 CKEDITOR
.plugins
= new CKEDITOR
.resourceManager(
18 '_source/' + // @Packager.RemoveLine
19 'plugins/', 'plugin' );
21 // PACKAGER_RENAME( CKEDITOR.plugins )
23 CKEDITOR
.plugins
.load
= CKEDITOR
.tools
.override( CKEDITOR
.plugins
.load
, function( originalLoad
)
25 return function( name
, callback
, scope
)
29 var loadPlugins = function( names
)
31 originalLoad
.call( this, names
, function( plugins
)
33 CKEDITOR
.tools
.extend( allPlugins
, plugins
);
35 var requiredPlugins
= [];
36 for ( var pluginName
in plugins
)
38 var plugin
= plugins
[ pluginName
],
39 requires
= plugin
&& plugin
.requires
;
43 for ( var i
= 0 ; i
< requires
.length
; i
++ )
45 if ( !allPlugins
[ requires
[ i
] ] )
46 requiredPlugins
.push( requires
[ i
] );
51 if ( requiredPlugins
.length
)
52 loadPlugins
.call( this, requiredPlugins
);
55 // Call the "onLoad" function for all plugins.
56 for ( pluginName
in allPlugins
)
58 plugin
= allPlugins
[ pluginName
];
59 if ( plugin
.onLoad
&& !plugin
.onLoad
._called
)
62 plugin
.onLoad
._called
= 1;
68 callback
.call( scope
|| window
, allPlugins
);
75 loadPlugins
.call( this, name
);
80 * Loads a specific language file, or auto detect it. A callback is
81 * then called when the file gets loaded.
82 * @param {String} pluginName The name of the plugin to which the provided translation
84 * @param {String} languageCode The code of the language translation provided.
85 * @param {Object} languageEntries An object that contains pairs of label and
86 * the respective translation.
88 * CKEDITOR.plugins.setLang( 'myPlugin', 'en', {
89 * title : 'My plugin',
90 * selectOption : 'Please select an option'
93 CKEDITOR
.plugins
.setLang = function( pluginName
, languageCode
, languageEntries
)
95 var plugin
= this.get( pluginName
),
96 pluginLangEntries
= plugin
.langEntries
|| ( plugin
.langEntries
= {} ),
97 pluginLang
= plugin
.lang
|| ( plugin
.lang
= [] );
99 if ( CKEDITOR
.tools
.indexOf( pluginLang
, languageCode
) == -1 )
100 pluginLang
.push( languageCode
);
102 pluginLangEntries
[ languageCode
] = languageEntries
;