Type: New Feature
Affects Version/s: None
Fix Version/s: Quest-CM
This issue covers implementation of form rendering, validation and post-processing for the Essays section of the College Match app.
This section consists of 6 forms with ~21 essay fields. These pages are prototyped here:
A new Quest table - quest_essay_type - has been implemented which will provide the data needed to render the essay fields on the 6 forms. Each essay "field" will be represented by a record in this table. The table includes all needed form field properties (label, field name, max word count, weight) - refer to the comments in the xml schema for usage.
The quest_essay table has been modified to include the essay_type_id so that we can store and retrieve all the different essays for a given student in the same table. The existing contact_id FK has been replaced with 2 columns - target_contact_id (essay is ABOUT this contact) and source_contact_id (essay is written BY this contact). For student-composed essays, value is the same for both fields.
1. Populate remaining record inserts in quest_data_cm.mysql to define all the essay fields on these pages. (I have created this file in the Quest repository (utils directory) and defined the first two records (one for the "to be migrated" essay from the PreApplication, and the first new field from the Short Essays form).
2. Create the needed Form class(es) to render and process the essay forms. Consider creating a base essay form class which can handle all 6 forms / 21 fields - using a parameter for "grouping" (e.g. Form "name") to select the essay field(s) it should include from essay_type. Essay data submitted by these forms is stored in quest_essay.
3. Implement the essay section/sub-sections in the state machine.