Release of upstream version 4.10. 4.0.10
authorThomas Hochstein <thh@inter.net>
Sun, 16 Sep 2012 15:37:34 +0000 (17:37 +0200)
committerThomas Hochstein <thh@inter.net>
Wed, 19 Sep 2012 20:12:44 +0000 (22:12 +0200)
Signed-off-by: Thomas Hochstein <thh@inter.net>
19 files changed:
CHANGES
README
UVconfig.pm
UVmenu.pm
mailpatterns.cfg
messages.cfg
templates/ack-mail
templates/ballot
templates/ballot-personal
templates/result-multi
templates/result-proportional
templates/result-single
templates/wrong-voting [new file with mode: 0644]
usevote.cfg
uvballot.pl
uvbounce.pl
uvcfv.pl
uvcount.pl
uvvote.pl

diff --git a/CHANGES b/CHANGES
index 306cd4e..281a395 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,9 +1,7 @@
-UseVoteGer Versionshistorie (aktuelle Version: 4.10, released )
+UseVoteGer Versionshistorie (aktuelle Version: 4.10, released 17.09.2012)
 =========================================================================
 
 TODO:
-- Fehler in Annullierungsbearbeitung (wird nur bei erstem oder letztem
-  Abstimmungspunkt ausgewertet)
 - aussortieren von Bounces aus Stimmenliste
 - Unterstuetzung von Maildir
 - [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins
@@ -12,16 +10,27 @@ oder wdiff zwischen Sollwahlschein und wirklich eingreichtem
 Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen
 am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt).
 
-Version 4.10:
+Version 4.10 (17.09.2012):
 - Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren
   Dateien - es wurde nicht korrekt auf vorhandene Temp-Dateien
   geprueft)
 - Typo in bdsgtext.cfg behoben
+- doppelten Identifier "VOTE_NO_VOTES" in messages.cfg/uvvote.pl umbenannt
 - templates/ack-mail: Votetaker (Unterschrift) linksbuendig statt 
   wie vorher rechtsbuendig einfuegen; Anleitung fuer Annullierungen
   verbessert; Hinweis darauf, dass Stimmaenderungen an den
   Voteaccount geschickt werden muessen und nicht einfach als Antwort
   auf die Ack-Mail geschickt werden koennen)
+- Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem
+  oder letztem Abstimmungspunkt ausgewertet)
+- Abstimmungsname wird nun auf Korrektheit geprüft (Wahlschein gehört
+  zur richtigen Abstimmung)
+- neue Konfigurations-Option "ballotintro" und neues Template
+  tpl_wrong_voting
+- usenet@ und news@ werden nicht mehr als ungueltige Mailadressen
+  angesehen. Vor allem usenet@ wird von vielen Waehlern verwendet.
+- Aenderung der Wahlregeln: statt 60 nur noch 50 JA-Stimmen benoetigt
+- kleinere Template-Aenderungen (verbesserte Texte/Formatierungen)
 
 Version 4.09 (14.09.2007):
 - "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
diff --git a/README b/README
index e2a7e66..158e3b6 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-UseVoteGer 4.09  (c) 2001-2007 Marc Langer
+UseVoteGer 4.10  (c) 2001-2012 Marc Langer
 
 UseVoteGer is a voting software for usenet votes.
 
@@ -18,7 +18,7 @@ written in C). Not all functions of Usevote/UseVoteGer 3.x are implemented!
  
 -------------------------------------------------------------------------------
 
-UseVoteGer 4.09 - Usenet-Abstimmungssoftware
+UseVoteGer 4.10 - Usenet-Abstimmungssoftware
 ===========================================
 
 von Marc Langer <uv@marclanger.de>
@@ -89,9 +89,6 @@ I. Einmalig bei der Usevote-Erstinstallation
        sehr einfach mit "perl -MCPAN -e shell", ActivePerl fuer
        Windows hat einen eigenen Paketmanager)
 
-       Achtung: Bei meinem ActivePerl 5.6.1 war eine alte Libnet-Version
-       enthalten, die noch keine SMTP-Authentication unterstuetzte.
-       Bei Benutzung dieses Features muss evtl. erst upgedated werden.
 
 II. Fuer jedes Voting
    (1) usevote.cfg auf das durchzufuehrende Voting anpassen
index c93f135..ee7f21e 100644 (file)
@@ -18,7 +18,7 @@ require Exporter;
 $VERSION = "0.18";
 
 # Usevote version
