# HG changeset patch # User Kim Alvefur # Date 1464432672 -7200 # Node ID 45d28235ebe0e0c0e7c74fd9020c60bf74b29e95 # Parent df1be36f87b1218b9947973eb72bc74d5e46a94c# Parent 4a178edc984771001b70d6dd1bcbff9f761e222d Merge 0.10->trunk diff -r df1be36f87b1 -r 45d28235ebe0 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(); diff -r df1be36f87b1 -r 45d28235ebe0 util/dataforms.lua --- 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