MUC: Added a 'Name' property (muc#roomconfig_roomname)
authorKim Alvefur <zash@zash.se>
Fri, 24 Sep 2010 21:16:38 +0200
changeset 3507 b639042bb0d5
parent 3505 eb2f36dc0369
child 3508 9e4c2b048f9a
MUC: Added a 'Name' property (muc#roomconfig_roomname)
plugins/muc/muc.lib.lua
--- a/plugins/muc/muc.lib.lua	Tue Sep 21 18:28:06 2010 +0500
+++ b/plugins/muc/muc.lib.lua	Fri Sep 24 21:16:38 2010 +0200
@@ -212,7 +212,7 @@
 
 function room_mt:get_disco_info(stanza)
 	return st.reply(stanza):query("http://jabber.org/protocol/disco#info")
-		:tag("identity", {category="conference", type="text"}):up()
+		:tag("identity", {category="conference", type="text", name=self:get_name()}):up()
 		:tag("feature", {var="http://jabber.org/protocol/muc"}):up()
 		:tag("feature", {var=self:get_password() and "muc_passwordprotected" or "muc_unsecured"}):up()
 		:tag("feature", {var=self:is_moderated() and "muc_moderated" or "muc_unmoderated"}):up()
@@ -251,6 +251,16 @@
 		:tag('status'):text(error_message);
 end
 
+function room_mt:set_name(name)
+	if name == "" or type(name) ~= "string" then name = nil; end
+	if self._data.name ~= name then
+		self._data.name = name;
+		if self.save then self:save(true); end
+	end
+end
+function room_mt:get_name()
+	return self._data.name;
+end
 function room_mt:set_password(password)
 	if password == "" or type(password) ~= "string" then password = nil; end
 	if self._data.password ~= password then
@@ -501,6 +511,9 @@
 		:tag("x", {xmlns='jabber:x:data', type='form'})
 			:tag("title"):text(title):up()
 			:tag("instructions"):text(title):up()
+			:tag("field", {type='text-single', label='Room Title', var='muc#roomconfig_roomname'})
+				:tag("value"):text(self:get_name() or ""):up()
+			:up()
 			:tag("field", {type='hidden', var='FORM_TYPE'}):tag("value"):text("http://jabber.org/protocol/muc#roomconfig"):up():up()
 			:tag("field", {type='boolean', label='Make Room Persistent?', var='muc#roomconfig_persistentroom'})
 				:tag("value"):text(self:is_persistent() and "1" or "0"):up()
@@ -551,6 +564,11 @@
 
 	local dirty = false
 
+	local name = fields['muc#roomconfig_roomname'];
+	if name then
+		self:set_name(name);
+	end
+
 	local persistent = fields['muc#roomconfig_persistentroom'];
 	if persistent == "0" or persistent == "false" then persistent = nil; elseif persistent == "1" or persistent == "true" then persistent = true;
 	else origin.send(st.error_reply(stanza, "cancel", "bad-request")); return; end