Merge branch 'thh-pickfromupstream' into next
[usenet/usevote.git] / uvballot.pl
1 #!/usr/bin/perl -w
2
3 ###############################################################################
4 # UseVoteGer 4.11 Wahlscheingenerierung
5 # (c) 2001-2012 Marc Langer <uv@marclanger.de>
6
7 # This script package is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Public License as published by the
9 # Free Software Foundation.
10 #
11 # Use this script to create the ballot which can be inserted into the CfV.
12 # Not for personal ballots (personal=1 in usevote.cfg), use uvcfv.pl instead.
13 #
14 # Many thanks to:
15 # - Ron Dippold (Usevote 3.0, 1993/94)
16 # - Frederik Ramm (German translation, 1994)
17 # - Wolfgang Behrens (UseVoteGer 3.1, based on Frederik's translation, 1998/99)
18 # - Cornell Binder for some good advice and code fragments
19 #
20 # This is a complete rewrite of UseVoteGer 3.1 in Perl (former versions were
21 # written in C). Not all functions of Usevote/UseVoteGer 3.x are implemented!
22 ###############################################################################
23
24 use strict;
25 use Getopt::Long;
26 use Text::Wrap qw(wrap $columns);
27 use FindBin qw($Bin);
28 use lib $Bin;
29 use UVconfig;
30 use UVtemplate;
31
32 my %opt_ctl = ();
33
34 print STDERR "\n$usevote_version Wahlscheingenerierung - (c) 2001-2005 Marc Langer\n\n";
35
36 # unknown parameters remain in @ARGV (for "help")
37 Getopt::Long::Configure(qw(pass_through bundling));
38
39 # Put known parameters in %opt_ctl
40 GetOptions(\%opt_ctl, qw(t|template c|config-file=s));
41
42 # Additional parameters or invalid options? Show help and exit.
43 help() if (@ARGV);
44
45 # Get name auf config file (default: usevote.cfg) and read it
46 my $cfgfile   = $opt_ctl{c} || "usevote.cfg";
47 UVconfig::read_config($cfgfile);
48
49 # Set columns for Text::Wrap
50 $columns = $config{rightmargin};
51
52 if ($config{personal}) {
53   print_ballot_personal();
54 } else {
55   print_ballot();
56 }
57
58 exit 0;
59
60
61 ##############################################################################
62 # Print out a proper ballot                                                  #
63 ##############################################################################
64
65 sub print_ballot {
66
67   my $template = UVtemplate->new();
68
69   $template->setKey('votename' => $config{votename});
70   $template->setKey('nametext' => $config{nametext});
71   $template->setKey('bdsg'     => $config{bdsg});
72   $template->setKey('bdsgtext' => $config{bdsgtext});
73   $template->setKey('bdsginfo' => $config{bdsginfo});
74
75   for (my $n=0; $n<@groups; $n++) {
76      $template->addListItem('groups', pos=>$n+1, group=>$groups[$n]);
77   }
78
79   print $template->processTemplate($config{'tpl_ballot'});
80
81 }
82
83
84 ##############################################################################
85 # Generate a ballot request (if personalized ballots are activated)          #
86 ##############################################################################
87
88 sub print_ballot_personal {
89   my $template = UVtemplate->new();
90   $template->setKey('mailaddress' => $config{mailfrom});
91   print $template->processTemplate($config{'tpl_ballot_request'});
92 }
93
94
95 ##############################################################################
96 # Print help text (options and syntax) on -h or --help                       #
97 ##############################################################################
98
99 sub help {
100   print STDERR <<EOF;
101 Usage: uvballot.pl [-c config_file]
102        uvballot.pl -h
103
104 Generiert den Wahlschein fuer den CfV. Bei personalisierten Wahlscheinen
105 (personal = 1 in usevote.cfg) wird nur ein Dummy-Abschnitt mit Hinweisen
106 zur Wahlscheinanforderung ausgegeben.
107
108   -c config_file   liest die Konfiguration aus config_file
109                    (usevote.cfg falls nicht angegeben)
110
111   -h, --help       zeigt diesen Hilfetext an
112
113 EOF
114
115   exit 0;
116 }
This page took 0.011946 seconds and 3 git commands to generate.