251 return self._data.password; |
251 return self._data.password; |
252 end |
252 end |
253 function room_mt:set_moderated(moderated) |
253 function room_mt:set_moderated(moderated) |
254 moderated = moderated and true or nil; |
254 moderated = moderated and true or nil; |
255 if self._data.moderated ~= moderated then |
255 if self._data.moderated ~= moderated then |
256 self._data.moderated = |
256 self._data.moderated = moderated; |
257 if self.save then self:save(true); end |
257 if self.save then self:save(true); end |
258 end |
258 end |
259 end |
259 end |
260 function room_mt:is_moderated() |
260 function room_mt:is_moderated() |
261 return self._data.moderated; |
261 return self._data.moderated; |
473 :up() |
473 :up() |
474 :up() |
474 :up() |
475 :tag("field", {type='text-private', label='Password', var='muc#roomconfig_roomsecret'}) |
475 :tag("field", {type='text-private', label='Password', var='muc#roomconfig_roomsecret'}) |
476 :tag("value"):text(self:get_password() or ""):up() |
476 :tag("value"):text(self:get_password() or ""):up() |
477 :up() |
477 :up() |
|
478 :tag("field", {type='boolean', label='Make Room Moderated?', var='muc#roomconfig_moderatedroom'}) |
|
479 :tag("value"):text(self:is_moderated() and "1" or "0"):up() |
|
480 :up() |
478 ); |
481 ); |
479 end |
482 end |
480 |
483 |
481 local valid_whois = { |
484 local valid_whois = { |
482 moderators = true, |
485 moderators = true, |
505 else origin.send(st.error_reply(stanza, "cancel", "bad-request")); return; end |
508 else origin.send(st.error_reply(stanza, "cancel", "bad-request")); return; end |
506 dirty = dirty or (self._data.persistent ~= persistent) |
509 dirty = dirty or (self._data.persistent ~= persistent) |
507 self._data.persistent = persistent; |
510 self._data.persistent = persistent; |
508 module:log("debug", "persistent=%s", tostring(persistent)); |
511 module:log("debug", "persistent=%s", tostring(persistent)); |
509 |
512 |
|
513 local moderated = fields['muc#roomconfig_moderatedroom']; |
|
514 if moderated == "0" or moderated == "false" then moderated = nil; elseif moderated == "1" or moderated == "true" then moderated = true; |
|
515 else origin.send(st.error_reply(stanza, "cancel", "bad-request")); return; end |
|
516 dirty = dirty or (self:is_moderated() ~= moderated) |
|
517 module:log("debug", "moderated=%s", tostring(moderated)); |
|
518 |
510 local public = fields['muc#roomconfig_publicroom']; |
519 local public = fields['muc#roomconfig_publicroom']; |
511 if public == "0" or public == "false" then public = nil; elseif public == "1" or public == "true" then public = true; |
520 if public == "0" or public == "false" then public = nil; elseif public == "1" or public == "true" then public = true; |
512 else origin.send(st.error_reply(stanza, "cancel", "bad-request")); return; end |
521 else origin.send(st.error_reply(stanza, "cancel", "bad-request")); return; end |
513 dirty = dirty or (self._data.hidden ~= (not public and true or nil)) |
522 dirty = dirty or (self._data.hidden ~= (not public and true or nil)) |
514 self._data.hidden = not public and true or nil; |
523 self._data.hidden = not public and true or nil; |
524 |
533 |
525 local password = fields['muc#roomconfig_roomsecret']; |
534 local password = fields['muc#roomconfig_roomsecret']; |
526 if password then |
535 if password then |
527 self:set_password(password); |
536 self:set_password(password); |
528 end |
537 end |
|
538 self:set_moderated(moderated); |
529 |
539 |
530 if self.save then self:save(true); end |
540 if self.save then self:save(true); end |
531 origin.send(st.reply(stanza)); |
541 origin.send(st.reply(stanza)); |
532 |
542 |
533 if dirty or whois_changed then |
543 if dirty or whois_changed then |