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

Let a quiz have multiple grade items

    XMLWordPrintable

Details

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

    Description

      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.
        id INT AUTOINCREMENT,
        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

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                  Created:
                  Updated: