Browse Source

working version of join_org module demonstrated in tests/new_module_test.lua

Luke Miller 2 years ago
parent
commit
0ca04294b7

+ 4 - 4
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")

+ 5 - 4
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
 

+ 18 - 0
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

+ 37 - 0
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")

+ 10 - 0
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)