12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- --- Join org
- -- Adds initiator to an org
- -- @module join_org
- local join_org = {
- name = "Join this org",
- slug = "join_org",
- desc = "Allows initiator to join this org"
- }
- join_org.data = {
- result = nil
- }
- join_org.config = {
- approval_module = false
- }
- --- Initiate join org with consent
- -- @function join_org:initiate
- -- @param result Callback if this module is embedded in other modules
- function join_org:initiate(result)
- if self.org:has_member(self.initiator) then
- modpol.interactions.message(
- self.initiator,
- "You are already a member of this org")
- if result then result() end
- self.org:delete_process(self.id)
- else
- self.data.result = result
- self:call_module(
- self.config.approval_module,
- self.initiator,
- {
- prompt = "Allow " .. self.initiator .. " to join?"
- },
- function ()
- self:complete()
- end
- )
- end
- end
- --- Adds member to org, notifies org, and deletes process
- -- @function join_org:complete
- function join_org:complete()
- self.org:add_member(self.initiator)
- modpol.interactions.message_org(
- self.initiator,self.org.name,
- self.initiator .. " joined org " .. self.org.name)
- if self.data.result then self.data.result() end
- self.org:delete_process(self.id)
- end
- modpol.modules.join_org = join_org
|