Verified Commit fe1ca8f4 authored by Anton Akhmerov's avatar Anton Akhmerov
Browse files

rewrite text descriptions, use a react fragment

parent a8d71aae
......@@ -12,20 +12,14 @@ const LAYOUTS = [
name: 'Templated',
value: 'templated',
acceptsPDF: true,
description: 'This is the default type, specially made for presencial exams. ' +
'In this mode, the pdf you upload is used as a template to create unique copies ' +
'where students can solve the exam. You can create open answer and multiple choice ' +
'problems, Zesje will take care of cropping the images from scaned PDFs with the solutions ' +
'as well as detecting blank answers and grading multiple choice questions automatically.'
description: 'Upload a PDF, add student ID field and page markers, and distribute to students.' +
'Supports automated student identification, blank detection, and multiple choice questions.'
},
{
name: 'Unstructured',
value: 'unstructured',
acceptsPDF: false,
description: 'Image based exam, this is specially made for take-home or virtual exam. ' +
'It is not based in any PDF, the scans can be images, pdfs or zipfiles made by students. ' +
'This flexibily comes at a cost, in this mode the creation of multiple choice questions ' +
'and autograding is not available.'
description: 'Upload any PDF or image files from students and grade (no automatic scan processing).'
}
]
......@@ -102,7 +96,7 @@ class Exams extends React.Component {
</div>
})
return (
<div>
<React.Fragment>
<Hero title='Add exam' subtitle='first step' />
......@@ -222,7 +216,7 @@ class Exams extends React.Component {
</section>
</div >
</React.Fragment>
)
}
}
......
......@@ -298,14 +298,15 @@ class PanelEditUnstructured extends React.Component {
<PanelGradeAnonymous
examID={this.props.examID}
gradeAnonymous={this.state.exam.gradeAnonymous}
text='Please note that the student name or number can still be visible on the pages themselves.' />
text='Student name or number may still be visible on the pages themselves.' />
{!this.state.exam.finalized &&
<PanelFinalize
examID={this.props.examID}
onFinalise={() => this.props.updateExam()}
deleteExam={this.props.deleteExam}>
Be careful, changing the amount of pages after finalization can lead to incorrect display of images during grading.
Finalized exams cannot be deleted.
Take care to not delete or add pages after finalization.
</PanelFinalize>
}
......
* Add problems to the exam, the order they appear within a page is not important but the order of pages it is. Zesje will show the full page during grading and you can move through the problems associated to that page.
* You may create a fully unstructured exam, for this add all the problems in the first page, Zesje will show you all the uploaded images and you will be able to scroll through all of them.
* Remember to tell your students to upload the files in the correct format. Zesje currently supports ZIP, PDF and IMAGE files whose name has to identify the student and page. The allowed formats are:
* `studentId-page-copy.ext`
* `studentId.ext`
* The information can be separated in the path for ZIP files, `... studentId ../page-copy.ext` is valid.
* If the exam does not specify pages, you will see the full submission by the student for every problem.
* Otherwise when grading a problem you will only see the page to which it belongs (possibly with extra copies).
* When uploading use the filename to identify the student and the submisison pages.
- The supported uploadformats are image files, pdf, and zip.
- Image files must have a format `...<student>...<page>.<ext>` or `...<student>...<page>-<copy>.<ext>`, where student is either student number or full name (if unique). The copy number is used if student ran out of place on the page.
- Standalone PDF files must contain student name or number in the filename. If they contain only one page, they should alos specify page and optoinally copy number, similar to images.
- Zip files may specify the student in the filename or contain folders with student name or number.
\ No newline at end of file
......@@ -65,7 +65,7 @@ class PanelFinalize extends React.Component {
{this.state.previewing ? (
<div>
<div className='panel-block'>
<label className='label'>Are you sure?</label>
<label className='label'>Finalize exam?</label>
</div>
<div className='panel-block'>
{this.props.children}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment