diff options
Diffstat (limited to 'install/ui')
-rw-r--r-- | install/ui/Makefile.am | 1 | ||||
-rw-r--r-- | install/ui/ext/Makefile.am | 14 | ||||
-rw-r--r-- | install/ui/ext/extension.js | 0 | ||||
l--------- | install/ui/js/plugins | 1 | ||||
-rw-r--r-- | install/ui/src/freeipa/app.js | 14 | ||||
-rw-r--r-- | install/ui/src/freeipa/plugin_loader.js | 82 | ||||
-rw-r--r-- | install/ui/src/freeipa/plugins.js | 1 |
7 files changed, 93 insertions, 20 deletions
diff --git a/install/ui/Makefile.am b/install/ui/Makefile.am index e3276741..77aab17a 100644 --- a/install/ui/Makefile.am +++ b/install/ui/Makefile.am @@ -4,7 +4,6 @@ NULL = SUBDIRS = \ build \ - ext \ images \ src \ $(NULL) diff --git a/install/ui/ext/Makefile.am b/install/ui/ext/Makefile.am deleted file mode 100644 index 29a6387c..00000000 --- a/install/ui/ext/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -NULL = - -appdir = $(IPA_DATA_DIR)/ui/ext -app_DATA = \ - extension.js \ - $(NULL) - -EXTRA_DIST = \ - $(app_DATA) \ - $(NULL) - -MAINTAINERCLEANFILES = \ - *~ \ - Makefile.in diff --git a/install/ui/ext/extension.js b/install/ui/ext/extension.js deleted file mode 100644 index e69de29b..00000000 --- a/install/ui/ext/extension.js +++ /dev/null diff --git a/install/ui/js/plugins b/install/ui/js/plugins new file mode 120000 index 00000000..940b13ec --- /dev/null +++ b/install/ui/js/plugins @@ -0,0 +1 @@ +../src/plugins/
\ No newline at end of file diff --git a/install/ui/src/freeipa/app.js b/install/ui/src/freeipa/app.js index 72a41497..37c4c08a 100644 --- a/install/ui/src/freeipa/app.js +++ b/install/ui/src/freeipa/app.js @@ -25,6 +25,8 @@ define([ //core 'dojo/_base/lang', 'dojo/Deferred', + 'dojo/when', + './plugin_loader', './phases', './Application_controller', 'exports', // for circullar deps @@ -52,7 +54,7 @@ define([ './trust', './user', 'dojo/domReady!' -],function(lang, Deferred, phases, Application_controller, exports) { +],function(lang, Deferred, when, plugin_loader, phases, Application_controller, exports) { var app = { @@ -102,10 +104,12 @@ define([ })); }, - run: function() { - this.register_phases(); - phases.controller.run(); - } + run: function() { + when(plugin_loader.load_plugins(), lang.hitch(this, function() { + this.register_phases(); + phases.controller.run(); + })); + } }; lang.mixin(exports, app); diff --git a/install/ui/src/freeipa/plugin_loader.js b/install/ui/src/freeipa/plugin_loader.js new file mode 100644 index 00000000..ce545301 --- /dev/null +++ b/install/ui/src/freeipa/plugin_loader.js @@ -0,0 +1,82 @@ +/* Authors: + * Petr Vobornik <pvoborni@redhat.com> + * + * Copyright (C) 2013 Red Hat + * see file 'COPYING'./for use and warranty information + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +/** + * Plugin loader + */ +define([ + 'dojo/_base/array', + 'dojo/_base/lang', + 'dojo/Deferred', + 'dojo/promise/all' +],function(array, lang, Deferred, all) { + + var plugin_loader = { + + register_plugins: function(plugins) { + + var packages = []; + + array.forEach(plugins, function(name) { + packages.push({ + name: name, + location: 'plugins/'+name + }); + }); + + require({ packages: packages}); + }, + + load_plugin: function(name) { + var plugin_loaded = new Deferred(); + + var mid = name+'/'+name; + + require([mid], function(plugin) { + plugin_loaded.resolve(plugin); + }); + + return plugin_loaded.promise; + }, + + load_plugins: function() { + + var plugins_loaded = new Deferred(); + + require(['freeipa/plugins'], lang.hitch(this, function(plugins) { + var loading = []; + + this.register_plugins(plugins); + + array.forEach(plugins, lang.hitch(this, function(plugin) { + loading.push(this.load_plugin(plugin)); + })); + + all(loading).then(function(results) { + plugins_loaded.resolve(results); + }); + })); + + return plugins_loaded.promise; + } + }; + + return plugin_loader; +});
\ No newline at end of file diff --git a/install/ui/src/freeipa/plugins.js b/install/ui/src/freeipa/plugins.js new file mode 100644 index 00000000..67d3c34b --- /dev/null +++ b/install/ui/src/freeipa/plugins.js @@ -0,0 +1 @@ +define([],function(){return[];});
\ No newline at end of file |