-$usevote_version = "UseVoteGer 4.09";
+$usevote_version = "UseVoteGer 4.10";
 
 sub read_config {
 
index d90da9c..46eb779 100644 (file)
--- a/UVmenu.pm
+++ b/UVmenu.pm
@@ -17,7 +17,8 @@ $VERSION = "0.4";
 ##############################################################################
 # 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                                                #
@@ -25,7 +26,7 @@ $VERSION = "0.4";
 ##############################################################################
 
 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 || '';
@@ -79,6 +80,7 @@ sub menu {
       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",
@@ -269,6 +271,38 @@ sub menu {
         $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
index 0fbbd31..3add0f8 100644 (file)
@@ -25,7 +25,6 @@ hostmaster@
 install@
 mailer.*@
 maint.*@
-news@
 newsmaster@
 nobody@
 operator@
@@ -38,5 +37,4 @@ sysop@
 system@
 test@
 tutor@
-usenet@
 uucp@ 
index 6b1dd5d..6c9b339 100644 (file)
@@ -29,6 +29,8 @@ MENU_INVALIDBDSG = Datenschutzhinweis fehlerhaft oder nicht bestaetigt.
 MENU_DUPLICATEVOTE = Doppelte Stimmabgabe gefunden.
 MENU_NOVOTE = Keine Stimmabgabe gefunden.
 MENU_INVALIDVOTE = Ungueltige Stimmabgabe.
+MENU_NOVOTING = Bezeichnung der Abstimmung nicht gefunden.
+MENU_WRONGVOTING = Wahlschein fuer andere Abstimmung.
 MENU_NOBALLOTID = Keine Scheinkennung gefunden.
 MENU_WRONGBALLOTID = Scheinkennung falsch.
 MENU_ADDRESSNOTREGISTERED = Adresse nicht registriert.
@@ -67,6 +69,9 @@ MENU_BALLOT_ID = Scheinkennung
 MENU_BDSG = Datenschutzklausel
 MENU_BDSG_ACCEPTED = Datenschutzklausel wurde akzeptiert
 MENU_BDSG_DECLINED = Datenschutzklausel nicht akzeptiert bzw. Text veraendert
+MENU_VOTING = Abstimmung
+MENU_VOTING_CORRECT = Korrekter Wahlschein fuer diese Abstimmung
+MENU_VOTING_WRONG = Wahlschein fuer andere Abstimmung
 MENU_IGNORE = Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
 MENU_IGNORE_WARNING = Die Stimme wird nicht aufgezeichnet, und es wird keine Bestaetigung verschickt. ${MENU_IGNORE_STRING} eingeben, wenn Du sicher bist: 
 MENU_IGNORE_STRING = JA
@@ -162,7 +167,7 @@ COUNT_DELETED = ${NUM} Stimme(n) geloescht.
 VOTE_RENAMING_MAILBOX = Benenne Stimmdatei um...
 VOTE_WRITE_RESULTS = Ergebnisdatei ${FILE} nicht schreibbar!
 VOTE_CLOSE_RESULTS = Ergebnisdatei ${FILE} konnte nicht erfolgreich geschlossen werden!
-VOTE_NO_VOTES = Keine Stimmen zu verarbeiten.
+VOTE_NO_VOTEMAILS = Keine Stimmen zu verarbeiten.
 VOTE_NUM_VOTES = ${COUNT} Stimmen bearbeitet.
 VOTE_NOT_SAVED = ${COUNT} Stimmen bearbeitet, aber nicht gespeichert.
 VOTE_FIRSTRUN = 'uvvote clean' aufrufen, um Ergebnisse zu speichern und Bestaetigungen zu verschicken.
@@ -173,6 +178,7 @@ VOTE_UNREGISTERED_ADDRESS = Adresse nicht registriert
 VOTE_INVALID_VOTE = Ungueltige Stimmabgabe
 VOTE_VIOLATED_RULE = Regel ${RULE} verletzt
 VOTE_NO_VOTES = Keine Stimmen abgegeben
+VOTE_WRONG_VOTING = Wahlschein gehoert nicht zu dieser Abstimmung
 VOTE_INVALID_ACCOUNT = Ungueltiger Account
 VOTE_INVALID_ADDRESS = Ungueltige Adresse
 VOTE_INVALID_REALNAME = Ungueltiger Realname
index 150df0b..4d69cef 100644 (file)
@@ -5,15 +5,22 @@ pos             := value pos | fill-right 2
 group-first    := value group | first-words 50 
 group-more     := value group | drop-words 50 | create-lines 50
 vote            := value vote  | fill-both 10
-votetaker       := value mailfrom | fill-left 65
+votetaker       := value mailfrom
+voteaccount-line := value voteaccount | fill-both 70
 
 == TEMPLATE =================================================================
 Diese automatische Nachricht wurde dir nach Zaehlung deiner Stimme
 zugesandt. Wenn alles stimmt, gibt es keinen Anlass fuer eine Reaktion.
+
 Wenn deine Stimme falsch registriert wurde, stimme bitte erneut ab,
 indem du diese Mail komplett zitierst und die falschen Wertungen
 korrigierst (zwischen die eckigen Klammern schreiben). Dabei darf
 keinesfalls die laufende Nummer am Zeilenanfang entfernt werden.
+Beachte bitte, dass Du Deine Stimme an die Abstimmadresse senden
+musst! Es genuegt daher nicht, einfach auf diese E-Mail zu antworten,
+vielmehr muss die Antwort an die Adresse
+[$voteaccount-line]
+gerichtet sein.
 
 Diese Wahl ist oeffentlich, und die Adressen aller Waehlerinnen und
 Waehler werden am Ende bekanntgegeben. Wenn du deine Adresse & Stimme
@@ -29,8 +36,8 @@ Wahlscheinkennung gueltig!
 [$name-line]
   (Real-Namen sind fuer diese Abstimmung vorgeschrieben. Wenn hier
    nicht Dein wirklicher Name steht, dann korrigiere die Zeile
-   bitte und sende die Nachricht zurueck; sonst kann die Stimme
-   spaeter als ungueltig gewertet werden.)
+   bitte und sende die Nachricht erneut an die Abstimmadresse,
+   sonst kann die Stimme spaeter als ungueltig gewertet werden.)
 
 
 Deine Stimmabgabe wurde wie folgt erkannt:
@@ -39,8 +46,7 @@ Deine Stimmabgabe wurde wie folgt erkannt:
 [@group-more|                        [$line]\n]|\n]
 
 
-Danke fuer deine Stimmabgabe.  Eine Kopie des CfV kannst du von mir er-
-halten (bitte Namen der Abstimmung angeben, falls mehrere laufen).
+Danke fuer deine Stimmabgabe.
 
 [$votetaker]
 \[mit [$usevote_version]\]
index 5e3242a..30add33 100644 (file)
@@ -14,7 +14,7 @@ bdsgtext-more   := value bdsgtext | drop-words 50 | create-lines 50
 
 =-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
 
-WAHLSCHEIN fuer [$votename-first]
+[$ballotintro] [$votename-first]
 [@votename-more|                [$line]\n]
 
 
index 13aef2a..495baec 100644 (file)
@@ -29,7 +29,7 @@ votetaker       := value mailfrom | fill-left 65
 
 =-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
 
-WAHLSCHEIN fuer [$votename-first]
+[$ballotintro] [$votename-first]
 [@votename-more|                [$line]\n]
 
 
index cc3659b..01abd88 100644 (file)
@@ -11,9 +11,10 @@ group-more            := value group | drop-words 40 | create-lines 40
 
 Ergebnisse [$votename-first]
 [@votename-more|           [$line]\n]
-([$numvalid] gueltige Stimmen)
 
- Ja  Nein : 2/3? >=60? : ang.? : Gruppe
+Es wurden [$numvalid] gueltige Stimmen abgegeben.
+
+ Ja  Nein : 2/3? >=50? : ang.? : Gruppe
 ---- ---- : ---- ----- : ----- : ---------------------------------------
 [@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein]  : [?result| Ja |Nein]  : [$group-first]
 [@group-more|          :            :       : [$line]\n]\n]
