mirror of
https://github.com/JamesClarke7283/proposals.git
synced 2025-03-21 16:01:23 +00:00
Make ability to change vote possible
This commit is contained in:
parent
43d8cb7a38
commit
1a6976c968
1 changed files with 19 additions and 11 deletions
30
init.lua
30
init.lua
|
@ -65,13 +65,10 @@ local function show_proposal_details(player_name, proposal_index)
|
||||||
local formspec = "size[8,8]" ..
|
local formspec = "size[8,8]" ..
|
||||||
"label[0.5,0.5;" .. minetest.formspec_escape(proposal.title) .. " by " .. proposal.author .. "]" ..
|
"label[0.5,0.5;" .. minetest.formspec_escape(proposal.title) .. " by " .. proposal.author .. "]" ..
|
||||||
"textarea[0.5,1.5;7.5,2;;" .. minetest.formspec_escape(proposal.description) .. ";]" ..
|
"textarea[0.5,1.5;7.5,2;;" .. minetest.formspec_escape(proposal.description) .. ";]" ..
|
||||||
"label[0.5,4;Votes: Yes(" .. proposal.votes.yes .. ") No(" .. proposal.votes.no .. ") Abstain(" .. proposal.votes.abstain .. ")]"
|
"label[0.5,4;Votes: Yes(" .. proposal.votes.yes .. ") No(" .. proposal.votes.no .. ") Abstain(" .. proposal.votes.abstain .. ")]" ..
|
||||||
|
"button[0.5,5;2,1;vote_yes;Vote Yes]" ..
|
||||||
if not has_voted(player_name, proposal) then
|
"button[3,5;2,1;vote_no;Vote No]" ..
|
||||||
formspec = formspec .. "button[0.5,5;2,1;vote_yes;Vote Yes]" ..
|
"button[5.5,5;2,1;vote_abstain;Abstain]"
|
||||||
"button[3,5;2,1;vote_no;Vote No]" ..
|
|
||||||
"button[5.5,5;2,1;vote_abstain;Abstain]"
|
|
||||||
end
|
|
||||||
|
|
||||||
if is_author or player_has_privilege then
|
if is_author or player_has_privilege then
|
||||||
formspec = formspec .. "button[0.5,6;3,1;delete_proposal;Delete Proposal]"
|
formspec = formspec .. "button[0.5,6;3,1;delete_proposal;Delete Proposal]"
|
||||||
|
@ -84,6 +81,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Register the /vote_changes command
|
-- Register the /vote_changes command
|
||||||
minetest.register_chatcommand("proposals", {
|
minetest.register_chatcommand("proposals", {
|
||||||
description = "Open the voting interface",
|
description = "Open the voting interface",
|
||||||
|
@ -93,6 +91,7 @@ minetest.register_chatcommand("proposals", {
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Handle formspec submissions
|
||||||
-- Handle formspec submissions
|
-- Handle formspec submissions
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
|
@ -119,18 +118,26 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
table.remove(proposals, proposal_index)
|
table.remove(proposals, proposal_index)
|
||||||
save_proposals()
|
save_proposals()
|
||||||
show_formspec(player_name)
|
show_formspec(player_name)
|
||||||
elseif not has_voted(player_name, proposal) then
|
elseif fields.vote_yes or fields.vote_no or fields.vote_abstain then
|
||||||
|
-- Reset previous vote if any
|
||||||
|
if proposal.votes_cast[player_name] then
|
||||||
|
proposal.votes[proposal.votes_cast[player_name]] = proposal.votes[proposal.votes_cast[player_name]] - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Cast new vote
|
||||||
if fields.vote_yes then
|
if fields.vote_yes then
|
||||||
proposal.votes.yes = proposal.votes.yes + 1
|
proposal.votes.yes = proposal.votes.yes + 1
|
||||||
|
proposal.votes_cast[player_name] = 'yes'
|
||||||
elseif fields.vote_no then
|
elseif fields.vote_no then
|
||||||
proposal.votes.no = proposal.votes.no + 1
|
proposal.votes.no = proposal.votes.no + 1
|
||||||
|
proposal.votes_cast[player_name] = 'no'
|
||||||
elseif fields.vote_abstain then
|
elseif fields.vote_abstain then
|
||||||
proposal.votes.abstain = proposal.votes.abstain + 1
|
proposal.votes.abstain = proposal.votes.abstain + 1
|
||||||
|
proposal.votes_cast[player_name] = 'abstain'
|
||||||
end
|
end
|
||||||
proposal.votes_cast = proposal.votes_cast or {}
|
|
||||||
proposal.votes_cast[player_name] = true
|
|
||||||
save_proposals()
|
save_proposals()
|
||||||
show_formspec(player_name)
|
show_proposal_details(player_name, proposal_index)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif formname == "vote_changes:add_proposal" and fields.submit_proposal then
|
elseif formname == "vote_changes:add_proposal" and fields.submit_proposal then
|
||||||
|
@ -147,3 +154,4 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue