@ -190,85 +190,102 @@ if (Object.create) {
@@ -190,85 +190,102 @@ if (Object.create) {
'require' ,
'base' ] , function ( $ , _ , angular , require ) {
// Dynamic app loader with plugin support.
var load = [ 'app' ] ;
_ . each ( document . getElementsByTagName ( 'script' ) , function ( script ) {
var dataPlugin = script . getAttribute ( 'data-plugin' ) ;
if ( dataPlugin ) {
load . push ( dataPlugin ) ;
}
} ) ;
var launcherApp = angular . module ( 'launcherApp' , [ ] ) ;
launcherApp . run ( [ "$q" , "$window" , "$http" , function ( $q , $window , $http ) {
require ( load , function ( App ) {
// Dynamic app loader with plugin support.
var load = [ 'app' ] ;
_ . each ( $window . document . getElementsByTagName ( 'script' ) , function ( script ) {
var dataPlugin = script . getAttribute ( 'data-plugin' ) ;
if ( dataPlugin ) {
load . push ( dataPlugin ) ;
}
} ) ;
// All other arguments are plugins.
var args = Array . prototype . slice . call ( arguments , 1 ) ;
require ( load , function ( App ) {
// Prepare our promised based initialization.
var promises = [ ] ;
var loading = $ . Deferred ( ) ;
promises . push ( loading . promise ( ) ) ;
// All other arguments are plugins.
var args = Array . prototype . slice . call ( arguments , 1 ) ;
// Add Angular modules from plugins.
var modules = [ ] ;
_ . each ( args , function ( plugin ) {
if ( plugin && plugin . module ) {
plugin . module ( modules ) ;
}
} ) ;
// Prepare our promised based initialization.
var promises = [ ] ;
var loading = $q . defer ( ) ;
promises . push ( loading . promise ) ;
// External plugin support.
var externalPlugin ;
if ( window . externalPlugin ) {
externalPlugin = window . externalPlugin ( $ , _ , angular , App ) ;
if ( externalPlugin && externalPlugin . module ) {
externalPlugin . module ( modules ) ;
// Add Angular modules from plugins.
var modules = [ ] ;
_ . each ( args , function ( plugin ) {
if ( plugin && plugin . module ) {
plugin . module ( modules ) ;
}
} ) ;
// External plugin support.
var externalPlugin ;
if ( $window . externalPlugin ) {
externalPlugin = $window . externalPlugin ( $ , _ , angular , App ) ;
if ( externalPlugin && externalPlugin . module ) {
externalPlugin . module ( modules ) ;
}
}
}
// Create Angular app.
var app = App . create ( modules ) ;
// Launcher helper API.
var launcher = {
$q : $q ,
$http : $http
} ;
// Create Angular app.
var app = App . create ( modules , launcher ) ;
// Helper function to initialize with deferreds.
var initialize = function ( obj ) {
if ( obj && obj . initialize ) {
var result = obj . initialize ( app ) ;
if ( result && result . done ) {
// If we got a promise add it to our wait queue.
promises . push ( result ) ;
// Helper function to initialize with deferreds.
var initialize = function ( obj ) {
if ( obj && obj . initialize ) {
var result = obj . initialize ( app , launcher ) ;
if ( result && result . then ) {
// If we got a promise add it to our wait queue.
promises . push ( result ) ;
}
}
}
} ;
} ;
// Wait until dom is ready before we initialize.
angular . element ( document ) . ready ( function ( ) {
// Wait until dom is ready before we initialize.
angular . element ( document ) . ready ( function ( ) {
// Init base application.
initialize ( App ) ;
// Init base application.
initialize ( App ) ;
// Init plugins.
_ . each ( args , function ( plugin ) {
initialize ( plugin ) ;
} ) ;
// Init plugins.
_ . each ( args , function ( plugin ) {
initialize ( plugin ) ;
} ) ;
// Init external plugin.
if ( externalPlugin ) {
initialize ( externalPlugin ) ;
}
// Init external plugin.
if ( externalPlugin ) {
initialize ( externalPlugin ) ;
}
// Resolve the base loader.
loading . resolve ( ) ;
// Resolve the base loader.
loading . resolve ( ) ;
// Wait for all others to complete and then boostrap the app.
$ . when . apply ( $ , promises ) . done ( function ( ) {
console . log ( "Bootstrapping ..." ) ;
angular . bootstrap ( document , [ 'app' ] , {
strictDi : true
// Wait for all others to complete and then boostrap the main app.
$q . all ( promises ) . then ( function ( ) {
console . log ( "Bootstrapping ..." ) ;
angular . bootstrap ( document , [ 'app' ] , {
strictDi : true
} ) ;
} ) ;
} ) ;
} ) ;
} ] ) ;
// Bootstrap our launcher app.
console . log ( "Launching ..." ) ;
angular . bootstrap ( null , [ 'launcherApp' ] , {
strictDi : true
} ) ;
} ) ;