@@ -24,6 +25,7 @@ Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 E-Mail bei der Moderation von de.admin.news.announce (Adressen
 siehe Signatur) einzulegen.
+
 Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 werden, wird die Moderation von de.admin.news.announce das
 Ergebnis danach umsetzen.
index 53685d1..fa9db75 100644 (file)
@@ -12,7 +12,8 @@ group-more            := value group | drop-words 40 | create-lines 40
 
 Ergebnisse [$votename-first]
 [@votename-more|           [$line]\n]
-([$numvalid] gueltige Stimmen)
+
+Es wurden [$numvalid] gueltige Stimmen abgegeben.
 
  Ja  Nein : J>=N? Ja/Nein : ang.? : Gruppe
 ---- ---- : ----- ------- : ----- : ---------------------------------------
@@ -24,6 +25,7 @@ Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 E-Mail bei der Moderation von de.admin.news.announce (Adressen
 siehe Signatur) einzulegen.
+
 Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 werden, wird die Moderation von de.admin.news.announce das
 Ergebnis danach umsetzen.
index 1be10d2..8345efa 100644 (file)
@@ -8,19 +8,21 @@ votename-text-more    := value votename | drop-words 30 | create-lines 72
 
 Ergebnisse [$votename-first]
 [@votename-more|           [$line]\n]
