From 48b5b3070ba48bc3cd3c967e954cc4e7c0b40885 Mon Sep 17 00:00:00 2001
From: Nathan Schneider <n@nathanschneider.info>
Date: Mon, 10 May 2021 23:24:52 -0600
Subject: [PATCH] Added list_processes and began adding process logic to Join
 button in interactions

---
 modpol/processes/processes.lua                    | 15 +++++++++++++++
 .../overrides/interactions/interactions.lua       | 11 +++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/modpol/processes/processes.lua b/modpol/processes/processes.lua
index 8a6c699..77303de 100644
--- a/modpol/processes/processes.lua
+++ b/modpol/processes/processes.lua
@@ -13,6 +13,21 @@
 
 modpol.processes = {}
 
+
+-- Function: modpol.list_processes
+-- output: a table of the names of processes
+function modpol.list_processes()
+   local output = {}
+   if modpol.processes then
+      for k,v in ipairs(modpol.processes) do
+         if v.name then
+            table.insert(output,v.name)
+         end
+      end
+   end
+   return output
+end
+
 -- ===================================================================
 -- Function: modpol.register_process
 -- Adds a process to modpol.processes
diff --git a/modpol_minetest/overrides/interactions/interactions.lua b/modpol_minetest/overrides/interactions/interactions.lua
index 30ec7f0..19ecc5f 100644
--- a/modpol_minetest/overrides/interactions/interactions.lua
+++ b/modpol_minetest/overrides/interactions/interactions.lua
@@ -53,6 +53,7 @@ function modpol.interactions.dashboard(user)
    local all_orgs = modpol.orgs.list_all()
    local user_orgs = modpol.orgs.user_orgs(user)
    local all_users = modpol.list_users()
+   local all_processes = modpol.list_processes()
    -- set up formspec
     local formspec = {
        "formspec_version[4]",
@@ -65,7 +66,7 @@ function modpol.interactions.dashboard(user)
        "label[0.5,4;All users:]",
        "dropdown[2,3.5;5,0.8;all_users;"..formspec_list(all_users)..";;]",
        "label[0.5,5;Processes:]",
-       "dropdown[2,4.5;5,0.8;processes;TBA;;]",
+       "dropdown[2,4.5;5,0.8;processes;"..formspec_list(all_processess)..";;]",
        "button[0.5,7;1,0.8;test_poll;Test poll]",
        "button[2,7;1,0.8;add_org;Add org]",
        "button[3.5,7;1.5,0.8;remove_org;Remove org]",
@@ -160,7 +161,13 @@ minetest.register_on_player_receive_fields(function (player, formname, fields)
          local org = modpol.orgs.get_org(_contexts[pname].current_org)
          if nil then
          elseif fields.join then
-            org:add_member(pname)
+            local new_request = {
+               user = player,
+               type = "add_member",
+               params = {player}
+            }
+            org:make_request(new_request)
+            --org:add_member(pname)
             modpol.interactions.org_dashboard(pname,org.name)
          elseif fields.leave then
             org:remove_member(pname)