FIX: Votes lost when editing a poll option with votes.

This commit is contained in:
Guo Xiang Tan
2017-01-16 22:51:57 +08:00
parent d4b2a635c7
commit 8c4dfdfa40
2 changed files with 47 additions and 9 deletions

View File

@ -64,7 +64,10 @@ module DiscoursePoll
end
polls[poll_name]["voters"] = previous_polls[poll_name]["voters"]
polls[poll_name]["anonymous_voters"] = previous_polls[poll_name]["anonymous_voters"] if previous_polls[poll_name].has_key?("anonymous_voters")
if previous_polls[poll_name].has_key?("anonymous_voters")
polls[poll_name]["anonymous_voters"] = previous_polls[poll_name]["anonymous_voters"]
end
previous_options = previous_polls[poll_name]["options"]
public_poll = polls[poll_name]["public"] == "true"
@ -72,7 +75,19 @@ module DiscoursePoll
polls[poll_name]["options"].each_with_index do |option, index|
previous_option = previous_options[index]
option["votes"] = previous_option["votes"]
option["anonymous_votes"] = previous_option["anonymous_votes"] if previous_option.has_key?("anonymous_votes")
if previous_option["id"] != option["id"]
if votes_fields = post.custom_fields[DiscoursePoll::VOTES_CUSTOM_FIELD]
votes_fields.each do |key, value|
index = value[poll_name].index(previous_option["id"])
votes_fields[key][poll_name][index] = option["id"] if index
end
end
end
if previous_option.has_key?("anonymous_votes")
option["anonymous_votes"] = previous_option["anonymous_votes"]
end
if public_poll && previous_option.has_key?("voter_ids")
option["voter_ids"] = previous_option["voter_ids"]