Comparison

plugins/muc/muc.lib.lua @ 5541:1997671d5e46

MUC: Allow plugins to add and handle options in the MUC config form
author Matthew Wild <mwild1@gmail.com>
date Mon, 29 Apr 2013 11:21:37 +0100
parent 5519:06e188268df1
child 5542:329ebdfb39a2
comparison
equal deleted inserted replaced
5539:0ae7ed378405 5541:1997671d5e46
578 :add_child(self:get_form_layout():form()) 578 :add_child(self:get_form_layout():form())
579 ); 579 );
580 end 580 end
581 581
582 function room_mt:get_form_layout() 582 function room_mt:get_form_layout()
583 local title = "Configuration for "..self.jid; 583 local form = dataform.new({
584 return dataform.new({ 584 title = "Configuration for "..self.jid,
585 title = title, 585 instructions = "Complete and submit this form to configure the room.",
586 instructions = title,
587 { 586 {
588 name = 'FORM_TYPE', 587 name = 'FORM_TYPE',
589 type = 'hidden', 588 type = 'hidden',
590 value = 'http://jabber.org/protocol/muc#roomconfig' 589 value = 'http://jabber.org/protocol/muc#roomconfig'
591 }, 590 },
651 type = 'text-single', 650 type = 'text-single',
652 label = 'Maximum Number of History Messages Returned by Room', 651 label = 'Maximum Number of History Messages Returned by Room',
653 value = tostring(self:get_historylength()) 652 value = tostring(self:get_historylength())
654 } 653 }
655 }); 654 });
655 return module:fire_event("muc-config-form", { room = self, form = form }) or form;
656 end 656 end
657 657
658 local valid_whois = { 658 local valid_whois = {
659 moderators = true, 659 moderators = true,
660 anyone = true, 660 anyone = true,
670 670
671 local fields = self:get_form_layout():data(form); 671 local fields = self:get_form_layout():data(form);
672 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 672 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
673 673
674 local dirty = false 674 local dirty = false
675
676 local event = { room = self, fields = fields, changed = dirty };
677 module:fire_event("muc-config-submitted", event);
678 dirty = event.changed or dirty;
675 679
676 local name = fields['muc#roomconfig_roomname']; 680 local name = fields['muc#roomconfig_roomname'];
677 if name ~= self:get_name() then 681 if name ~= self:get_name() then
678 self:set_name(name); 682 self:set_name(name);
679 end 683 end