diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.navigation.js b/scm-webapp/src/main/webapp/resources/js/sonia.navigation.js index b6d79fd8bf..7842301266 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.navigation.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.navigation.js @@ -36,7 +36,12 @@ Sonia.navigation.NavSection = Ext.extend(Ext.Panel, { data: null, initComponent: function(){ - + if ( this.data == null ){ + this.data = this.items; + } + if ( this.data == null ){ + this.data = []; + } var config = { frame: true, collapsible:true, @@ -62,7 +67,12 @@ Sonia.navigation.NavSection = Ext.extend(Ext.Panel, { var i = parseInt( id.substring( prefix.length ) ); var fn = this.data[i].fn; if ( Ext.isFunction( fn ) ){ - fn(); + var scope = this.data[i].scope; + if ( Ext.isObject( scope )){ + fn.call(scope); + } else { + fn(); + } } else if ( debug ){ console.debug('fn at "' + this.data[i].label + '" is not a function'); } @@ -83,12 +93,39 @@ Sonia.navigation.NavSection = Ext.extend(Ext.Panel, { }; links.push(link); } - + var dh = Ext.DomHelper; - var list = dh.append(this.body, {tag: 'ul', cls: 'nav-list'}, true); + var list = dh.overwrite(this.body, {tag: 'ul', cls: 'nav-list'}, true); dh.append(list, links); list.on('click', this.onItemClick, this); } + }, + + addLink: function(link){ + this.data.push(link); + this.renderMenu(); + }, + + addLinks: function(links){ + if ( Ext.isArray(links) && links.length > 0 ){ + for ( var i=0; i