diff --git a/htdocs/mumble/style.css b/htdocs/mumble/style.css index c763f05..928ad06 100644 --- a/htdocs/mumble/style.css +++ b/htdocs/mumble/style.css @@ -24,3 +24,17 @@ span.mumble { float:right; } +div.mumble-ext { + padding: 10px; +} + +div.mumble-ext ul { + list-style-type: disc; + padding-left: 20px; +} + +div.mumble-ext fieldset { + border: 1px solid darkblue; + margin-top: 20px; + padding: 10px; +} diff --git a/pyweb/mumble/MumbleCtlDbus.py b/pyweb/mumble/MumbleCtlDbus.py index 57681bf..6942f10 100755 --- a/pyweb/mumble/MumbleCtlDbus.py +++ b/pyweb/mumble/MumbleCtlDbus.py @@ -29,18 +29,21 @@ class MumbleCtlDbus(MumbleCtlBase): # Prior to saving the model, connect to murmur via dbus and update its settings. self.dbus_base = connstring; self.meta = self._getDbusMeta(); - + def _getDbusMeta( self ): return dbus.Interface( dbus.SystemBus().get_object( self.dbus_base, '/' ), 'net.sourceforge.mumble.Meta' ); def _getDbusServerObject( self, srvid): "Connects to DBus and returns an mmServer object representing this Murmur instance." - + if srvid not in self.getBootedServers(): raise Exception, 'No murmur process with the given server ID (%d) is running and attached to system dbus under %s.' % ( srvid, self.meta ); - + return dbus.Interface( dbus.SystemBus().get_object( self.dbus_base, '/%d' % srvid ), 'net.sourceforge.mumble.Murmur' ); - + + def getVersion( self ): + return MumbleCtlDbus.converDbusTypeToNative( self.meta.getVersion() ) + def getAllConf(self, srvid): return MumbleCtlDbus.converDbusTypeToNative(self.meta.getAllConf(dbus.Int32(srvid))) diff --git a/pyweb/mumble/MumbleCtlIce.py b/pyweb/mumble/MumbleCtlIce.py index 9a10f14..19d070b 100755 --- a/pyweb/mumble/MumbleCtlIce.py +++ b/pyweb/mumble/MumbleCtlIce.py @@ -74,7 +74,10 @@ class MumbleCtlIce_118(MumbleCtlBase): for x in self.meta.getBootedServers(): ret.append(x.id()) return ret - + + def getVersion( self ): + return self.meta.getVersion(); + def getAllServers(self): ret = [] for x in self.meta.getAllServers(): @@ -263,7 +266,7 @@ class MumbleCtlIce_120(MumbleCtlIce_118): for x in chans: chan = chans[x] - ret.append([chan.id, self.setUnicodeFlag(chan.name), chan.parent, chan.links]) + ret.append([chan.id, self.setUnicodeFlag(chan.name), chan.parent, chan.links, chan.description]) return ret diff --git a/pyweb/mumble/mctl.py b/pyweb/mumble/mctl.py index 6a4fee3..be4cd09 100755 --- a/pyweb/mumble/mctl.py +++ b/pyweb/mumble/mctl.py @@ -27,6 +27,9 @@ class MumbleCtlBase (): def getAllConf(self, srvid): pass + def getVersion( self ): + pass + def setConf(self, srvid, key, value): pass diff --git a/pyweb/mumble/mmobjects.py b/pyweb/mumble/mmobjects.py index 30df4ce..5630e90 100755 --- a/pyweb/mumble/mmobjects.py +++ b/pyweb/mumble/mmobjects.py @@ -42,7 +42,15 @@ class mmChannel( object ): self.subchans = list(); self.linked = list(); - (self.chanid, self.name, parent, self.linkedIDs ) = channelObj; + self.chanid = channelObj[0]; + self.name = channelObj[1]; + parent = channelObj[2]; + self.linkedIDs = channelObj[3]; + + if len( channelObj ) == 5: + self.description = channelObj[4]; + else: + self.description = ""; self.parent = parentChan; if self.parent is not None: diff --git a/pyweb/mumble/models.py b/pyweb/mumble/models.py index 1328bec..a973a34 100755 --- a/pyweb/mumble/models.py +++ b/pyweb/mumble/models.py @@ -217,6 +217,8 @@ class Mumble( models.Model ): return "mumble://%s%s/" % ( userstr, self.addr ); connecturl = property( getURL, None ); + + version = property( lambda self: self.ctl.getVersion(), None ); diff --git a/template/index.htm b/template/index.htm index dcfbc1e..5271b38 100644 --- a/template/index.htm +++ b/template/index.htm @@ -1,68 +1,68 @@ - - - Mumble Administration - - - - - - - - - - - - {% block HeadTag %} - {% endblock %} - - -
- -
- -

{% block Headline %}{% endblock %}

-
- - - -
-
- {% block LeftColumn %} - {% endblock %} -
-
- {% block Content %} - {% endblock %} -
-
- -
- You are using Mumble-Django -- - interface built using ExtJS -
-
- - - + + + Mumble Administration + + + + + + + + + + + + {% block HeadTag %} + {% endblock %} + + +
+ +
+ +

{% block Headline %}{% endblock %}

+
+ + + +
+
+ {% block LeftColumn %} + {% endblock %} +
+
+ {% block Content %} + {% endblock %} +
+
+ +
+ You are using Mumble-Django -- + interface built using ExtJS +
+
+ + + diff --git a/template/mumble/mumble.htm b/template/mumble/mumble.htm index cd16c5c..ae40d67 100644 --- a/template/mumble/mumble.htm +++ b/template/mumble/mumble.htm @@ -16,7 +16,20 @@

-
+
+ +
+ Welcome message + {{ DBaseObject.motd|safe }} +
+
+
{% if user.is_authenticated %}

Server registration

@@ -37,7 +50,7 @@
{% if Registered %} -
+

User Texture

You can upload an image that you would like to use as your user texture here.
@@ -57,7 +70,7 @@ {% endif %} {% if CurrentUserIsAdmin %} -

+

Server administration

@@ -71,7 +84,7 @@ {% for item in ChannelTable %} {% if item.is_player %} -
+

Player {{ item.name }}

  • Online since {{item.onlinesince|time:"H:i"}}
  • @@ -94,9 +107,15 @@ {% endif %}
{% else %} -
+

Channel {{ item.name }}

Connect + {% if item.description %} +
+ Channel description + {{ item.description|safe }} +
+ {% endif %}
{% endif %} {% endfor %} @@ -117,7 +136,7 @@ renderTo: 'mumble_ext_container', layout: 'card', id: 'mumble_container', - height: 550, + height: 570, activeItem: 0, border: false, items: [ { @@ -126,12 +145,13 @@ defaults: { autoheight: true }, activeTab: {{ DisplayTab }}, items: [ + { contentEl: 'mumble_motd', title: 'Server Info', autoScroll: true }, { contentEl: 'mumble_registration', title: 'Registration', autoScroll: true }, {% if CurrentUserIsAdmin %} - { contentEl: 'mumble_admin', title: 'Administration', autoScroll: true }, + { contentEl: 'mumble_admin', title: 'Administration', autoScroll: true }, {% endif %} {% if Registered %} - { contentEl: 'mumble_texture', title: 'User Texture', autoScroll: true }, + { contentEl: 'mumble_texture', title: 'User Texture', autoScroll: true }, {% endif %} ] },