HTML::Ballot::Trusting - HTML-template-based insercure multiple-choice ballot


HTML-Ballot-Trusting documentation  | view source Contained in the HTML-Ballot-Trusting distribution.

Index


NAME

Top

HTML::Ballot::Trusting - HTML-template-based insercure multiple-choice ballot

SYNOPSIS

Top

# 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();

DESCRIPTION

Top

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:

USE

Top

1.

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.

  • If you wish to allow a user to submit a comment with their vote, include the following element:

    	<TEMPLATEITEM name='COMMENT'>
    		This is what voter's have said:
    	</TEMPLATEITEM>
    
    


    Unlike the QUESTIONS TEMPLATEITEM, any text you include in this block will be reatained at the top of a list of users' comments.
  • If you wish to have the result page display a list of the names entered by voters, also include:

    	<TEMPLATEITEM name='VOTERLIST'>
    		Here is the voterlist...
    	</TEMPLATEITEM>
    
    


    This acts in the manner of the COMMENT TEMPLATEITEM, above.
  • If you wish to have the result page display a list of the most frequently-posting IP addresses, include:

    	<TEMPLATEITEM name='IPCHART'>
    		<H2>Top IP Addresses To Post To This Ballot</H2>
    	</TEMPLATEITEM>
    
    


    To this, the module will add a SPAN of HTML that lists the top posters. Anything before that span (in this example, the H2 element) will remain.

2.

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.

GLOBAL VARIABLES

Top

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

CONSTRUCTOR (new)

Top

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:

ARTICLE_ROOT

the root, in the filesystem, where these HTML pages begin - can over-ride the global constant of the same name;

URL_ROOT

the root, on the internet, where these HTML pages begin - can over-ride the global constant of the same name;

QUESTIONS

an array of questions to use in the ballot

TPATH

Path at which the HTML Template may be found

QPATH

Path at which to save the HTML ballot Questions' page

RPATH

Path at which to save the HTML Results page

CPATH

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.

SUBMITTO

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

SHEBANG

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....

COMMENTLENGTH

Maximum acceptable length of text comments.

ASKNAMES

Set if users should supply their name when voting.

NAMELENGTH

If ASKNAMES (above) is defined, this value may be set to limit the possible length of a name.

METHODS

Top

METHOD create

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.

METHOD cast_vote

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.

CSS SPECIFICATION

Top

The following CSS classes are employed (and expected) in the HTML:

votehighscorebar and votebar

the 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>

chart

the right-most TD, containg the chart TABLE

voteresults

the layer of the whole results section;

votequestion

the left-most TD, containing the text representing the questions;

votescore

the centre-left TD, containing the text representing the number of votes recieved by the item;

votepc

the centre-right TD, containing the text representing the percentage of vote obtained

voteoptionradio

The radio button in the question-asking phase.

voteoptiontext

The text associated with radio buttons, as above.

voteoptionsubmit

The submit button as above.

votecommenttextbox

The text box used to accept comments.

votecommenttext

Text associated with the textbox (above).

votecommentdate

The date SPAN of a comment.

voteusrname

The SPAN that covers a user-entered name in the report.

listvoteusrname

The SPAN that covers user-entered names and IP address in list context

voteusrname

The SPAN that covers the user name within listvoteusrname.

voteusrip

As above, but for IP address.

ipchartitem

An item in the IP chart.

SEE ALSO

Top

HTML::EasyTemplate.

AUTHOR

Top

Lee Goddard (LGoddard@CPAN.org)

COPYRIGHT AND LICENCE

Top


HTML-Ballot-Trusting documentation  | view source Contained in the HTML-Ballot-Trusting distribution.