diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2014-03-19 15:29:58 +0100 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2014-03-27 12:44:40 +0100 |
commit | e7bfac1e63360993aea2be91082ca69c478f3cf1 (patch) | |
tree | c5e1d2161fd27498f9faadf6c9fb651159a7e061 /install/ui/src/freeipa/app_container.js | |
parent | e04da74626dbaef9990833cf1def23da51981a93 (diff) | |
download | freeipa-e7bfac1e63360993aea2be91082ca69c478f3cf1.tar.gz freeipa-e7bfac1e63360993aea2be91082ca69c478f3cf1.tar.xz freeipa-e7bfac1e63360993aea2be91082ca69c478f3cf1.zip |
webui: make navigation module independent on app module
When some module used 'freeipa/navigation' it pulled the entire Web UI
because navigation depended on app.
This patch splits the app into two modules: app and app_container.
App specifies the entities which are part of final application.
app_container module represents the application boot classes. Navigation
now depends on app_container.
Reviewed-By: Adam Misnyovszki <amisnyov@redhat.com>
Diffstat (limited to 'install/ui/src/freeipa/app_container.js')
-rw-r--r-- | install/ui/src/freeipa/app_container.js | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/install/ui/src/freeipa/app_container.js b/install/ui/src/freeipa/app_container.js new file mode 100644 index 000000000..c56fc3bfe --- /dev/null +++ b/install/ui/src/freeipa/app_container.js @@ -0,0 +1,95 @@ +/* Authors: + * Petr Vobornik <pvoborni@redhat.com> + * + * Copyright (C) 2012 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/>. +*/ + +define([ + 'dojo/_base/lang', + 'dojo/Deferred', + 'dojo/when', + './plugin_loader', + './phases', + './Application_controller' +],function(lang, Deferred, when, plugin_loader, phases, Application_controller) { + + /** + * Application wrapper + * + * Prepares application controller and registers phases. + * + * @class app + * @singleton + */ + var app = { + + /** + * Application instance + */ + app: null, + + /** + * Application class + */ + App_class: Application_controller, + + /** + * Phases registration + */ + register_phases: function() { + + phases.on('init', lang.hitch(this, function() { + var app = this.app = new this.App_class(); + app.init(); + return app; + })); + + phases.on('metadata', lang.hitch(this, function() { + var deferred = new Deferred(); + + this.app.get_configuration(function(success) { + deferred.resolve(success); + }, function(error) { + deferred.reject(error); + }); + + return deferred.promise; + })); + + phases.on('profile', lang.hitch(this, function() { + this.app.choose_profile(); + })); + + phases.on('runtime', lang.hitch(this, function() { + return this.app.start_runtime(); + })); + + phases.on('shutdown', lang.hitch(this, function() { + return this.app.start_logout(); + })); + }, + + run: function() { + when(plugin_loader.load_plugins(), lang.hitch(this, function() { + this.register_phases(); + phases.controller.run(); + })); + } + }; + + return app; +});
\ No newline at end of file |