Merge branch 'development' of https://github.com/crtaylor123/KiwiIRC into crtaylor123...
[KiwiIRC.git] / client / src / models / pluginmanager.js
1 _kiwi.model.PluginManager = Backbone.Model.extend({
2 initialize: function () {
3 this.$plugin_holder = $('<div id="kiwi_plugins" style="display:none;"></div>')
4 .appendTo(_kiwi.app.view.$el);
5
6 this.loading_plugins = 0;
7 this.loaded_plugins = {};
8 },
9
10 // Load an applet within this panel
11 load: function (url) {
12 var that = this;
13
14 if (this.loaded_plugins[url]) {
15 this.unload(url);
16 }
17
18 this.loading_plugins++;
19
20 this.loaded_plugins[url] = $('<div></div>');
21 this.loaded_plugins[url].appendTo(this.$plugin_holder)
22 .load(url, _.bind(that.pluginLoaded, that));
23 },
24
25
26 unload: function (url) {
27 if (!this.loaded_plugins[url]) {
28 return;
29 }
30
31 this.loaded_plugins[url].remove();
32 delete this.loaded_plugins[url];
33 },
34
35
36 // Called after each plugin is loaded
37 pluginLoaded: function() {
38 this.loading_plugins--;
39
40 if (this.loading_plugins === 0) {
41 this.trigger('loaded');
42 }
43 },
44 });