# HG changeset patch # User Kim Alvefur # Date 1537130435 -7200 # Node ID fd704adc62e1e937adb43ad5bf5adef1c790bdab # Parent 048389a9bbd4c683e183a6085fccc4db2ba2e76e mod_server_contact_info: Simplify This relies on the new name mapping in util.dataforms diff -r 048389a9bbd4 -r fd704adc62e1 plugins/mod_server_contact_info.lua --- a/plugins/mod_server_contact_info.lua Fri Sep 21 14:37:47 2018 +0100 +++ b/plugins/mod_server_contact_info.lua Sun Sep 16 22:40:35 2018 +0200 @@ -5,45 +5,23 @@ -- This file is MIT/X11 licensed. -- -local t_insert = table.insert; local array = require "util.array"; -local df_new = require "util.dataforms".new; -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo -local valid_types = { - abuse = true; - admin = true; - feedback = true; - sales = true; - security = true; - support = true; -} +local form_layout = require "util.dataforms".new({ + { var = "FORM_TYPE"; type = "hidden"; value = "http://jabber.org/network/serverinfo"; }; + { name = "abuse", var = "abuse-addresses", type = "list-multi" }, + { name = "admin", var = "admin-addresses", type = "list-multi" }, + { name = "feedback", var = "feedback-addresses", type = "list-multi" }, + { name = "sales", var = "sales-addresses", type = "list-multi" }, + { name = "security", var = "security-addresses", type = "list-multi" }, + { name = "support", var = "support-addresses", type = "list-multi" }, +}); -local contact_config = module:get_option("contact_info"); -if not contact_config or not next(contact_config) then -- we'll use admins from the config as default - local admins = module:get_option_inherited_set("admins", {}); - if admins:empty() then - module:log("error", "No contact_info or admins set in config"); - return -- Nothing to attach, so we'll just skip it. - end - module:log("info", "No contact_info in config, using admins as fallback"); - contact_config = { - admin = array.collect( admins / function(admin) return "xmpp:" .. admin; end); - }; -end +local admins = module:get_option_inherited_set("admins", {}); -local form_layout = { - { value = "http://jabber.org/network/serverinfo"; type = "hidden"; name = "FORM_TYPE"; }; -}; - -local form_values = {}; +local contact_config = module:get_option("contact_info", { + admin = array.collect( admins / function(admin) return "xmpp:" .. admin; end); +}); -for t in pairs(valid_types) do - local addresses = contact_config[t]; - if addresses then - t_insert(form_layout, { name = t .. "-addresses", type = "list-multi" }); - form_values[t .. "-addresses"] = addresses; - end -end - -module:add_extension(df_new(form_layout):form(form_values, "result")); +module:add_extension(form_layout:form(contact_config, "result"));