diff --git a/modpol/api.lua b/modpol/api.lua index 2b11371..d20c88f 100644 --- a/modpol/api.lua +++ b/modpol/api.lua @@ -9,12 +9,12 @@ dofile (localdir .. "/users/users.lua") dofile (localdir .. "/orgs/base.lua") dofile (localdir .. "/orgs/requests.lua") dofile (localdir .. "/orgs/consent.lua") -dofile (localdir .. "/orgs/defer_to.lua") +dofile (localdir .. "/orgs/defer.lua") --interactions dofile (localdir .. "/interactions/interactions.lua") --modules -dofile (loaldir .. "/modules/join_org.lua") -dofile (loaldir .. "/modules/remove_org.lua") -dofile (loaldir .. "/modules/child_org.lua") +dofile (localdir .. "/modules/join_org.lua") +dofile (localdir .. "/modules/remove_org.lua") +dofile (localdir .. "/modules/child_org.lua") diff --git a/modpol/modpol.lua b/modpol/modpol.lua index 21a63b2..e1f62cb 100644 --- a/modpol/modpol.lua +++ b/modpol/modpol.lua @@ -63,10 +63,6 @@ dofile (modpol.storage_file_path) -- If available, load persistent storage into active tables modpol.load_storage() --- =================================================================== --- Modpol core features - -dofile (topdir .. "/api.lua") -- =================================================================== -- Modpol modules @@ -75,6 +71,11 @@ modpol.modules = modpol.modules or {} -- TKTK need to specify modules to include +-- =================================================================== +-- Modpol core features + +dofile (topdir .. "/api.lua") + -- =================================================================== -- Final checks diff --git a/modpol/modules/join_org.lua b/modpol/modules/join_org.lua index e69de29..a608481 100644 --- a/modpol/modules/join_org.lua +++ b/modpol/modules/join_org.lua @@ -0,0 +1,18 @@ + +join_org = {} + +function join_org.initiate(initiator, org, result) + modpol.interactions.binary_poll_user( + initiator, + "Would you like to join " .. org.name, + function (resp) + if resp == "Yes" then + org:add_member(initiator) + end + end + ) + + if result then result() end +end + +modpol.modules.join_org = join_org diff --git a/modpol/modules/join_org_class.lua b/modpol/modules/join_org_class.lua new file mode 100644 index 0000000..ccb29c2 --- /dev/null +++ b/modpol/modules/join_org_class.lua @@ -0,0 +1,37 @@ +-- JOIN ORG +-- Module that enables a user to join an org + +modpol.modules.join_org = {} +module = modpol.modules.join_org + +JoinOrg = {} +JoinOrg_mt = { __index = JoinOrg } + + +function JoinOrg:create(initiator, org) + local inst = { + name = "Join an org", + desc = "Initiator chooses an org to become a member of. Nothing happens if they are already in an org." + } + setmetatable(inst, JoinOrg_mt) + return inst + +end + +function JoinOrg:initiate(initiator, org, result) + modpol.interactions.binary_poll_user(initiator, "Would you like to join", ) +end + +function JoinOrg:request() + +end + +function JoinOrg:implement() + self.org:add_member(self.initiator) +end + +-- =================================== +-- When calling a module internally + +test = JoinOrg.create() +test:initiate("luke") \ No newline at end of file diff --git a/modpol/tests/new_module_test.lua b/modpol/tests/new_module_test.lua new file mode 100644 index 0000000..3a0201f --- /dev/null +++ b/modpol/tests/new_module_test.lua @@ -0,0 +1,10 @@ +dofile('../modpol.lua'); + +modpol.orgs.reset() + +test_org = modpol.instance:add_org('test_org', 'luke') +test_org:add_member('nathan') + +print(table.concat(test_org:list_members(), ", ")) + +modpol.modules.join_org.initiate("paul", test_org, function () print("callback") end) \ No newline at end of file