Commit Graph

155 Commits

Author SHA1 Message Date
Tim Hunt 377ce9938b MDL-49814 quiz: make question dependency clear in the nav 2015-04-27 13:55:40 +01:00
M Kassaei 5d949702f8 MDL-40988 quiz: ability to break quizzes into sections
The sections are created on the edit quiz page, and then appear in the
navigation panel when the quiz is being attempted to help students find
their way around.

The 'Shuffle questions' setting has been moved from being per-quiz
to being a per-section.

This commit is actually the joint work of Mahmoud Kassaei and Tim Hunt
from The Open University. We could only use one persons name for the
commit and this time Mahmoud gets the credit/blame.
2015-04-05 14:30:53 +01:00
Tim Hunt 5e63b335fe MDL-40992 quiz: option to let students redo questions within an attempt
This feature is designed for use on pracice or formative quizzes.
It is available for quizzes that use Interactive or Immediate feedback
behaviour.

If the teacher turns this on in the quiz settings, then once a student
has finished a question, they get a 'Redo question' button beside the
question. If they click it, then the question they finished is replaced
by a new one so they can try again to practise that particul skill or
bit of knowledge a bit more.

When randomisation is involved, the studnets will be given a question or
variant that they have not seen before if possible.
2015-03-31 14:12:48 +01:00
M Kassaei 1700bd4dea MDL-40992 quiz: let students to redo questions within an attempt 2015-03-26 17:46:47 +00:00
Tim Hunt 441d284ada MDL-40990 quiz: option to require prev Q finished before next shown
Further improvements to this code, including resolving edge cases:

* The new feature can only be used when it is possible for the
previous question in the quiz to be complete.

* Also, this new feature cannot be used in combination with shuffle
questions, because that make no sense; nor in combination with
sequential navigation, because to make that work properly would be a lot
of effort. If someone needs that to work later, it should be possible
for them to implement it.

* There were changes in the edit renderer API, to try to make things
more  consistent, and to make it less likely we will need to change
things again in the future. See mod/quiz/upgrade.txt.

* As part of this change, the styling of the Edit quiz page was tweaked
to make slighly more efficient use of the horizontal space, and to be
more symmetrical.
2015-03-17 17:16:22 +00:00
M Kassaei f7785e42b3 MDL-40990 quiz: option to require prev Q finished before next shown 2015-03-17 17:10:13 +00:00
Tim Hunt 2e4e8d16c7 MDL-48829 quiz nav: add a data attr to buttons giving the page
This way, if you need to know which page each button goes to in
JavaScript, you can find out.
2015-01-15 10:20:55 +00:00
Tim Hunt 1c2e05c060 MDL-47691 quiz: only warn re overdue attempts if a Q has been answered
If a quiz is set to have a grace period when time has expired, we only
email studnets to warn them about their overdue attempt if they have put
in an answer to at least one question that is worth some marks.
2014-10-20 12:11:10 +01:00
Colin Chambers e1a2d0d92d MDL-43089 quiz: improved interface for building quizzes
This commit is actually the joint work of Mahmoud Kassaei, Colin
Chambers and Tim Hunt from The Open University. We could only use one
persons name for the commit, and this time Colin gets the credit/blame.

The goal of this work was to increase usability, and also clean up
the page enough that it will be possible to add new features in future.

Display of mod/quiz/edit.php is now entirely generated by
mod_quiz\output\edit_renderer. This uses a helper class
mod_quiz\structure to provide details of the structure of the quiz, and
mod_quiz\repaginate to alter that structure. (Acutally, there are still
some modification methods on mod_quiz\structure. Expect that to be
cleaned up in future.)

