Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-74610

Let a quiz have multiple grade items



    • New Feature
    • Resolution: Unresolved
    • Minor
    • None
    • 4.0
    • Quiz


      In the past people have asked for this in different ways. For example, calculating the grade for each section of the quiz, or based on the question bank category each question is in, but these are all just variants of the same underlying requirement: Having a student’s attempt at a particular quiz lead to several grades in the gradebook.

      There are other related grading requirements I have seen people ask for here. One goes like this: “To pass this quiz, students need to get an overall grade of 70%, but also, they need to get at least 50% on questions 7, 8 and 9 combined”. I think that the changes we propose to make can solve this. If the quiz puts two grades into the gradebook, one “overall grade” and one “grade for questions 7, 8 and 9” then you can use gradebook calculations to work out the right final result based on those two. Since this can be done in the gradebook, we should not duplicate that type of logic in the Quiz itself.

      Obviously, more detail is required before this can be implemented.

      Note, there are several duplciates, or near-duplicates of this, which I need ot sort out properly at some point:

      • MDL-21977 Quiz Reporting by Standards or Objectives
      • MDL-61548 Implement subscores in Quiz module
      • MDL-53639 Quizzes should be able to report scores/marks/grades for each section/question category/tag

      Proposed DB structure:

      quiz_grade_items (                -- New table.
        quizid INT NOT NULL  FK -> quiz.id
        sortorder INT NOT NULL
        name CHAR(255) NOT NULL,
      -- Unique index on (quizid, sortorder)
      quiz_slots (                            -- Adding column to an existing table.
      +   quizgradeitemid INT  FK -> quiz_grade_items.id -- can be null, the default.

      Todo list:

      1. ✓ Mock up new page
      2. ✓ Tertiary nav
      3. ✓ DB table changes with upgrade
      4. ✓ DB change to add sortorder
      5. ✓ Backup and restore of the new data
      6. ✓ Extend test generators, so we can populate the table for tests
      7. ✓ Web services for CRUD on quiz grade items.
      8. ✓ Web services to recieve AJAX changes for slots
      9. ✓ Rendering the page from the data
      10. ✓ JavaScript
      11. Quiz display to students
      12. Quiz reports

      Balsamiq Wireframes


          Issue Links



                Unassigned Unassigned
                timhunt Tim Hunt
                6 Vote for this issue
                19 Start watching this issue