-([$numvalid] gueltige Stimmen)
+
+Es wurden [$numvalid] gueltige Stimmen abgegeben.
 
 Es gab [$yes] Ja-Stimmen und [$no] Nein-Stimmen[?numabstain| bei [$numabstain] Enthaltungen].
 [?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
 
 Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
-60 Ja-Stimmen ein. Damit ist die [$votename-text-first]
+50 Ja-Stimmen ein. Damit ist die [$votename-text-first]
 [@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
 
 Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 E-Mail bei der Moderation von de.admin.news.announce (Adressen
 siehe Signatur) einzulegen.
+
 Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 werden, wird die Moderation von de.admin.news.announce das
 Ergebnis danach umsetzen.
diff --git a/templates/wrong-voting b/templates/wrong-voting
new file mode 100644 (file)
index 0000000..f233b7d
--- /dev/null
@@ -0,0 +1,21 @@
+votetaker       := value mailfrom | fill-left 65
+body            := value body     | quote "> "
+
+== TEMPLATE =================================================================
+Offenbar hast du einen Wahlschein fuer eine andere Abstimmung eingesandt
+oder der Name der Abstimmung geht aus dem Wahlschein nicht hervor. Wenn
+das ein Irrtum war, pruefe bitte noch einmal die im CfV angegebene
+Abstimmungsadresse und wiederhole Deine Stimmabgabe.
+
+Dieser Fehler kann auftreten, wenn Du an mehreren Abstimmungen teilnimmst
+und den Wahlschein von Hand einsendest (und dabei mehrere Abstimmungen
+verwechselst), oder wenn Du die Bezeichnung der Abstimmung im Wahlschein
+veraendert oder geloescht hast.
+
+Hier die Mail, die ich erhalten habe:
+
+[$body]
+
+
+[$votetaker]
+\[mit [$usevote_version]\]
index cf801f5..d6a6b33 100644 (file)
@@ -75,7 +75,7 @@ multigroup = 1
 # wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
 # werden.
 condition1 = $yes>=2*$no
-condition2 = $yes>=60
+condition2 = $yes>=50
 
 # Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden
 # (wird bei jedem Programmlauf neu erstellt!)
@@ -227,6 +227,10 @@ mailstart = "^From "
 begin_divider = Alles vor dieser Zeile bitte loeschen
 end_divider = Alles nach dieser Zeile bitte loeschen
 
+# Ueberschrift fuer den Wahlschein
+# Achtung, muss im Wahlschein genauso stehen!
+ballotintro = WAHLSCHEIN fuer
+
 # Text fuer die Namens-Angabe im Wahlschein. Achtung, muss im
 # Wahlschein genauso stehen!
 nametext = Dein Realname, falls nicht im FROM-Header:
@@ -290,4 +294,5 @@ tpl_invalid_name = "invalid-name"        # used by uvvote.pl
 tpl_multiple_votes = "multiple-votes"    # used by uvvote.pl
 tpl_no_ballot = "no-ballot"              # used by uvvote.pl
 tpl_no_votes = "no-votes"                # used by uvvote.pl
+tpl_wrong_voting = "wrong-voting"        # used by uvvote.pl
 tpl_rule_violated = "rule-violated"      # used by uvvote.pl   (c.f. usevote.rul)
index 4085a7f..7081744 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Wahlscheingenerierung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.10 Wahlscheingenerierung
+# (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
index 1bf5139..eb95143 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Bounce-Verarbeitung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.10 Bounce-Verarbeitung
+# (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
index 74174c6..f2a81b0 100644 (file)
--- a/uvcfv.pl
+++ b/uvcfv.pl
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Personalisierte Wahlscheine
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.10 Personalisierte Wahlscheine
+# (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
@@ -152,9 +152,9 @@ sub process_request {
     # check for suspicious addresses
     foreach my $element (@bad_addr) {
       if ($voter_addr =~ /^$element/) {
-        my (@votes, @set, $ballot_id); # irrelevant, but necessary for UVmenu::menu()
+        my (@votes, @set, $ballot_id, $voting); # irrelevant, but necessary for UVmenu::menu()
         my @errors = ('SuspiciousAccountBallot');
-        my $res = UVmenu::menu(\@votes, \@header, $body, \$voter_addr, \$voter_name, \$ballot_id, \@set, \@errors);
+        my $res = UVmenu::menu(\@votes, \@header, $body, \$voter_addr, \$voter_name, \$ballot_id, \$voting, \@set, \@errors);
 
         # "Ignore": don't deliver a ballot
         return 0 if ($res eq 'i');
index 014494e..5c4ba2f 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Stimmauswertung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.10 Stimmauswertung
+# (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
index ff8f1b9..4affb4c 100644 (file)
--- a/uvvote.pl
+++ b/uvvote.pl
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Wahldurchfuehrung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.10 Wahldurchfuehrung
+# (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
@@ -158,7 +158,7 @@ if ($clean) {
 
   # no mails: exit here
   unless ($count) {
-    print UVmessage::get("VOTE_NO_VOTES") . "\n\n";
+    print UVmessage::get("VOTE_NO_VOTEMAILS") . "\n\n";
     exit 0;
   }
 
@@ -224,6 +224,7 @@ sub process_vote {
   my $onevote = 0;             # 0=no votes, 1=everything OK, 2=vote cancelled
   my $voteerror = "";          # error message in case of invalid vote
   my $ballot_id = "";          # ballot id (German: Wahlscheinkennung)
+  my $voting = "";             # voting (should be votename)
 
   # found address?
   if ($voter_addr) {
@@ -239,6 +240,15 @@ sub process_vote {
     push (@errors, 'InvalidAddress');
   }
 
+  # correct voting?
+  if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)\s*\n(.*?[\t ]+(\S+.+)\s*$)?/m) {
+    $voting = $1;
+    $voting .= " $3" if defined($3);
+    push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/);
+  } else {
+    push (@errors, 'NoVoting');
+  }
+
   # personalized ballots?
   if ($config{personal}) {
     if ($$body =~ /$config{ballotidtext}\s+([a-z0-9]+)/) {
@@ -273,7 +283,7 @@ sub process_vote {
     # this matches on a single appearance:
     if ($$body =~ /#$votenum\W*?\[(.+)\]/) {
       # one or more vote strings were found
-      $onevote = 1;
+      $onevote ||= 1; # set $onevote to 1 if it was 0
       my $votestring = $1;
       if ($votestring =~ /^\W*$config{ja_stimme}\W*$/i) {
         $vote = "J";
@@ -343,7 +353,7 @@ sub process_vote {
   # Errors encountered?
   if (@errors) {
     my $res = UVmenu::menu(\@votes, \@header, $body, \$voter_addr, \$voter_name,
-                           \$ballot_id, \@set, \@errors);
+                           \$ballot_id, \$voting, \@set, \@errors);
     return 0 if ($res eq 'i');      # "Ignore": Ignore vote, don't save
 
     my $tpl;
@@ -402,6 +412,12 @@ sub process_vote {
       my $msg = $template->processTemplate($config{tpl_bdsg_error});
       UVsendmail::mail($voter_addr, "Fehler", $msg, $msgid) if ($config{voteack});
       return 0;
+    } elsif ($error{NoVoting} or $error{WrongVoting}) {
+      $voteerror = UVmessage::get("VOTE_WRONG_VOTING");
+      my $template = UVtemplate->new();
+      $template->setKey('body'  => $$body);
+      my $msg = $template->processTemplate($config{tpl_wrong_voting});
+      UVsendmail::mail($voter_addr, "Fehler", $msg, $msgid) if ($config{voteack});
     } elsif ($error{NoVote}) {
       $voteerror = UVmessage::get("VOTE_NO_VOTES");
       my $template = UVtemplate->new();
This page took 0.025641 seconds and 4 git commands to generate.