| HTML-Ballot-Trusting documentation | view source | Contained in the HTML-Ballot-Trusting distribution. |
HTML::Ballot::Trusting - HTML-template-based insercure multiple-choice ballot
# Create the poll
use HTML::Ballot::Trusting;
$HTML::Ballot::Trusting::CHAT = 3;
my $p = new HTML::Ballot::Trusting {
ARTICLE_ROOT => 'E:/www/leegoddard_com',
URL_ROOT => 'http://localhost/leegoddard_com',
RPATH => 'E:/www/leegoddard_com/vote/results.html',
TPATH => 'E:/www/leegoddard_com/vote/template.html',
QPATH => 'E:/www/leegoddard_com/vote/vote.html',
CPATH => 'E:/www/leegoddard_com/CGI_BIN/vote.pl',
ASKNAMES => 1,
QUESTIONS => [
'Why?',
'Why not?',
'Only for £300.'
]
};
$p->create();
A simple module for inseucre web ballots.
This is a very beta version that will mature over the next week or so. Please let me know how it breaks.
Features:
In future these features may be added:
Construct an HTML template that can be used to generate the question and answer pages. Where you wish the questions and answers to appear, insert the following element:
<TEMPLATEITEM name='QUESTIONS'></TEMPLATEITEM>
The template should at least define the CSS representation for
votehighscorebar and votebar as having a coloured background,
or you will not be able to view the results' bar graph.
See CSS SPECIFICATION for more details on other CSS classes
employed.
Other functions may be included as below. Note that TEMPLATEITEMs
may require some minimal content of at least a space character, I'm
not sure, I'd better check.
<TEMPLATEITEM name='COMMENT'> This is what voter's have said: </TEMPLATEITEM>
QUESTIONS TEMPLATEITEM, any text you include in this
block will be reatained at the top of a list of users' comments. <TEMPLATEITEM name='VOTERLIST'> Here is the voterlist... </TEMPLATEITEM>
COMMENT TEMPLATEITEM, above. <TEMPLATEITEM name='IPCHART'> <H2>Top IP Addresses To Post To This Ballot</H2> </TEMPLATEITEM>
SPAN of HTML that lists the
top posters. Anything before that span (in this example,
the H2 element) will remain.Initiate the ballot by constructnig an HTML::Ballot::Trusting object and
calling create method upon it in a manner simillar to that described
in SYNOPSIS.
In response, you should receive a list of the locations of files used and dynamically created by the process.
Several global variables exist as system defaults. Most may be over-riden
using the constructor (see the sections ARTICLE_ROOT, URL_ROOT,
STARTGRAPHIC, SHEBANG in CONSTRUCTOR (new).>
THe number of items to include in the IP chart of frequent posters
Requires a reference to the class into which to bless, as well as a hash (or reference to such) with the following key/value content:
the root, in the filesystem, where these HTML pages begin - can over-ride the global constant of the same name;
the root, on the internet, where these HTML pages begin - can over-ride the global constant of the same name;
an array of questions to use in the ballot
Path at which the HTML Template may be found
Path at which to save the HTML ballot Questions' page
Path at which to save the HTML Results page
If you do not use the SUBMITTO attribute (below), you must use this: Path at
which to save a dynamically-generated perl script that processes
form submissions. Obviously must be CGI accessible and CHMOD appropriately.
If you do not use the CPATH attribute (above), you must use this:
Path to the script that processes submission of the CGI voting form
Represents the Shebang line you place at the start of your perl scrpts:
set this to over-ride the default value taken from the global constant scalar
of the same name. Could adjust this to suss the path from Config.pm or
even MakeMaker, if it came to it, but time....
Maximum acceptable length of text comments.
Set if users should supply their name when voting.
If ASKNAMES (above) is defined, this value may be set to
limit the possible length of a name.
Creates the HTML voting page.
Accepts: just the calling object: all properties used should be set during construction (see CONSTRUCTOR (new)).
If the page contains a COMMENT TEMPLATEITEM, will include a text box
in the voting page, to allow users to submit comments. Setting
COMMENTLENGTH to a value when calling the constructor will
restrict the length of acceptable comments.
If the page contains a <VOTERLIST TEMPLATEITEM>, this will be updated with the name supplied by the user.
Returns: the path to the saved HTML question document.
See also USE and CSS SPECIFICATION.
The action attribute of the FORM element is set to the CGI
environment variable, SCRIPT_NAME (that is, the location of this script).
Form elements are simply seperated by linebreaks (BR): use CSS to control
the layout: the radio-button HTML elements are set to be class voteoption;
the SUBMIT button element is set to be class votesubmit.
HTML is used to create bar charts, but this should be easy to replace with
a GD image, or a stretched single-pixel. Each question is given a
TEMPLATEITEM element, and results will be placed within by the vote
method (see METHOD vote).
See also CSS SPECIFICATION.
Casts a vote and updates the results file.
Accepts:
1. the question voted for, as defined in the HTML vote form's INPUT/value.
2. optionally, a user-submitted comment.
3. optionally, a user-submitted name.
The following CSS classes are employed (and expected) in the HTML:
votehighscorebar and votebarthe TD within the chart (above) that represent volume of votes cast.
These must be defined for results to be visable, though if the NOHTML
flag is set in the constructor, a red background will be used as well.
<style type="text/css">
<!--
.votebar { background-color: #990000}
.votebar { background-color: red}
-->
</style>
chartthe right-most TD, containg the chart TABLE
voteresultsthe layer of the whole results section;
votequestionthe left-most TD, containing the text representing the questions;
votescorethe centre-left TD, containing the text representing the number of votes recieved by the item;
votepcthe centre-right TD, containing the text representing the percentage of vote obtained
voteoptionradioThe radio button in the question-asking phase.
voteoptiontextThe text associated with radio buttons, as above.
voteoptionsubmitThe submit button as above.
votecommenttextboxThe text box used to accept comments.
votecommenttextText associated with the textbox (above).
votecommentdateThe date SPAN of a comment.
voteusrnameThe SPAN that covers a user-entered name in the report.
listvoteusrnameThe SPAN that covers user-entered names and IP address in list context
voteusrnameThe SPAN that covers the user name within listvoteusrname.
voteusripAs above, but for IP address.
ipchartitemAn item in the IP chart.
HTML::EasyTemplate.
Lee Goddard (LGoddard@CPAN.org)
This module and all associated code is Copyright (C) Lee Goddard 2001. All rights reserved.
This is free software and may be used under the same terms as Perl itself with the added condition that it not be used in a commercial setting, to make money, either directly or indirectly, without the advanced and explicit prior signed permission of the author.
| HTML-Ballot-Trusting documentation | view source | Contained in the HTML-Ballot-Trusting distribution. |