Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 5601:f55ab5fa939f
mod_muc: Pass actor (requesting JID) when generating the config form, and to the muc-config-form event handler
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 18 May 2013 15:29:10 +0100 |
parent | 5600:1b326a1e4da6 |
child | 5611:e043d4d65423 |
comparison
equal
deleted
inserted
replaced
5600:1b326a1e4da6 | 5601:f55ab5fa939f |
---|---|
592 end | 592 end |
593 end | 593 end |
594 | 594 |
595 function room_mt:send_form(origin, stanza) | 595 function room_mt:send_form(origin, stanza) |
596 origin.send(st.reply(stanza):query("http://jabber.org/protocol/muc#owner") | 596 origin.send(st.reply(stanza):query("http://jabber.org/protocol/muc#owner") |
597 :add_child(self:get_form_layout():form()) | 597 :add_child(self:get_form_layout(stanza.attr.from):form()) |
598 ); | 598 ); |
599 end | 599 end |
600 | 600 |
601 function room_mt:get_form_layout() | 601 function room_mt:get_form_layout(actor) |
602 local form = dataform.new({ | 602 local form = dataform.new({ |
603 title = "Configuration for "..self.jid, | 603 title = "Configuration for "..self.jid, |
604 instructions = "Complete and submit this form to configure the room.", | 604 instructions = "Complete and submit this form to configure the room.", |
605 { | 605 { |
606 name = 'FORM_TYPE', | 606 name = 'FORM_TYPE', |
669 type = 'text-single', | 669 type = 'text-single', |
670 label = 'Maximum Number of History Messages Returned by Room', | 670 label = 'Maximum Number of History Messages Returned by Room', |
671 value = tostring(self:get_historylength()) | 671 value = tostring(self:get_historylength()) |
672 } | 672 } |
673 }); | 673 }); |
674 return module:fire_event("muc-config-form", { room = self, form = form }) or form; | 674 return module:fire_event("muc-config-form", { room = self, actor = actor, form = form }) or form; |
675 end | 675 end |
676 | 676 |
677 function room_mt:process_form(origin, stanza) | 677 function room_mt:process_form(origin, stanza) |
678 local query = stanza.tags[1]; | 678 local query = stanza.tags[1]; |
679 local form; | 679 local form; |
680 for _, tag in ipairs(query.tags) do if tag.name == "x" and tag.attr.xmlns == "jabber:x:data" then form = tag; break; end end | 680 for _, tag in ipairs(query.tags) do if tag.name == "x" and tag.attr.xmlns == "jabber:x:data" then form = tag; break; end end |
681 if not form then origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); return; end | 681 if not form then origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); return; end |
682 if form.attr.type == "cancel" then origin.send(st.reply(stanza)); return; end | 682 if form.attr.type == "cancel" then origin.send(st.reply(stanza)); return; end |
683 if form.attr.type ~= "submit" then origin.send(st.error_reply(stanza, "cancel", "bad-request", "Not a submitted form")); return; end | 683 if form.attr.type ~= "submit" then origin.send(st.error_reply(stanza, "cancel", "bad-request", "Not a submitted form")); return; end |
684 | 684 |
685 local fields = self:get_form_layout():data(form); | 685 local fields = self:get_form_layout(stanza.attr.from):data(form); |
686 if fields.FORM_TYPE ~= "http://jabber.org/protocol/muc#roomconfig" then origin.send(st.error_reply(stanza, "cancel", "bad-request", "Form is not of type room configuration")); return; end | 686 if fields.FORM_TYPE ~= "http://jabber.org/protocol/muc#roomconfig" then origin.send(st.error_reply(stanza, "cancel", "bad-request", "Form is not of type room configuration")); return; end |
687 | 687 |
688 | 688 |
689 local changed = {}; | 689 local changed = {}; |
690 | 690 |