Merge 0.10->trunk
authorKim Alvefur <zash@zash.se>
Sat, 28 May 2016 12:51:12 +0200
changeset 7447 45d28235ebe0
parent 7444 df1be36f87b1 (current diff)
parent 7446 4a178edc9847 (diff)
child 7450 843fe134453e
Merge 0.10->trunk
plugins/muc/muc.lib.lua
--- a/plugins/muc/muc.lib.lua	Wed May 25 21:35:09 2016 +0200
+++ b/plugins/muc/muc.lib.lua	Sat May 28 12:51:12 2016 +0200
@@ -872,7 +872,8 @@
 		-- You need to be at least an admin, and be requesting info about your affifiliation or lower
 		-- e.g. an admin can't ask for a list of owners
 		local affiliation_rank = valid_affiliations[affiliation or "none"];
-		if affiliation_rank >= valid_affiliations.admin and affiliation_rank >= _aff_rank then
+		if affiliation_rank >= valid_affiliations.admin and affiliation_rank >= _aff_rank
+		or self:get_members_only() and self:get_whois() == "anyone" and affiliation_rank >= valid_affiliations.member then
 			local reply = st.reply(stanza):query("http://jabber.org/protocol/muc#admin");
 			for jid in self:each_affiliation(_aff or "none") do
 				reply:tag("item", {affiliation = _aff, jid = jid}):up();
--- a/util/dataforms.lua	Wed May 25 21:35:09 2016 +0200
+++ b/util/dataforms.lua	Sat May 28 12:51:12 2016 +0200
@@ -69,10 +69,10 @@
 				end
 			elseif field_type == "list-single" then
 				local has_default = false;
-				for _, val in ipairs(value) do
+				for _, val in ipairs(field.options or value) do
 					if type(val) == "table" then
 						form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
-						if val.default and (not has_default) then
+						if value == val.value or field.options and val.default and (not has_default) then
 							form:tag("value"):text(val.value):up();
 							has_default = true;
 						end
@@ -80,17 +80,25 @@
 						form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
 					end
 				end
+				if field.options and value then
+					form:tag("value"):text(value):up();
+				end
 			elseif field_type == "list-multi" then
-				for _, val in ipairs(value) do
+				for _, val in ipairs(field.options or value) do
 					if type(val) == "table" then
 						form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
-						if val.default then
+						if not field.options and val.default then
 							form:tag("value"):text(val.value):up();
 						end
 					else
 						form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
 					end
 				end
+				if field.options and value then
+					for _, val in ipairs(value) do
+						form:tag("value"):text(val):up();
+					end
+				end
 			end
 		end