Submission File System
The submission file system provides a workflow for students to submit answers to Moodle in a reliable and standardized format. This can greatly help with parameterized or auto-marked assignments, ensuring that all submissions meet the auto-marker specifications.
![The intended workflow when using the Submission File System.](../images/SF_Workflow.png)
Why Bother?
At the time of writing, there is no easy way to have students submit answers to parameterized (student specific) assignments. Moodle’s own quiz tool requires all answers to be known and has no way of tracking which student was given which question. There is also no way to programmatically adjust question values for each student and then track those values when generating expected answers.
The submission file system attempts to address this problem by providing a means for students to submit software friendly solutions. It is currently intended that this be done under anonymous submission, making it possible to use the student candidate number to modify question values and calculate expected answers.
Creating Submission File Form
The submission file system provides student results in an easy to manage JSON format. This is achieved through the Submission File Form.
The submission file form may be defined on any page using the following syntax:
{% sf_form %}
... Form Content ...
{% endsf_form %}
This generates a simple card-based form, with a pre-programmed submission button that will record and generate a submission file for the student to download.
At this stage, we haven’t provided any inputs for the student. This means that the button at the bottom of the form will just download an empty JSON file named ‘submission.json’.
Adding Form Content
Like the more general cards, submission forms allow you to enter any content you desire using the same syntax and in a normal page. This means that you can have headings or even other cards within your submission forms:
Adding input fields
The submission forms power is within its supported input fields. These allow you to collect a range of answers from students, grouping them into a single JSON file format.
There are a handful of different input fields supported by AutoNote.
SF Input Field: Candidate Number
This input field is used to record a students candidate number. At present, there can only be one of these on each page. If you wish to use two different submission forms on the same page, it is recommended that you instead use the numeric or text input fields described below.
A candidate number input field is created using the following markup:
{% include sf_candidate %}
SF Input Field: Checkboxes
Checkboxes provide a way for students to select one or more statements in the form.
These checkboxes can be generated using the following markup:
First, we make some statement.
{% include sf_checkbox id='<name_of_data_in_JSON>' label='The student can then select answers.' %}
{% include sf_checkbox id='<name_of_data_in_JSON>' label='They may choose not to select multiple answers.' %}
{% include sf_checkbox id='<name_of_data_in_JSON>' label='Alternatively they may choose not to select anything.' %}
Checkboxes also support the required option which will ensure that students must select the checkbox before they can generate their submission file:
First, we make some statement.
{% include sf_checkbox id='ex_ckbox_A' label='This checkbox is mandatory.' required='true' %}
When using checkboxes, the assessor should note that only selected checkboxes will appear in the JSON file.
SF Input Field: Email
The email input field will ensure that the user has entered a valid (looking) email before allowing them to generate the submission file.
{% include sf_email id='<name_of_data_in_JSON>' label='Email address:' %}
Like checkboxes these inputs also support the required option.
SF Input Field: Numeric
The numeric input only allows numeric submissions. These can be constrained within a range or resolution as desired. By default the resolution is whole integers.
{% sf_form nobutton %}
{% include sf_numeric id='ex1_upper_frequency' label='Enter a number:' min='0' max='1000' step='0.01' %}
{% endsf_form %}
Like checkboxes these inputs also support the required option.
SF Input Field: Radio Buttons
Radio Buttons provide a way for students to select one statement from many within the form.
These radio buttons can be generated using the following markup:
First, we make some statement.
{% include sf_radio id='<name_of_data_in_JSON>' group='radio_example' label='The student can select one answer.' %}
{% include sf_radio id='<name_of_data_in_JSON>' group='radio_example' label='They may not select multiple answers.' %}
{% include sf_radio id='<name_of_data_in_JSON>' group='radio_example' label='Alternatively they may choose not to select anything.' %}
It should be noted that there is a group
option when creating these buttons. This will determine which radio buttons are grouped together, allowing you to have multiple single choice questions within a single form.
Like checkboxes these inputs also support the required option.
SF Input Field: Text Box
Text boxes are designed for short text answers.
{% include sf_text id='<name_of_data_in_JSON>' label='Enter a word: ' %}
Like checkboxes these inputs also support the required option.
SF Input Field: Textarea
Textareas are intended for multi-line text submissions:
{% include sf_textarea id='<name_of_data_in_JSON>' label='Enter a passage: ' rows='6' %}
Like checkboxes these inputs also support the required option.