diff --git a/htdocs/js/channelviewer.js b/htdocs/js/channelviewer.js index 3ae3779..2a67e34 100644 --- a/htdocs/js/channelviewer.js +++ b/htdocs/js/channelviewer.js @@ -2,6 +2,28 @@ Ext.namespace('Ext.ux'); +Ext.ux.MumbleUserNodeUI = Ext.extend(Ext.tree.TreeNodeUI, { + renderElements : function(n, a, targetNode, bulkRender){ + Ext.ux.MumbleUserNodeUI.superclass.renderElements.call( this, n, a, targetNode, bulkRender ); + Ext.DomHelper.applyStyles( this.elNode, 'position: relative' ); + var tpl = new Ext.DomHelper.createTemplate( '' ); + + icons = [] + if( a.userdata.userid != 0 ) icons.push( "authenticated" ); + if( a.userdata.selfMute ) icons.push( "muted_self" ); + if( a.userdata.mute ) icons.push( "muted_server" ); + if( a.userdata.suppress ) icons.push( "muted_suppressed" ); + if( a.userdata.selfDeaf ) icons.push( "deafened_self" ); + if( a.userdata.deaf ) icons.push( "deafened_server" ); + if( a.userdata.comment!="" ) icons.push( "comment_seen" ); + var pos = 8; + for( var i = 0; i < icons.length; i++ ){ + tpl.append( this.elNode, {'icon': icons[i], 'pos': pos} ); + pos += 18 + } + } +}); + Ext.ux.MumbleChannelViewer = function( config ){ Ext.apply( this, config ); @@ -28,7 +50,7 @@ Ext.extend( Ext.ux.MumbleChannelViewer, Ext.tree.TreePanel, { autoRefresh: function(){ this.refresh(); if( this.refreshInterval > 0 ){ - this.autoRefresh.defer( this.refreshInterval, this ); + //this.autoRefresh.defer( this.refreshInterval, this ); } }, @@ -65,6 +87,8 @@ Ext.extend( Ext.ux.MumbleChannelViewer, Ext.tree.TreePanel, { text: json.users[i].name, id: ("user_" + json.users[i].id), leaf: true, + uiProvider: Ext.ux.MumbleUserNodeUI, + userdata: json.users[i] }; if( json.users[i].idlesecs == 0 ) child.icon = '/static/mumble/talking_on.png';