ArsDigita Archives

ACS Poll Requirements

by Mark Dalrymple

I. Introduction

The following is a requirements document for the ACS Poll module.

II. Vision Statement

People like to offer their opinions, and one of the easiest ways to do that is to vote in an opinion poll. The Poll module allows publishers to construct simple one-vote opinion polls. These polls can be used a springboard for discussion (such as Slashdot), construction of a consumer opinion database (such as, or just for fun (such as the side bar polls on

III. System/Application Overview

The Poll module consists of:
  • The Polls Themselves
    • A Poll name
    • A range of dates that the poll is valid (e.g. asking who your favorite presidential candidate is after the election doesn't make much sense)
    • The poll's choices
    • Whether the poll is limited to registered users

  • Web-based Administrative Tools for controlling the poll parameters specified above, as well as detecting and correcting ballot-box stuffing

  • User accessible pages for viewing and voting on polls

  • User accessible pages for viewing the current poll results

  • Templated presentation and flexible display API for easy publisher customization of polls and poll result display.

IV. Use-cases and User-scenarios

The Poll module is intended for the following classes of users, which may or may not overlap:
  • Publishers Use the admin pages to create and update a poll
  • Designers Modify the page templates and use the display API to customize the poll and poll result presentation
  • End-users Vote in the polls

Poll Creation

Paulette Publisher, manager of the Apollo Philharmonic web site, decides that an opinion poll is appropriate for their upcoming "Hear Your Favorite Baroque Composer" series. Using the admin pages, Paulette creates a poll named "Baroque Favorites" with a paragraph of HTML that describes the poll's objective in choosing a favorite composer. She also sets a starting and termination date for the poll. A starting date is used because the Baroque Favorites program hasn't been announced yet. A termination date is used because voting in the poll after the concert series content has been decided won't make any difference.

Poll Customization

Debbie Designer is responsible for the graphical look of the Apollo Philharmonic web site. She modifies the Poll module's template files so that they match the look and feel of the rest of the site. Using the Poll display API, she changes the poll's presentation from a list of choices to a fancy table.

Poll Use

Eduardo Enduser is a music enthusiast that lives in the nearby town of Vandergrift. He sees the reference to the poll on the Apollo Philharmonic home page. He views the poll, offers his choice, and sees the results. Seeing that his favorite composer is in the lead, he purchases season tickets online via the E-Commerce module.

V. Related Links

  • Poll Module Design Document
  • ACS Styles (ad_return_template etc)
  • Test Plan (Not available as of 8/29/00)

VI.A Requirements: Data Model

  • 10.10 Polls
    (All of these items are entered by the publisher using the administrative UI)

    10.10.10 Each poll has a unique identifier

    10.10.20 Each poll has a name, which will used in constructing a list of available polls.

    10.10.30 Each poll can have an optional description which will be used when displaying the poll.

    10.10.40 Each poll can have an optional start date, before which the poll is not available to users

    10.10.50 Each poll can have an optional end date, after which the poll is not available to users

    10.10.60 Each poll can be designated as being available only to registered users.

  • 10.20 Poll Choices
    (All of these items are entered by the publisher using the administrative UI)

    10.20.10 Each poll can have an arbitrary number of choices

    10.20.20 Each poll choice has a label which is used during poll display

    10.20.30 The order of presentation of the choices is controllable by the publisher.

  • 10.30 Poll Votes
    (These items are entered by users when they make poll choices. They are viewed by the poll results UI. They can be manipulated using the administrative UI)

    10.30.10 Individual votes will be stored

    10.30.20 If the voter is a registered user, the user's ID will be stored with the vote

    10.30.30 The voters IP address will be recorded. The IP address will be used to detect possible voter abuse.

    10.30.40 The date and time of the vote will be recorded.

VI.B Requirements: Administration Interface

The user interface is a set of HTML pages that are used to control all data aspects of Polls. Visual aspects are controlled by templates and the Poll API.
  • 20.10 Poll Creation and Maintenance

    20.10.10 Publishers can create polls, set their name and description.

    20.10.20 Publishers can set the optional start date and optional ending date

    20.10.30 Publishers can change the poll's name, description, starting and ending dates

  • 20.20 Poll Item Creation and Maintenance

    20.20.10 Publishers can create poll choices and set the visible label.

    20.20.20 Publishers can modify poll choices by changing the visible label.

    20.20.30 Publishers can change the order in which poll choices are displayed.

  • 20.30 Abuse detection and correction

    20.30.10 Publishers can use UI pages that show possible voter abuse (ballot box stuffing)

    20.30.20 Publishers can use UI pages to correct voter abuse by deleting votes

VI.C Requirements: Voting

  • 30.10 Voting
    (These items are performed by end-users using HTML pages)

    30.10.10 Users can see a list of available polls.

    30.10.20 Polls are considered "available" if the current date is between the poll's start and end dates (if they exist), and if the user is a registered user and the poll requires registration.

    30.10.30 Users can select an available poll to vote on

    30.10.40 If the user has already voted on this poll, they are told that they cannot vote again.

    30.10.50 The poll and its choices are presented to the user. The poll choices are ordered according to publisher specification.

    30.10.60 The user can select one choice and submit the vote

    30.10.80 The user's choice, their IP address, and the date and time of the vote are recorded

    30.10.90 The user can then view the current poll results

    30.10.100 The user can also view the current poll results without having to vote.

VI.D Requirements: Flexibility of Display

The presentation of available polls, polls and their choices should separated from any procedural / database logic necessary to generate them.
  • 40.10 API

    40.10.10 There should be an easy to use, yet flexible API for generating the HTML used for presenting the list of available polls, the polls and their choices, and the poll results

    40.10.20 For generating the HTML for the list of available polls (the "front page"), publishers should be able to specify the type of item (e.g. list item vs table row), the style, the style and wording to be used when registration required to vote, and the style and wording used when there are no active polls.

    40.10.30 For generating the HTML for the display of a single poll, publishers should be able to specify the type of item (e.g. list item, table row, or simple paragraph breaks between items), the style each choice should be in, as well as the style and wording used when there are no choices for a poll.

    40.10.40 For generating the HTML for the display of a single poll's bar-chart results, publishers should be able to specify the color and size of the bars, whether to display numeric values, and whether to display a scale

  • 40.20 Templates
    (The Poll module uses the "classic" ACS templating mechanism)

    40.20.10 The HTML used for presenting the Poll module's pages will be ADP pages living in the ACS /templates/poll directory

    40.20.20 The Poll API and variables passed to the page will be used for generating the dynamic (database-generated) HTML

VII. Implementation Notes

The Poll module can easily become a highly-trafficked part of a site, especially if a controversial question is posed. The poll module should be able to quickly and efficiently handle large number of votes.

VII. Revision History

Document Revision # Action Taken, Notes When? By Whom?
0.1 Creation 08/29/2000 Mark Dalrymple
Last modified: $Date: 2001/01/19 21:36:46 $