The new code uses much more ajax, and there are new scripts
mod/quiz/edit_rest.php and mod/quiz/repaginate.php to handle this.
(Again, don't be surprised if those two scripts get merged in future.)
Also questionbank.ajax.php (which may, in future, be made more generic,
and moved into the core question bank code.)

Most of the new JavaScript code has intentionally copied the way things
are done when editing activities on the course page.

As a result of this, mod/quiz/editlib.php is now much shorter than it
was. (In future, expect the remaining code in here to move into
mod/quiz/classes.)
2014-10-02 17:22:23 +01:00
Tim Hunt 097dbfe11a MDL-46093 quiz review should default to showing everything on one page
... as long as the quiz is not too big. At the moment, that limit is
set to 50 questions.
2014-06-27 17:14:51 +01:00
Tim Hunt 6a981b45c3 MDL-31262 fix quiz review capability check.
This change is logically the same as changing
    $this->has_capability('mod/quiz:viewreports')
to
    $this->has_capability('mod/quiz:viewreports') || $this->has_capability('mod/quiz:preview')
in the original code. However, I rewrote the logic so that we test the
most common and performance-critical case first - that of a student
lookign at their own attempt.
2014-03-28 18:37:21 +00:00
Tim Hunt ccba5b8805 MDL-43749 normalise quiz database structure.
The sequence of questions that made up a quiz used to be stored as a
comma-separated list in quiz.questions. Now the same information is
stored in the rows in the quiz_slots table. This is not just 'better' in
a database design sense, but it allows for the future changes we will
need as we enhance the quiz in the MDL-40987 epic.

Having changed the database structure, all the rest of the code needs to
be changed to account for it, and that is done here.

Note that there are not many unit tests for the changed bit. That is
because as part of MDL-40987 we will be changing the code further, and
we will add unit tests then.
2014-03-02 10:00:40 +01:00
Rajesh Taneja fdc729ea57 MDL-43736 Events: event->contextinstanceid should be used where possible
While restoring event context might not be present (deleted)
So before using context api's check context or use event properties
2014-01-29 11:39:44 +08:00
Tim Hunt dc4a3ea1ee MDL-43670 quiz_question_instances to match coding guidelines.
Some columns needed to be renamed:
* quiz     -> quizid
* question -> questionid
* grade    -> maxmark

Then all the places that refer to those needed to be fixed.
2014-01-17 10:56:07 +00:00
M Kassaei 0328341f97 MDL-42181 quiz nav: highight all buttons when all Qs on one page 2013-11-15 15:30:31 +00:00
Tim Hunt e74aa0aa97 MDL-32188 question CBM: compute summary stats for CBM behaviours
We now compute the average CBM score, accuracy, CBM bonus and enhanced
accuracy, both for the entire quiz, and for just the questions answered.

Note that these calculations must work correctly in the presence of
descriptions, ungraded questions, and manually graded questions. For
example, imagine a essay added at the end of the quiz "Summarise what
you learned attempting this exercise." This might have max mark zero or
non-zero. The CBM statistics just ignores questions like that.
2013-10-04 17:56:36 +01:00
Tim Hunt 474aa125ca MDL-32188 quiz/question: behaviours can add to the review summary.
At the top of the quiz reivew page, there is a table that summarises
infomration about the quiz attempt as a whole. For some question
behaviours, we would like to be able to add additional information to
that summary.

This commit introduces a generic method for the behaviour to provide
summary information about an entire question usage.
2013-10-04 17:52:16 +01:00
Frederic Massart 0a8b091d41 MDL-41039 mod_quiz: Renaming event to attempt_becameoverdue 2013-09-26 16:43:20 +08:00
Frederic Massart d900f1dc05 MDL-41039 mod_quiz: Replace events_trigger to new events 2013-09-26 16:43:03 +08:00
Damyon Wiese 74df2951d1 Revert "MDL-39876 Change get_record('course') calls to get_course"
This reverts commit ab7632b74c.
2013-08-21 13:42:30 +08:00
sam marshall ab7632b74c MDL-39876 Change get_record('course') calls to get_course 2013-08-15 11:31:20 +01:00
Jamie Pratt 388f047345 MDL-40543 convert from simulated responses
to post data
2013-07-23 15:00:02 +08:00
Jamie Pratt 1cd7c92ece MDL-40074 refactoring of quiz code
to reuse code fro quiz attempt walk through
2013-07-14 16:28:39 +07:00
Jayesh Anandani 1ecd3c304d MDL-39155 Quiz: Provide 3 image-size options on the settings page 2013-05-10 08:38:13 +05:30
Tim Hunt 595708884a MDL-38538 quiz auto-save front end.
1. There is a new admin setting to control whether this feature is
enabled. The admin can set the auto-save frequency to 1, 2 or 5 minutes,
or disable it.

2. When autosave is enabled, there is code in the quiz that monitors the
main quiz form, and does an ajax save call at the given frequency when
changes are being made by the student.

3. The ajax saves go to a new script that calls the question engine to
do the work.

4. To avoid simultaneous autosave + submit and finish, the auto-save
system shuts down shortly before time expires in a timed quiz.
2013-03-28 16:57:24 +00:00
Tim Hunt 2515be0e80 MDL-38647 quiz review question issues
1. Page URL should contain 'step=0' if necessary, but not 'step='.
2. Review specific step was not using the right display options.
2013-03-22 11:16:02 +00:00
Matt Petro 8e771aed93 MDL-35717 quiz: fix overdue attempt processing 2012-11-16 21:32:09 -05:00
Tim Hunt 32953f37b6 MDL-34399 quiz cleanup: remove ugly question/page number hack
It used to be necessary to store the question number and question page
by adding them as random extra fields on the question object (but
I can no longer remember what that reason was). Now it is possible
to store this sensibly in the quiz_attempt object, which is much
cleaner, so do that.
2012-10-26 11:58:25 +08:00
Tim Hunt d869de66a6 MDL-34733 quiz 'secure' mode: finish review link broken in previews
This fix a small API change in mod_quiz_renderer::finish_review_link.
At least the required change is an improvement, since it gives the
renderer more flexibility.
2012-08-21 12:08:57 +01:00
Tim Hunt 4be550c57d MDL-34905 quiz: missing global $DB;
This code normally only runs when JS is disabled, which is why this was
not noticed before.
2012-08-15 10:25:25 +01:00
Tim Hunt ff2ec2cb95 MDL-34599 quiz attempts: more robust if page number out of range.
Rather than throwing an exception, we should just show the first/last
page of the quiz if the page number is out-of-range.
2012-07-27 11:42:03 +01:00
Ankit Agarwal c492a78ee2 MDL-34468 quiz: Replace all instances of get_context_instance() with respective context_XXXX class in mod/quiz 2012-07-24 17:08:05 +08:00
Tim Hunt 9e83f3d11d MDL-32788 quiz: clean up codechecker issues before the 2.3 release. 2012-05-04 15:12:23 +01:00
Tim Hunt 96e5168c7e MDL-32740 / MDL-3030 quiz summary: no Return to attempt for overdue. 2012-05-03 12:16:43 +01:00
Tim Hunt be18f589e2 MDL-3030 quiz overdue handling: test state, not timefinish where applicable. 2012-04-27 15:07:40 +01:00
Tim Hunt a403bce0bd MDL-3030 quiz overdue handling: back-end code for the new transitions 2012-04-27 15:07:36 +01:00
Tim Hunt 34b7d8383d MDL-3030 quiz overdue handling: trigger automatic state transitions.
Here, we catch all the places where a student might be accessing their
own attempts, and make sure any automatic state transitions that
should happen, do happen, before the student sees the attempt.

The places where we need to check this are view.php, startattempt.php
and processattempt.php.

We do not really need to check attempt.php or summary.php, because if
the student is on one of those pages, the JavaScript timer will
auto-submit when time expires, taking them to processattempt.php,
which will do the acutal work.

We intentionally do not trigger state transition when a teacher is
looking at a student's quiz attemp. We will trigger state transitions
on cron, but that is still to do.

Also, the body of the process_... methods still needs to be written.
2012-04-27 15:07:35 +01:00
Tim Hunt b39b5d77c3 MDL-3030 quiz overdue handling: show attempt state on the review page. 2012-04-27 15:07:30 +01:00
Tim Hunt 2b2b645842 MDL-3030 quiz overdue handling: display message on the summary page.
This change also includes a clean-up of how we display and initialise the countdown timer.
2012-04-27 15:07:29 +01:00
Tim Hunt 2de9be52aa MDL-3030 quiz overdue handling: show attempt state on the view page 2012-04-27 15:07:27 +01:00
Charles Fulton 33c8d37b6f MDL-11047 quiz: enable sequential navigation 2012-03-15 10:09:27 -07:00
Kyle Temkin 704f062b87 MDL-31407 quiz: finish_attempt method should not rely on $USER 2012-02-02 18:37:05 +00:00
Sam Hemelryk d36b5d1177 Merge branch 'MDL-31095' of git://github.com/timhunt/moodle 2012-01-16 16:58:32 +08:00
Aparup Banerjee c5fd16826a MDL-3054 quiz : cleaned whitespaces. 2012-01-16 13:41:12 +08:00
Charles Fulton 5db8294940 MDL-3054 record the current page of a quiz attempt 2012-01-12 09:15:37 -08:00
Tim Hunt 389cb58948 MDL-31095 quiz: fix bug in quiz::has_questions. 2012-01-12 12:10:06 +00:00
Tim Hunt 08502b574d MDL-30182 quiz grade.php should support userid param. 2011-11-15 11:36:10 +00:00
Tim Hunt 987c2d491e MDL-29627 quiz access refactor password check into a generic check page. 2011-10-13 11:13:20 +01:00
Tim Hunt 0eafc98852 MDL-29627 fix code-checker issues throughout the quiz code. 2011-10-13 11:13:16 +01:00
Tim Hunt d755b0f577 MDL-29627 quiz_access_manager move all output code to the renderer.
This achieves a massive clean-up. It simplifies comples code in a number
of places. It allows some methods and functions to be moved to a more
appropriate home (for example cannot_review_message to the quiz class).
It moves more logic out of the renderer.
2011-10-13 11:13:12 +01:00