Yes you can. See this forum topic: "A mechanism for adding custom pages"
As you probably have noticed, you can attach voter filters to a team, so that activists on that team, or on teams below that team, can only add voters to their contact lists who satisfy that filter. Voter filters can also be attached to operations. What's the difference? When a voter is on a contact list on any team under a given operation, that voter is not available to any other contact lists under that operation. However if you have more than one operation, then you can have each voter checked out once under each operation. So you could have a supporter identification operation and a fundraising operation, and they could be contacting the same pool of voters.
You can also attach voter filters to questions on a questionnaire (questionnaire sections, actually). You could have a question "do you support X for mayor?", and set the filter to have that question appear on the contact sheet for voters who live in the city. You could have a question "do you support Y for city council from Ward 3?", and set the filter so that only voters eligible to vote in Ward 3 will be asked that question. This allows one organization to handle up and down-ballot races, for example.
So the organizational slicing and dicing can be accomplished in two ways. The first is about how you divide voter contacts amongst your activists. The second is about what you actually do when you contact a voter.
Something that is confusing in AdvoKit is the term "campaign". The original idea was that one could run multiple independent campaigns, each with its own voter file, in a single instance of AdvoKit. However, this was never implemented and I would not recommend creating more than one campaign within an instance of AdvoKit.
Tasks handling (e.g. lawn sign requests, candidate visit requests) is not constrained by the organizational structure you have set up in AdvoKit. Anywhere you create a job that has task handling responsibilities for a particular type of task will see tasks of that type in its task queue. For ease of keeping track, I'd recommend putting task-handler jobs in a separate part of the organizational structure (e.g. their own operation), but they can be anywhere.
We have a Bugzilla issue tracker here.
To log bugs or enhancement requests you will need to create an account for yourself.
No. Many people, developers and users, have experienced no problems either installing or running AdvoKit under PHP5. Problems can usually be tracked down to either file and directory permission issues (many PHP setups will not execute a php file that has public write permission - 777, 755 is usually the correct chmod setting), or to PHP timeout time being too short for some operations (usually encountered on install).
The AdvoKit installer allows you to replace the application files without losing your existing data. WARNING: This could result in errors if the upgraded AdvoKit application is incompatible with older data. To be safe, you should backup the existing AdvoKit installation, both the files at the webroot, and the main AdvoKit files (which should be located outside of the webroot). It is also a good idea to backup your existing database. Upgrading an installation can be done at any time. You do not need to take the site offline. Currently logged in users will simply notice that the next time they redisplay or perform an action, AdvoKit will be updated to the new version. Note that if you have made changes to the application itself, such as to the advokit.css stylesheet, or changed the Smarty templates that are used to display screens, those changes will be lost in this update unless you go through the advokit-installer package and reapply your changes to the appropriate files before running the installation. The procedure for upgrading an existing installation is very much like that for a new installation. It just skips over the database creation step. Here's a step-by-step description:
> Receiving an error message when attempting to filter on a custom
> field. Any thoughts?
>
> ----------------------------------- ERROR MESSAGE
> -----------------------------------
>
> ------------------------------------------------------------
> Error message was:
> Unknown column 'ak_customfieldsettings.custom_3' in 'where clause'
The ak_customfieldsettings table was not set up by import.pl when you imported your voter file with custom data. You need to run the perl script "regeneratecustomfields.pl", which is located in the advokit-installer's utils folder. This copies your custom field data into a separate table that is used for filtering. (Note that if you edit voter data that is in a custom field, this table will not reflect the change. To synchronize, you need to run regeneratecustomfields.pl again. For this reason, it can be a good idea to set up a cron job to run it on a regular basis.)
As you did with import.pl, you will need to edit your database connection information in regeneratecustomfields.pl...
# ----------------------------------------------------------------------
# Configuration -- edit to suit you.
# ----------------------------------------------------------------------
my $CFG_DBHOST = 'localhost';
my $CFG_DBPORT = 3306;
my $CFG_DBNAME = 'ak';
my $CFG_DBUSER = 'root';
my $CFG_DBPASS = '';
my $CFG_DBPREFIX = 'ak_';
To run the script (as with voterfile import) you need shell access on your server. There are no command-line arguments. You can run this script by cd'ing to the utils folder and simply typing "perl regeneratecustomfields.pl" on your command line.
From the mysql files:
_voter
salutation varchar(10) default NULL,
nickname varchar(15) default NULL,
firstname varchar(15) default NULL,
middle_initial char(1) default NULL,
lastname varchar(35) default NULL,
suffix varchar(10) default NULL,
birth_year int(4) default NULL,
birth_month int(2) default NULL,
birth_dom int(2) default NULL,
birthdate datetime default NULL,
age int(3) default NULL,
confidence_level int(1) default NULL,
gender char(1) default 'U',
occupation varchar(20) default NULL,
citizenship varchar(2) default 'US',
is_registered char(1) default 'N',
registeredon datetime default NULL,
can_vote char(1) default 'N',
will_vote char(1) default 'N',
absentee char(1) default 'N',
party_affiliation char(1) default 'X',
ph_home char(12) default '000-000-0000',
ph_office char(12) default '000-000-0000',
ph_mobile char(12) default '000-000-0000',
email varchar(30) default NULL,
alt_email varchar(30) default NULL,
_residence
number varchar(10) default NULL,
num_suffix varchar(10) default NULL,
precompass varchar(10) default NULL,
streetname varchar(30) default NULL,
streettype varchar(20) default NULL,
postcompass varchar(10) default NULL,
aptname varchar(50) default NULL,
aptnum varchar(8) default NULL,
line1 varchar(40) default NULL,
line2 varchar(40) default NULL,
city varchar(30) default NULL,
state_id int(2) default NULL,
zip char(5) default NULL,
zipplus4 char(4) default NULL,
county_id int(11) default NULL,
walklist_sequence int(11) default NULL,
address_sequence int(11) default NULL,
latitude float default NULL,
longitude float default NULL,
_mailaddress
number varchar(10) default NULL,
num_suffix varchar(10) default NULL,
precompass varchar(10) default NULL,
streetname varchar(30) default NULL,
streettype varchar(20) default NULL,
postcompass varchar(10) default NULL,
aptname varchar(50) default NULL,
aptnum varchar(8) default NULL,
line1 varchar(40) default NULL,
line2 varchar(40) default NULL,
city varchar(30) default NULL,
state_id int(2) default NULL,
zip char(5) default NULL,
zipplus4 char(4) default NULL,
county_id int(11) default NULL
_respolis
ward_number varchar(20) default '',
precinct_number varchar(20) default '',
precinct_name varchar(50) default '',
us_rep_district varchar(20) default '',
us_sen_district varchar(20) default '',
st_rep_district varchar(20) default '',
st_sen_district varchar(20) default '',
census_tract bigint default 0,
census_block bigint default 0
Original Question: I uploaded my voterfile and ran the perl script, and there are voters in the database, but when I log into advokit as the campaign manager and I try to browse contacts there are none. What am I missing?
AdvoKit does not provide a way to casually browse the voter file (perhaps this will be remedied in the future). "Contacts" in AdvoKit are voters who are on a contact list. Since no contact lists have been created yet, when you click on "Contacts" under the "Browse" section of the sidebar, you see an empty list.
(Note that the following describes a "shortest path" to getting to where you can browse voters. In actual practice, as an organizer, you should be less concerned with browsing voters than you are with managing your campaign: allocating work to volunteers, monitoring performace, etc. But it's reasonable when getting started to want to check out the voter data.)
In the AdvoKit way of thinking, contact lists are relevant to activists who have voter contact responsibilities. Therefore, to be able to create a contact list, you must either be logged in as such an activist (i.e. you occupy a voter-contact activist job), or you must be a leader or upline leader of a team that has a voter-contact job on it that you can assume ("assuming" a job temporarily gives you the same functions as if you actually occupied that job).
To get to this point (assuming that you are logged in as campaign leader), you will need to have established some organization:
With that established, you can assume the job. When this job is assumed, a block of links will appear in your sidebar that includes a "search voters" section. If your voter file is not very large, you could simply leave the field empty and click "Go". AdvoKit will return a list of all voters in the database (20 at a time). You can enter a search string (that will be matched against voter names and street names). Or you can click on the "advanced search" link to bring up a more elaborate search page.
Some things to bear in mind:
I followed the instructions and have installed advokit successfully. Following the installation, the page is redirected
-----------------------------------------------------------------------------------
The server encountered an internal error or misconfiguration and was
unable to complete your request.
etc...
-----------------------------------------------------------------------------------
Internal server errors (500 errors) are usually caused by file or directory permission configurations that do not comform to settings required by your server. Most servers will not, for very good reason, allow a php file with public write permissions (777) to execute.
Most of the time that this error is encountered, the solution is to chmod the permissions for your index.php file to 755.
Advokit is a web-server based application designed to run on LAMP (Linux-Apache-MySQL-PHP) systems. Most parts of Advokit will run successfully on Windows and Macintosh systems that are configured with an Apache web server, PHP 4.2.8 or above, and MySQL 4.1 or above (e.g. XAMPP in Windows). You will need access to a shell account on the server in order to run the voterfile import script (also see Perl libraries requirement below).
(from the 1.0.0 README.txt file...)
ADVOKIT INSTALLATION REQUIREMENTS:
* Apache/IIS
Advokit has been tested on the Apache and IIS webservers, but will
probably run on any server that supports PHP.
* PHP
Your webserver must be running PHP 4.2.8 or above.
You DO NOT need to have register_globals on for Advokit to work.
* MySQL
MySQL version 4.1 or higher must be installed.
* Smarty
The Smarty template engine must be installed. Preferably 2.6.2 or
above. Advokit was mostly developed with version 2.0, but 2.3 and
2.6.2 have been used extensively. 2.6.2 is bundled with this release,
and you can tell the installer to install it for you automatically.
* Perl libraries
The voterfile import script requires several Perl libraries. See
this forum topic if import.pl fails to compile when you run it.
I thought I would try to put down in some detail what I think a field operation consists of from a campaign manager's standpoint. It is structured to reflect best practices of an electoral campaign, rather than trying to list functions needed. This outline describes a hybrid of traditional and cyber campaigns. However, my emphasis is on the field operation, which I define as the aspect of a campaign involving direct contact between campaign personnel and the public with two-way communication or highly targeted one-way communication. -Pat
There is not a simple one-size fits all answer to this question. First of all, the availability and quality of inexpensive voter data is extremely variable by location The Help America Vote Act, passed in 2002, requires each state to have a computerized statewide voter registration system. In many states, this information available for free, or for a very low cost from either the Secretary of State, or local officials.
More to be written...