##############################################################################
# Menu for interaction with the votetaker #
# Parameters: votes list and header (references to arrays) #
-# Body, Mailadress, Name, Ballot ID (references to strings) #
+# Body, Mailadress, Name, Ballot ID, #
+# Voting (references to strings) #
# List of newly set fields (reference to array) #
# List of errors to correct (Array-Ref) #
# Return Values: 'w': proceed #
##############################################################################
sub menu {
- my ($votes, $header, $body, $addr, $name, $ballot_id, $set, $errors) = @_;
+ my ($votes, $header, $body, $addr, $name, $ballot_id, $voting, $set, $errors) = @_;
my $input = "";
my $voter_addr = $$addr || '';
my $voter_name = $$name || '';
my $menucaption = UVmessage::get("MENU_CAPTION");
print "\n\n$menucaption\n";
print "=" x length($menucaption), "\n\n";
+
+ # don't print this option if called from uvcfv.pl
+ unless ($mailonly) {
+ print "(0) ", UVmessage::get("MENU_DIFF_BALLOT"), "\n";
+ }
+
print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n",
UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
"(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n";
print "(5) ", UVmessage::get("MENU_BALLOT_ID"), " [$$ballot_id]\n"
if ($config{personal});
print "(6) ", UVmessage::get("MENU_BDSG"), "\n" if ($config{bdsg});
+ print "(7) ", UVmessage::get("MENU_VOTING"), " [", $$voting, "]\n";
}
print "\n",
# only accept 1, 2, i and w if called from uvcfv.pl
next if ($mailonly && $input !~ /^[12iw]$/i);
- if ($input eq '1') {
+ if ($input eq '0') {
+ # ignore SIGPIPE (Bug in more and less)
+ $SIG{PIPE} = 'IGNORE';
+ open (DIFF, "|$config{diff} - $config{sampleballotfile} | $config{pager}");
+ print DIFF $$body, "\n";
+ close (DIFF);
+
+ } elsif ($input eq '1') {
system($config{clearcmd});
# ignore SIGPIPE (Bug in more and less)
$SIG{PIPE} = 'IGNORE';
$errors{InvalidBDSG} = UVmessage::get("MENU_INVALIDBDSG");
}
+ } elsif ($input eq '7') {
+ my $sel;
+ do {
+ print "[a] ", UVmessage::get("MENU_VOTING_CORRECT"), "\n",
+ "[b] ", UVmessage::get("MENU_VOTING_WRONG"), "\n\n",
+ UVmessage::get("MENU_PROMPT");
+ $sel = <STDIN>;
+ } until ($sel =~ /^[ab]$/i);
+
+ if ($sel =~ /^a$/i) {
+ delete $errors{NoVoting};
+ delete $errors{WrongVoting};
+ } else {
+ $errors{WrongVoting} = UVmessage::get("MENU_WRONGVOTING");
+ }
+
+ } elsif ($input eq '7') {
+ my $sel;
+ do {
+ print "[a] ", UVmessage::get("MENU_VOTING_CORRECT"), "\n",
+ "[b] ", UVmessage::get("MENU_VOTING_WRONG"), "\n\n",
+ UVmessage::get("MENU_PROMPT");
+ $sel = <STDIN>;
+ } until ($sel =~ /^[ab]$/i);
+
+ if ($sel =~ /^a$/i) {
+ delete $errors{NoVoting};
+ delete $errors{WrongVoting};
+ } else {
+ $errors{WrongVoting} = UVmessage::get("MENU_WRONGVOTING");
+ }
+
} elsif ($input =~ /^i$/i) {
my $ignore = UVmessage::get("MENU_IGNORE_STRING");
# Set columns for Text::Wrap