From 99a7a645f1608843af7c24fd5ae094fc965d12c7 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Fri, 27 May 2016 15:44:41 +0200 Subject: util.dataforms: Allow separation of options from values in list fields --- util/dataforms.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/util/dataforms.lua b/util/dataforms.lua index 79b4d1a4..685f3aaf 100644 --- a/util/dataforms.lua +++ b/util/dataforms.lua @@ -69,10 +69,10 @@ function form_t.form(layout, data, formtype) 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 @@ function form_t.form(layout, data, formtype) 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 -- cgit v1.2.3 From b44930be7ec51bc82cdc977f9d4320bb747ffc40 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sat, 28 May 2016 12:37:51 +0200 Subject: MUC: Allow members (or above) in members-only non-anonymous rooms to see the member list (fixes #445) --- plugins/muc/muc.lib.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 88ee43c1..4018489a 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -803,7 +803,8 @@ function room_mt:handle_to_room(origin, stanza) -- presence changes and groupcha local _aff = item.attr.affiliation; local _rol = item.attr.role; if _aff and not _rol then - if affiliation == "owner" or (affiliation == "admin" and _aff ~= "owner" and _aff ~= "admin") then + if affiliation == "owner" or (affiliation == "admin" and _aff ~= "owner" and _aff ~= "admin") + or (affiliation and affiliation ~= "outcast" and self:get_members_only() and self:get_whois() == "anyone") then local reply = st.reply(stanza):query("http://jabber.org/protocol/muc#admin"); for jid, affiliation in pairs(self._affiliations) do if affiliation == _aff then -- cgit v1.2.3