Writeup:2008SummerChecklist
From Wikiturbine
This page contains an expanding checklist of features and implementations to complete in rough general order for summer 2008, starting with NeoCon's invite code and followed by original plans for Seti.
As soon as some amount of work is completed for each part (or section thereof), put a bold timestamp with your name and a comment after the title)
Ex: Invitation Form (--Conspiracyx 14:15, 3 May 2008 (EDT), all features implemented, awaiting styling)
Contents |
[edit] NeoCon
- Modify the members/users model to use ACL for permissions
- This is for Joe to complete while everything else below is implemented
- The primary application of Cake's ACL here is to restrict access to NeoCon’s control panel (CP) to the global_admin group of users (or perhaps con_admin group in the future)
- In theory, adding ACL support should be as easy as appending a few lines to appropriate views and controllers as soon as it is implemented in the model.
- NeoCon Control Panel
- Invitation Form
- Include form elements to input the following data about a member of the NeoCon database table:
-
full name (string) -
e-mail (string) -
gender (string or int) -
age (int) -
is the person is coming from out of town? (boolean or int via checkmark/radio button) -
name of person who invited the person if it’s not the admin (store as string or link to the id of the person already in the DB via dropdown....if admin, then leave input blank)- or, ya know, the actual id itself in the db, aka a 'foreign' key, like we should do for parts of databases that reference another part :P
-
comment (String)
-
- On submission, create a new invitee instance in the table and add data to following fields:
-
date_created- obtain a timestamp for the time the invite was sent- This column in the table is simply named 'created'
-
invite_url- a unique url (ex: neoturbine.net/neocon/38hf382h) generated for the account- This column in the table is simply named 'auth' and contains only the auth code.
-
status- set it to 0 or something, this will imply that the invite was send and nothing else happened
-
- Generate an email to the person from an html email template that includes the invite_url and the name of the person who invited them
- Add a new line to changelog in the following format: "(date and time): (admin's name & link) has invited (invitee name & link) [on behalf of (person asking for invite and name)]
- Include form elements to input the following data about a member of the NeoCon database table:
- Tabled User View
-
Table all the invitees and their (most significant) fields from the DB -
Allow for deletion of invitees from the table-
Confirm on deletion - Add "(date): (admin_name) has deleted (name) from the system" to changelog
-
-
Allow for editing of invitees by clicking on their entry, which will take us to single user edit view
-
- Single User Edit View
-
Dump all editable invitee data into appropriate form elements - On submission of new data, add to changelog: "(date): (admin_name) has changed the following details about (invitee_name) - (list of changed fields)
-
- Statistics Page
- Summarize, average and sum stats about users in the table, most important ones are listed below
- Date heat map – draws a visual calendar where each date has a background color corresponding to the # of hits it received from the survey process, from green to yellow to red shades. Optionally add ability to hover over the date to see the number of hits (<abbr> tag?)
-
Guy/Girl Ratios -
Total number for invitees broken down by status (“15 Total, 4 Confirmed, 9 Maybes, 2 Declined”) - Data summaries for those who fill out optional survey portion ("2 people have a grill - dima and joe")
- Mass Mailer Form
-
Has textarea for message -
Checkmarks to select people to send this email to based on their data values (ex: status, outoftown=true) - OR select specific people to send the email two via dropdown or list
-
Text from textarea is put into html template and sent out to appropriate parties - Append to changelog: "(date): (admin) has sent a mass email to (number/all) of members"
- Buttons for 'Select Attending', 'Select Unsure', 'Select All', etc
-
- Changelog
- Displays all messages added to the changelog in the formal described in several situations earlier in this text
- Changelog keeps track of:
- When admin sends invite
- When invitee accepts the invite
- When invitee modifies his/her account details (if ever)
- Admin modifies someone in the DB
- Admin removes someone from the DB with reason
- Each entry is displayed in a table from newest to oldest with each line of alternating background color
- Invitation Form
- NeoCon Invitee Pages
-
Log-in view--Stiv2k 03:03, 15 May 2008 (EDT)-
Displayed when the invitee visits his/her custom URL (ex: neoturbine.net/neocon/20d348) -
Has text asking the person to enter the email address to which the invite was sent to -
Has textbox to accept e-mail input as well as a some sort of submit button -
View or controller checks that the URL matches the email address and either asks the person to try again (with emphasis on the fact that we want the invite e-mail address) or sends them to welcome view - Optional CAPTCHA or silent CAPTCHA
- Not necessary?
-
- Welcome view
- If the user status is 0 (opened the invite for the 1st time), this view will display the following information in nicer and shorter words
-
Welcoming message - Disclaimer that will explain that this process helps us determine the date and place for the event and that their input is important and confidential
- Disclaimer that we collect money for the event and the final sum will be about $10 (they should be already told about this in person) and they will be notified of the exact sum in the coming weeks
- Encouragement to fill out as much data as they can including the optional survey
-
A button to accept and proceed to next view or one to reject (asking for reason why)
-
-
If accepted, change status to 1 and proceed to next screen -
If rejected the invite, change status to 4, ask for reason and exit - If the person visits this view with a status other than 0 (already logged in), we just ask if they want to modify vital or optional data and give links to next 2 views.
- If the user status is 0 (opened the invite for the 1st time), this view will display the following information in nicer and shorter words
- Vital info view
- This view will ask for a few vital pieces of data from the invitee via form, this includes:
-
Date picks using radio buttons - we only have so many Saturdays to pick from, and other days of the week make no sense.- I thought you wanted checkboxes?
-
Ask for their phone number -
If the person is out of town (as prefilled in the invite form), ask if they need information about accommodation and/or directions -
Ask “How likely are you to attend regardless of which date the event is held?” and give them two options “Definitely” (status = 2) and “Maybe” (status = 3) - The end of the form has two options: “Continue to optional survey” and “save and exit”, the buttons are preceded with this text. “If you would like us to invite some of your friends to NeoCon, sign up for a NeoCon shirt, let us know about food preferences and special need, or just plain leave us a comment please fill out as much of the optional survey on the next screen as you wish. Otherwise, feel free to save and exit.” Or something like that.
-
- This view will ask for a few vital pieces of data from the invitee via form, this includes:
- Optional survey view
- If coding time is an issue, we can exclude the optional survey and e-mail people on the list about it later. Also, view standalone question views.
- This view will ask some non-vital information that we brainstormed so far, including:
- Asking them if they are interested in a NeoCon shirt. If they are, we will ask for size and if they want more than one (checkmark? additional fields?). If not, the field(s) will be left null.
- A section asking about participation. Ask if they have BBQ stuff (grills, chairs, big car, coolers, other) to bring via checkmarks.
- An entry form for people to fill in names of friends they would like to invite
- Questions regarding food and allergy concerns (diabetes, vegetarianism/veganism, other). If it's not filled out, we don't care to follow it.
- Comment box
-
- NeoCon Public Pages
- Story of NeoCon
- Image Gallery
- Form to request an invite that is sent to some/all of us, include CAPTCHA or some sort
[edit] Seti
- Log-in View
- Seti Profiles
- Seti User Control Panel
- Seti Admin Control Panel
- Neoverse/Home page
- Server views
[edit] Appendix
[edit] NeoCon Invitee DB Data Fields
- id
- full name (string)
- e-mail (string)
- gender (string or int)
- age (int)
- is the person is coming from out of town? (boolean)
- name of person who invited the person if it's not the person writing the invite (string or link to the id)
- comment (string)
- date_created (string? int?)
- date last accessed/logged in
- invite_url (string)
- status (int or string)
- 0 - new account, invite sent out
- 1 - invite url accessed and the person successfully signed in at least once
- 2 - attending
- 3 - maybe attending
- 4 - not attending
- fields (array) for t-shirts and sizes
- boolean/int fields for various participation items (array?) such as grills, chairs and offers of transportation
- friend array that should have a field that is replaced by invite id once person is added to DB
- array of food pref stuff
- invitee comments
[edit] Invitee Data Distribution
The following list is used to explain invitee data distribution across various sections of the CP. The way the data ends up being displayed on screen is addressed in parenthesis. See [1] for AJAX tooltip.
- Invite Form (all as form input elements) - full name, e-mail, age, gender (radio button), out_of_town (check mark), comment.
- Invitee Table/Edit Table - name (as link to edit user form), date of invitation (format: "May 19"), who invited them, status (formatted with TBA colors), invitee comment (if there is one, have short/image link in the field and display comment as AJAX tooltip), date of last log-in (format: "May 19"), distanced/out of town, list of friends (if there is one, have short/image link in the field and display comment as AJAX tooltip), comment (if there is one, have short/image link in the field and display comment as AJAX tooltip), action/uninvite (short/image link)
- following data is displayed as ajax tooltip when hovering the name link: id, email, age, gender, action code, any data filled out in optional survey such as t-shirts and names of friends
- if space allows, include age and gender in the table
- Edit User Form (as editable fields) - name, e-mail, age, gender, out of town, comment, status, action code (with option to make a new one), optional survey data, friend list
- userinfo.ctp - name, e-mail, age, gender, out of town, comment, status, optional survey data, friend list, action code
- mailer (tabulated with column full of checkmarks to select users) - same as Invitee Table/Edit Table but without links to edit users (AJAX still present)
[edit] Roadmap
- Complete NeoCon CP (along with permissions) and invitation survey (at very least with PHP sessions and styled to be disassociated with the main site) by May 18th or so.
- During the week of 19th, create admin accounts for Joe, Steve and Dima and invite a big 1st wave of people. Imply that they should reply by May 26th. The goal is to have a good chunk (70%?) of possible crowd vote on the date, along with all out-of-town parties.
- Week of May 26th: Announce the date for NeoCon 08, try to make it at least 2 weeks from then with bias on out-of-town attendees.
- Weeks of May 26th and June 2nd: after people update us with new attendance statuses based on date, form planning committee to decide on this in order
- Venue
- Ballpark figures for expenses: food, ground fees, gas, t-shirts..etc
- Job/task assignment
- Weeks of May 26th and June 2nd: while planning is in progress, obtain additional data from attendees such as t-shirt sizes and transportation issues.
- Week of June 9th: announce venue and price, begin collecting money
- Weeks before event: obtain permit if needed
- Days before event: obtain non-perishable items and assign drivers
- Day before event: obtain perishable items
- Mid to late summer: work on Seti
[edit] Statistics Page variables
Here are the current available variables for use in the Neocon/statistics view. --Stiv2k 03:16, 26 May 2008 (UTC)
- array $dates - Controller-wide array specifying the available dates to hold the event on.
- array $date_votes - Contains the number of votes for each available date.
- array $invitees - The entire list of invitees.
- array $gender - Contains gender information
- $gender['weighted'] - Contains the following statistics (for definite and prospective invitees) in its keys: males, females, and ratio.
- $gender['unweighted'] - Same as above, however the data is only collected for whose who are attending (status = 2)
- array $status - Attendance status statistics, how many people are of status of 1, how many are status of 2, etc.
- array $age - Information regarding invitee ages (NOT IMPLEMENTED, use $avg_age instead)
- $age['mean']
- $age['median']
- $age['mode']
- $age['range']
- int $tshirts - Number of people who are interested in Neocon T-shirts.
- int $out_of_town - Number of people designated as being from "out of town".