Diff

plugins/muc/muc.lib.lua @ 3508:9e4c2b048f9a

MUC: Added a 'Description' property (muc#roomconfig_roomdesc)
author Kim Alvefur <zash@zash.se>
date Sun, 26 Sep 2010 18:15:30 +0200
parent 3507:b639042bb0d5
child 3509:72cb8b6536b9
line wrap: on
line diff
--- a/plugins/muc/muc.lib.lua	Fri Sep 24 21:16:38 2010 +0200
+++ b/plugins/muc/muc.lib.lua	Sun Sep 26 18:15:30 2010 +0200
@@ -220,6 +220,14 @@
 		:tag("feature", {var=self:is_persistent() and "muc_persistent" or "muc_temporary"}):up()
 		:tag("feature", {var=self:is_hidden() and "muc_hidden" or "muc_public"}):up()
 		:tag("feature", {var=self._data.whois ~= "anyone" and "muc_semianonymous" or "muc_nonanonymous"}):up()
+		:tag("x", {xmlns="jabber:x:data", type="result"})
+			:tag("field", {var="FORM_TYPE", type="hidden"})
+				:tag("value"):text("http://jabber.org/protocol/muc#roominfo"):up()
+			:up()
+			:tag("field", {var="muc#roominfo_description", label="Description"})
+				:tag("value"):text(self:get_description()):up()
+			:up()
+		:up()	
 	;
 end
 function room_mt:get_disco_items(stanza)
@@ -261,6 +269,16 @@
 function room_mt:get_name()
 	return self._data.name;
 end
+function room_mt:set_description(description)
+	if description == "" or type(description) ~= "string" then description = nil; end
+	if self._data.description ~= description then
+		self._data.description = description;
+		if self.save then self:save(true); end
+	end
+end
+function room_mt:get_description()
+	return self._data.description;
+end
 function room_mt:set_password(password)
 	if password == "" or type(password) ~= "string" then password = nil; end
 	if self._data.password ~= password then
@@ -511,10 +529,13 @@
 		: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("field", {type='hidden', var='FORM_TYPE'}):tag("value"):text("http://jabber.org/protocol/muc#roomconfig"):up():up()
+			:tag("field", {type='text-single', label='Name', 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='text-single', label='Description', var='muc#roomconfig_roomdesc'})
+				:tag("value"):text(self:get_description() or ""):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()
 			:up()
@@ -569,6 +590,11 @@
 		self:set_name(name);
 	end
 
+	local description = fields['muc#roomconfig_roomdesc'];
+	if description then
+		self:set_description(description);
+	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