Software /
code /
prosody
Comparison
plugins/muc/moderated.lib.lua @ 8853:f84f566dea58
MUC: Reuse the same dataform for voice requests
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 20 Oct 2017 05:45:40 +0200 |
parent | 8852:5e98d62f3f9b |
child | 8854:5cd7813d4e94 |
comparison
equal
deleted
inserted
replaced
8852:5e98d62f3f9b | 8853:f84f566dea58 |
---|---|
6 -- This project is MIT/X11 licensed. Please see the | 6 -- This project is MIT/X11 licensed. Please see the |
7 -- COPYING file in the source package for more information. | 7 -- COPYING file in the source package for more information. |
8 -- | 8 -- |
9 | 9 |
10 local st = require "util.stanza"; | 10 local st = require "util.stanza"; |
11 local dataform = require "util.dataforms"; | |
12 | |
13 | 11 |
14 local function get_moderated(room) | 12 local function get_moderated(room) |
15 return room._data.moderated; | 13 return room._data.moderated; |
16 end | 14 end |
17 | 15 |
49 end | 47 end |
50 end, 1); | 48 end, 1); |
51 | 49 |
52 module:hook("muc-voice-request", function(event) | 50 module:hook("muc-voice-request", function(event) |
53 if event.occupant.role == "visitor" then | 51 if event.occupant.role == "visitor" then |
54 local form = dataform.new({ | 52 local form = event.room:get_voice_form_layout() |
55 title = "Voice Request"; | 53 local formdata = { |
56 { | 54 ["muc#jid"] = event.stanza.attr.from; |
57 name = "FORM_TYPE"; | 55 ["muc#roomnick"] = event.occupant.nick; |
58 type = "hidden"; | 56 }; |
59 value = "http://jabber.org/protocol/muc#request"; | |
60 }, | |
61 { | |
62 name = "muc#role"; | |
63 type = "text-single"; | |
64 label = "Requested Role"; | |
65 value = "participant"; | |
66 }, | |
67 { | |
68 name = "muc#jid"; | |
69 type = "jid-single"; | |
70 label = "User ID"; | |
71 value = event.stanza.attr.from; | |
72 }, | |
73 { | |
74 name = "muc#roomnick"; | |
75 type = "text-single"; | |
76 label = "Room Nickname"; | |
77 value = event.occupant.nick; | |
78 }, | |
79 { | |
80 name = "muc#request_allow"; | |
81 type = "boolean"; | |
82 label = "Grant voice to this person?"; | |
83 value = false; | |
84 } | |
85 }); | |
86 | 57 |
87 local message = st.message({ type = "normal"; from = event.room.jid }):add_child(form:form()):up(); | 58 local message = st.message({ type = "normal"; from = event.room.jid }):add_child(form:form(formdata)):up(); |
88 | 59 |
89 event.room:broadcast(message, function (_, occupant) | 60 event.room:broadcast(message, function (_, occupant) |
90 return occupant.role == "moderator"; | 61 return occupant.role == "moderator"; |
91 end); | 62 end); |
92 end | 63 end |