aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2017-10-20 05:45:40 +0200
committerKim Alvefur <zash@zash.se>2017-10-20 05:45:40 +0200
commit7c0452299662f7d5a9721a82eb480ec4b109b448 (patch)
tree06ea200ca9ee28b35653af9c6b913477b282e558
parent9ecd07b5da9176a210f4fa957633d9f8041e01de (diff)
downloadprosody-7c0452299662f7d5a9721a82eb480ec4b109b448.tar.gz
prosody-7c0452299662f7d5a9721a82eb480ec4b109b448.zip
MUC: Reuse the same dataform for voice requests
-rw-r--r--plugins/muc/moderated.lib.lua43
-rw-r--r--plugins/muc/muc.lib.lua7
2 files changed, 14 insertions, 36 deletions
diff --git a/plugins/muc/moderated.lib.lua b/plugins/muc/moderated.lib.lua
index 4d060a9d..c6ccc771 100644
--- a/plugins/muc/moderated.lib.lua
+++ b/plugins/muc/moderated.lib.lua
@@ -8,8 +8,6 @@
--
local st = require "util.stanza";
-local dataform = require "util.dataforms";
-
local function get_moderated(room)
return room._data.moderated;
@@ -51,40 +49,13 @@ end, 1);
module:hook("muc-voice-request", function(event)
if event.occupant.role == "visitor" then
- local form = dataform.new({
- title = "Voice Request";
- {
- name = "FORM_TYPE";
- type = "hidden";
- value = "http://jabber.org/protocol/muc#request";
- },
- {
- name = "muc#role";
- type = "text-single";
- label = "Requested Role";
- value = "participant";
- },
- {
- name = "muc#jid";
- type = "jid-single";
- label = "User ID";
- value = event.stanza.attr.from;
- },
- {
- name = "muc#roomnick";
- type = "text-single";
- label = "Room Nickname";
- value = event.occupant.nick;
- },
- {
- name = "muc#request_allow";
- type = "boolean";
- label = "Grant voice to this person?";
- value = false;
- }
- });
-
- local message = st.message({ type = "normal"; from = event.room.jid }):add_child(form:form()):up();
+ local form = event.room:get_voice_form_layout()
+ local formdata = {
+ ["muc#jid"] = event.stanza.attr.from;
+ ["muc#roomnick"] = event.occupant.nick;
+ };
+
+ local message = st.message({ type = "normal"; from = event.room.jid }):add_child(form:form(formdata)):up();
event.room:broadcast(message, function (_, occupant)
return occupant.role == "moderator";
diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua
index 882d9734..f23e0ee7 100644
--- a/plugins/muc/muc.lib.lua
+++ b/plugins/muc/muc.lib.lua
@@ -780,6 +780,7 @@ end
function room_mt:get_voice_form_layout() -- luacheck: ignore 212/self
local form = dataform.new({
+ title = "Voice Request";
{
name = "FORM_TYPE";
type = "hidden";
@@ -788,18 +789,24 @@ function room_mt:get_voice_form_layout() -- luacheck: ignore 212/self
{
name = "muc#jid";
type = "jid-single";
+ label = "User ID";
},
{
name = "muc#roomnick";
type = "text-single";
+ label = "Room Nickname";
},
{
name = "muc#role";
type = "text-single";
+ label = "Requested Role";
+ value = "participant";
},
{
name = "muc#request_allow";
type = "boolean";
+ label = "Grant voice to this person?";
+ value = false;
}
});