diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.global.js b/scm-webapp/src/main/webapp/resources/js/sonia.global.js index 6305e4e820..c3b3b3b2f1 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.global.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.global.js @@ -38,10 +38,18 @@ var admin = false; // sonia.scm.api.rest.resources.UserResource.DUMMY_PASSWORT var dummyPassword = '__dummypassword__'; -// functions called after login +/** + * functions called after login + * + * @deprecated use main.addListener('login', fn, scope) + */ var loginCallbacks = []; -// function called after logout +/** + * functions called after logout + * + * @deprecated use main.addListener('logout', fn, scope) + */ var logoutCallbacks = []; var restUrl = "api/rest/"; diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.scm.js b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js index 9f66b2b355..6da6cd044f 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.scm.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.scm.js @@ -62,11 +62,17 @@ Sonia.scm.Main = Ext.extend(Ext.util.Observable, { mainTabPanel: null, constructor : function(config) { - this.addEvents("login", "logout"); + this.addEvents('login', 'logout'); this.mainTabPanel = Ext.getCmp('mainTabPanel'); + this.addListener('login', this.postLogin, this); Sonia.scm.Main.superclass.constructor.call(this, config); }, + postLogin: function(){ + this.createMainMenu(); + this.createRepositoryPanel(); + }, + createRepositoryPanel: function(){ if ( debug ){ console.debug('create repository panel'); @@ -303,6 +309,18 @@ Sonia.scm.Main = Ext.extend(Ext.util.Observable, { Ext.Msg.alert(this.logoutFailedText); } }); + }, + + addListeners: function(event, callbacks){ + Ext.each(callbacks, function(callback){ + if ( Ext.isFunction(callback) ){ + this.addListener(event, callback); + } else if (Ext.isObject(callback)) { + this.main.addListener(event, callback.fn, callback.scope); + } else if (debug){ + console.debug( "callback is not a function or object. " + callback ); + } + }); } }); @@ -360,11 +378,7 @@ Ext.onReady(function(){ main.addTabPanel(id, xtype, title); } - // register login callbacks - - // create menu - loginCallbacks.splice(0, 0, {fn: main.createMainMenu, scope: main}); - // add repository tab - loginCallbacks.push({fn: main.createRepositoryPanel, scope: main}); + main.addListeners('login', loginCallbacks); + main.addListeners('logout', logoutCallbacks); }); \ No newline at end of file