|
@@ -66,13 +66,13 @@ function modpol.interactions.dashboard(user)
|
|
|
"size[10,8]",
|
|
|
"hypertext[0.5,0.5;9,1;title;<big>Org dashboard</big>]",
|
|
|
"label[0.5,2;All orgs:]",
|
|
|
- "dropdown[2,1.5;7,0.8;all_orgs;View...,"..formspec_list(all_orgs)..";;]",
|
|
|
+ "dropdown[2.5,1.5;7,0.8;all_orgs;View...,"..formspec_list(all_orgs)..";;]",
|
|
|
"label[0.5,3;Your orgs:]",
|
|
|
- "dropdown[2,2.5;7,0.8;user_orgs;View...,"..formspec_list(user_orgs)..";;]",
|
|
|
+ "dropdown[2.5,2.5;7,0.8;user_orgs;View...,"..formspec_list(user_orgs)..";;]",
|
|
|
"label[0.5,4;All users:]",
|
|
|
- "dropdown[2,3.5;7,0.8;all_users;View...,"..formspec_list(all_users)..";;]",
|
|
|
+ "dropdown[2.5,3.5;7,0.8;all_users;View...,"..formspec_list(all_users)..";;]",
|
|
|
"label[0.5,5;Pending ("..user_pending_count.."):]",
|
|
|
- "dropdown[2,4.5;7,0.8;pending;View...,"..formspec_list(user_pending)..";;]",
|
|
|
+ "dropdown[2.5,4.5;7,0.8;pending;View...,"..formspec_list(user_pending)..";;]",
|
|
|
"button[0.5,7;1,0.8;refresh;Refresh]",
|
|
|
"button_exit[8.5,7;1,0.8;close;Close]",
|
|
|
}
|
|
@@ -181,13 +181,13 @@ function modpol.interactions.org_dashboard(user, org_string)
|
|
|
minetest.formspec_escape(org.name).."</b>"..membership_toggle(org.name).."</big>]",
|
|
|
"label[0.5,1.25;Parent: "..parent..membership_toggle(parent).."]",
|
|
|
"label[0.5,2;Members:]",
|
|
|
- "dropdown[2,1.5;7,0.8;members;View...,"..formspec_list(members)..";;]",
|
|
|
+ "dropdown[2.5,1.5;7,0.8;members;View...,"..formspec_list(members)..";;]",
|
|
|
"label[0.5,3;Child orgs:]",
|
|
|
- "dropdown[2,2.5;7,0.8;children;View...,"..formspec_list(children)..";;]",
|
|
|
+ "dropdown[2.5,2.5;7,0.8;children;View...,"..formspec_list(children)..";;]",
|
|
|
"label[0.5,4;Modules:]",
|
|
|
- "dropdown[2,3.5;7,0.8;modules;View...,"..formspec_list(modules)..";;]",
|
|
|
+ "dropdown[2.5,3.5;7,0.8;modules;View...,"..formspec_list(modules)..";;]",
|
|
|
"label[0.5,5;Pending ("..num_pending.."):]",
|
|
|
- "dropdown[2,4.5;7,0.8;pending;View...,"..formspec_list(pending)..";;]",
|
|
|
+ "dropdown[2.5,4.5;7,0.8;pending;View...,"..formspec_list(pending)..";;]",
|
|
|
"button[0.5,7;1,0.8;refresh;Refresh]",
|
|
|
"button[8.5,7;1,0.8;back;Back]",
|
|
|
}
|
|
@@ -286,7 +286,7 @@ function modpol.interactions.user_dashboard(viewer, user, completion)
|
|
|
"size[10,8]",
|
|
|
"hypertext[0.5,0.5;9,1;title;<big>User: <b>"..user.."</b></big>]",
|
|
|
"label[0.5,2;User's orgs:]",
|
|
|
- "dropdown[2,1.5;7,0.8;user_orgs;View...,"..formspec_list(user_orgs)..";;]",
|
|
|
+ "dropdown[2.5,1.5;7,0.8;user_orgs;View...,"..formspec_list(user_orgs)..";;]",
|
|
|
"button[0.5,7;1.5,0.8;message;Message]",
|
|
|
"button_exit[8.5,7;1,0.8;close;Close]",
|
|
|
}
|
|
@@ -484,6 +484,85 @@ minetest.register_on_player_receive_fields(function (player, formname, fields)
|
|
|
end
|
|
|
end)
|
|
|
|
|
|
+
|
|
|
+--- Function: modpol.interactions.checkbox_query
|
|
|
+-- Allows user to select from a set of options
|
|
|
+-- @param user Name of user (string)
|
|
|
+-- @param label Query for user before options (string)
|
|
|
+-- @param options table of options and their checked status in the form {{"option_1_string", true}, {"option_2_string", false}}
|
|
|
+-- @param func function to be called with param "input", made up of the corrected table in the same format as the param options
|
|
|
+function modpol.interactions.checkbox_query(
|
|
|
+ user, label, options, func)
|
|
|
+ -- set up formspec
|
|
|
+ -- prepare options
|
|
|
+ local vertical = 0
|
|
|
+ local checkbox_options = {}
|
|
|
+ for i,v in ipairs(options) do
|
|
|
+ local fs_line = ""
|
|
|
+ vertical = i * .5
|
|
|
+ fs_line = "checkbox[0,"..vertical..";checkbox_"..i..";"..
|
|
|
+ v[1]..";"..tostring(v[2]).."]"
|
|
|
+ table.insert(checkbox_options, fs_line)
|
|
|
+ end
|
|
|
+ local max = vertical * 4
|
|
|
+ local bar_height = vertical / 2
|
|
|
+ local formspec = {
|
|
|
+ "formspec_version[4]",
|
|
|
+ "size[10,8]",
|
|
|
+ "label[0.5,0.5;"..label.."]",
|
|
|
+ "scrollbaroptions[arrows=default;max="..max..";smallstep=10;largestep=100;thumbsize="..bar_height.."]",
|
|
|
+ "scrollbar[9,1;0.3,5.5;vertical;scroller;0]",
|
|
|
+ "scroll_container[0.5,1;9,5.5;scroller;vertical]",
|
|
|
+ }
|
|
|
+ -- prepare options
|
|
|
+ for i,v in ipairs(options) do
|
|
|
+ local fs_line = ""
|
|
|
+ local vertical = i * .5
|
|
|
+ fs_line = "checkbox[0,"..vertical..";checkbox_"..i..";"..
|
|
|
+ minetest.formspec_escape(v[1])..";"
|
|
|
+ ..tostring(v[2]).."]"
|
|
|
+ table.insert(formspec, fs_line)
|
|
|
+ end
|
|
|
+ table.insert(formspec,"scroll_container_end[]")
|
|
|
+ table.insert(formspec,"button[0.5,7;1.5,0.8;submit;Submit]")
|
|
|
+ table.insert(
|
|
|
+ formspec,"button_exit[8,7;1.5,0.8;cancel;Cancel]")
|
|
|
+ local formspec_string = table.concat(formspec, "")
|
|
|
+ -- present to players
|
|
|
+ minetest.show_formspec(user, "modpol:checkbox_query", formspec_string)
|
|
|
+ -- put func in _contexts
|
|
|
+ if _contexts[user] == nil then _contexts[user] = {} end
|
|
|
+ _contexts[user]["checkbox_query_func"] = func
|
|
|
+ _contexts[user]["checkbox_query_result"] = options
|
|
|
+end
|
|
|
+-- receive fields
|
|
|
+minetest.register_on_player_receive_fields(function (player, formname, fields)
|
|
|
+ if formname == "modpol:checkbox_query" then
|
|
|
+ local pname = player:get_player_name()
|
|
|
+ -- start checking fields
|
|
|
+ if fields.cancel then
|
|
|
+ minetest.close_formspec(pname, formname)
|
|
|
+ elseif fields.submit then
|
|
|
+ -- send in result
|
|
|
+ minetest.close_formspec(pname, formname)
|
|
|
+ _contexts[pname].checkbox_query_func(
|
|
|
+ _contexts[pname].checkbox_query_result)
|
|
|
+ else
|
|
|
+ for k,v in pairs(fields) do
|
|
|
+ -- identify checkbox actions and flip bool
|
|
|
+ if string.find(k,"checkbox_") then
|
|
|
+ local index = tonumber(
|
|
|
+ string.match(k,"%d+"))
|
|
|
+ _contexts[pname].checkbox_query_result[index][2] =
|
|
|
+ not _contexts[pname].checkbox_query_result[index][2]
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+end)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
-- Function: modpol.binary_poll_user(user, question, function)
|
|
|
-- Overrides function at modpol/interactions.lua
|
|
|
-- Params: user (string), question (string), func (function)
|