plugins/mod_server_contact_info.lua
changeset 13441 1ba323d6f35c
parent 12985 d795e3bbc0e3
child 13479 c14659710747
equal deleted inserted replaced
13440:1ce18cb3e6cc 13441:1ba323d6f35c
     5 -- This project is MIT/X11 licensed. Please see the
     5 -- This project is MIT/X11 licensed. Please see the
     6 -- COPYING file in the source package for more information.
     6 -- COPYING file in the source package for more information.
     7 --
     7 --
     8 
     8 
     9 local array = require "prosody.util.array";
     9 local array = require "prosody.util.array";
    10 local dataforms = require "prosody.util.dataforms";
       
    11 local jid = require "prosody.util.jid";
    10 local jid = require "prosody.util.jid";
    12 local url = require "socket.url";
    11 local url = require "socket.url";
    13 
    12 
       
    13 module:depends("server_info");
       
    14 
    14 -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo
    15 -- Source: http://xmpp.org/registrar/formtypes.html#http:--jabber.org-network-serverinfo
    15 local form_layout = dataforms.new({
    16 local address_types = {
    16 	{ var = "FORM_TYPE"; type = "hidden"; value = "http://jabber.org/network/serverinfo" };
    17 	abuse = "abuse-addresses";
    17 	{ type = "list-multi"; name = "abuse"; var = "abuse-addresses" };
    18 	admin = "admin-addresses";
    18 	{ type = "list-multi"; name = "admin"; var = "admin-addresses" };
    19 	feedback = "feedback-addresses";
    19 	{ type = "list-multi"; name = "feedback"; var = "feedback-addresses" };
    20 	sales = "sales-addresses";
    20 	{ type = "list-multi"; name = "sales"; var = "sales-addresses" };
    21 	security = "security-addresses";
    21 	{ type = "list-multi"; name = "security"; var = "security-addresses" };
    22 	status = "status-addresses";
    22 	{ type = "list-multi"; name = "status"; var = "status-addresses" };
    23 	support = "support-addresses";
    23 	{ type = "list-multi"; name = "support"; var = "support-addresses" };
    24 };
    24 });
       
    25 
    25 
    26 -- JIDs of configured service admins are used as fallback
    26 -- JIDs of configured service admins are used as fallback
    27 local admins = module:get_option_inherited_set("admins", {});
    27 local admins = module:get_option_inherited_set("admins", {});
    28 
    28 
    29 local contact_config = module:get_option("contact_info", {
    29 local contact_config = module:get_option("contact_info", {
    30 	admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end);
    30 	admin = array.collect(admins / jid.prep / function(admin) return url.build({scheme = "xmpp"; path = admin}); end);
    31 });
    31 });
    32 
    32 
    33 module:add_extension(form_layout:form(contact_config, "result"));
    33 local fields = {};
       
    34 
       
    35 for key, field_var in pairs(address_types) do
       
    36 	if contact_config[key] then
       
    37 		table.insert(fields, {
       
    38 			type = "list-multi";
       
    39 			name = key;
       
    40 			var = field_var;
       
    41 			value = contact_config[key];
       
    42 		});
       
    43 	end
       
    44 end
       
    45 
       
    46 module:add_item("server-info-fields", fields);