This job requires expertise in Flash, XML, and PHP. Also good and frequent communication and willingness to show wok in progress.
We have a Flash-based survey that is 80% done and needs to be completed. You can see it at: [url removed, login to view]~crisdev/survey/survey.swf. You can grab the files there as well (files are listed to browser).
WE ONLY HAVE THE SWF AND XML FILES, not the native FLA file or the PHP files. So, you will first need to decompile the SWF into FLA (and clean up any code issues caused by the decompiling), and create the PHP files. (FYI: we own all of this, not decompiling someone else’s files).
=== FUNCTIONALITY ===
* You will need to look at the SWF and XML files to make sense of this.
The SWF reads in the XML file containing all content and branching logic, as well as some layout parameters such as movie size, colors, etc (stored in the “survey” tag).
A series of about 60 questions are asked, one question per screen. The content of the question (question text, answer buttons, graphic, additional text, navigation button state) comes from the XML file (one “page” tag per question).
The NEXT button branches to the next question based on the answer selected and is determined by a parameter in the XML “answer” tag. The BACK button branches to a prior question based on IF/THEN statements in the XML “button_values” tag. The SKIP also branches to the next question based on IF/THEN statements in the XML “button_values” tag.
A progress bar shows completion at the bottom of the screen. The length of the dark completion indicator is determined by a tag in the XML (tag to be developed).
An “A” button (upper right corner) is always present and opens a screen called “OOPS” (see the last tag in the XML file). The OOPS screen contains a Cancel button that closes the OOPS screen and opens the question/screen that user was last on (when clicked the A button).
Data are saved internally as answered. The data are used for branching.
Data are saved to the MySQL database periodically (frequency determined by the "post_delay" parameter in the XML).
=== WORK STILL TO BE DONE (THIS JOB) ===
Make the Next button active when a question is already answered. Right now, if you use the Next or Back button to go to a page, even though the question there was already answered (it has a check), you have to click another answer to make Next active. (Next should already be active because the question is already answered.)
Make the Skip button work. It should behave exactly as the Back button does, using conditional branching in the second value of the button_values parameter of the page tag.
Make the branching conditions in the Back and Skip buttons use multiple conditions, not just a single condition with ELSE. For example IF X == 1 A ELSE IF X == 2 B ELSE IF X == 3 C ELSE D.
Make the Back and Skip buttons use the buttons parameter of the page tage to determine if they are hidden (0), inactive (1) or active (2). Right now values of 1 and 2 both result in active. When it is 1 it should be visible but inactive.
Get the progress bar working. Put a parameter into the page tag in the xml. Something like progress="55" indicating the right edge of the progress is at 55 pixels.
The entry fields need filters to allow only appropriate entry (from the on-screen buttons or the keyboard). Here's how they should filter:
- ID: Allow only numbers. Always append.
- NAME: Allow only letters, hyphen, and space. Always append
- MONTH: Clicking the Month button should replace the Month field contents (not append). Allow entry only from the buttons, not the keyboard.
- DAY: Allow only numbers. When there are 0 or 2 chars in the field, entering the 1 or 2 or 3 number replaces the field contents; entering any other number does nothing. When there is 1 char in the field and it is "1" or "2", entering any number appends to the field contents. When there is 1 char in the field and it is "3", entering 0 or 1 appends to the field contents; entering any other does nothing.
- YEAR: Allow only numbers. When there are 0 or 1 chars in the field, clicking any number button appends to the field contents. When there are 2 chars in the field, clicking any number button replaces the field contents.
On the ID, Name, and Birthdate pages, if the question is not fully answered, the Next button should be inactive. So it should be inactive when the page is originally opened. It should become active when the question is fully answered. And it should become inactive again if the answer becomes not fully answered or is cleared. Here are the criteria for determining whether the questions is "fully answered":
- ID is fully answered if the ID field has 4 or more characters in it.
- First and Last NAME are fully answered if the field has one or more characters in it.
- DOB is fully answered if the Month field has a month in it <AND> the Day field has 1 or 2 characters in it <AND> the year field has two characters in it.
Make the A button (upper-right corner) work. It should open the OOPS page.
Make the OOPS page. It should have a Cancel button that closes the OOPS page and returns to the page from which it was opened (where the A button was originally clicked).
Put the location of the Back, Skip, Next, Clear, and page title into the Survey tag in the XML file (backy="20" backx="400" skipy="80" ...).
Rewrite the PHP files to save data to the MySQL DB.
=== END PRODUCT ===
The end product is a native Flash file, XML file(s) and PHP files.
The XML file should be commented to explain all tags and parameters and their connection to Flash variables and functions.
The Flash file(s) need to be version CS3 or older, using ActionScript 3 or older. The ActionScript should be commented extensively.
The PHP files need to be text-readable (not compiled or protected in any way).
The SQL database is already created and I will provide you a copy of it to install on your development server.
=== GENERAL REQUIREMENTS ===
This MUST be very well documented. Build in time to do that.
When I open the Flash file(s) on my computer which has a default Flash CS3 install, the file should be fully editable with what I’ve got. In other words, you can not use third-party apps or classes that must be installed for me to revise the document. If you must use something beyond default Flash tools, they need to be open source and you need to provide them -- AND YOU NEED TO EXPLAIN THEM IN YOUR BID or else I’ll assume you’re using none.
If you re-use code, make sure it is yours or open-source; that it is clean and appropriate for this job; with variable names, function names, and documentation specific to this job; and there no extra unused code cluttering things up.