mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
ef10672364
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@92488 467b73ca-7a2a-4603-9d3b-597d59a354a9
95 lines
2.5 KiB
JavaScript
95 lines
2.5 KiB
JavaScript
/**
|
|
* $Id: PluginManager.js 352 2007-11-05 17:03:49Z spocke $
|
|
*
|
|
* @author Moxiecode
|
|
* @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
|
|
*/
|
|
|
|
(function(tinymce) {
|
|
var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
|
|
|
|
/**#@+
|
|
* @class This class handles the loading of themes/plugins or other add-ons and their language packs.
|
|
* @member tinymce.AddOnManager
|
|
*/
|
|
tinymce.create('tinymce.AddOnManager', {
|
|
items : [],
|
|
urls : {},
|
|
lookup : {},
|
|
onAdd : new Dispatcher(this),
|
|
|
|
/**#@+
|
|
* @method
|
|
*/
|
|
|
|
/**
|
|
* Returns the specified add on by the short name.
|
|
*
|
|
* @param {String} n Add-on to look for.
|
|
* @return {tinymce.Theme/tinymce.Plugin} Theme or plugin add-on instance or undefined.
|
|
*/
|
|
get : function(n) {
|
|
return this.lookup[n];
|
|
},
|
|
|
|
/**
|
|
* Loads a language pack for the specified add-on.
|
|
*
|
|
* @param {String} n Short name of the add-on.
|
|
*/
|
|
requireLangPack : function(n) {
|
|
var u, s = tinymce.EditorManager.settings;
|
|
|
|
if (s && s.language) {
|
|
u = this.urls[n] + '/langs/' + s.language + '.js';
|
|
|
|
if (!tinymce.dom.Event.domLoaded && !s.strict_mode)
|
|
tinymce.ScriptLoader.load(u);
|
|
else
|
|
tinymce.ScriptLoader.add(u);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Adds a instance of the add-on by it's short name.
|
|
*
|
|
* @param {String} id Short name/id for the add-on.
|
|
* @param {tinymce.Theme/tinymce.Plugin} o Theme or plugin to add.
|
|
* @return {tinymce.Theme/tinymce.Plugin} The same theme or plugin instance that got passed in.
|
|
*/
|
|
add : function(id, o) {
|
|
this.items.push(o);
|
|
this.lookup[id] = o;
|
|
this.onAdd.dispatch(this, id, o);
|
|
|
|
return o;
|
|
},
|
|
|
|
/**
|
|
* Loads an add-on from a specific url.
|
|
*
|
|
* @param {String} n Short name of the add-on that gets loaded.
|
|
* @param {String} u URL to the add-on that will get loaded.
|
|
* @param {function} cb Optional callback to execute ones the add-on is loaded.
|
|
* @param {Object} s Optional scope to execute the callback in.
|
|
*/
|
|
load : function(n, u, cb, s) {
|
|
var t = this;
|
|
|
|
if (t.urls[n])
|
|
return;
|
|
|
|
if (u.indexOf('/') != 0 && u.indexOf('://') == -1)
|
|
u = tinymce.baseURL + '/' + u;
|
|
|
|
t.urls[n] = u.substring(0, u.lastIndexOf('/'));
|
|
tinymce.ScriptLoader.add(u, cb, s);
|
|
}
|
|
|
|
/**#@-*/
|
|
});
|
|
|
|
// Create plugin and theme managers
|
|
tinymce.PluginManager = new tinymce.AddOnManager();
|
|
tinymce.ThemeManager = new tinymce.AddOnManager();
|
|
}(tinymce)); |