WeBWorK Main Forum

Proctored vs non-proctored gateway quiz -- about user and class settings

Proctored vs non-proctored gateway quiz -- about user and class settings

by Joseph Lo -
Number of replies: 3

Hi,

I am using 2.17. When a non-proctored gateway quiz is started, there are no user overrides for the last 4 settings:


But when a proctored quiz is started, the last 4 settings were overridden.


This makes it impossible to change those settings for the entire class without going into each student's settings. I have a few questions.

  1. Are there things that I can modify to make proctored quizzes perform the same as unproctored quizzes in terms of this settings? I tried to dig into ProblemSetDetail.pm, SetMaker.pm, ContentGenerator.pm, etc, but couldn't find anything relevant.
  2. Is there a way to bulk change these settings? I tried Instructor Tools and can find quizzes under "sets" but cannot find opened quizzes like (some quiz),v1. I have a class of 140 and it is impractical to change the settings one by one.
  3. Is there a way to extend the time limit during a test? For example if there is a fire drill during a test, we will need to extend the test to compensate the lost time.
Thanks in advance for any suggestions.

Joseph

In reply to Joseph Lo

Re: Proctored vs non-proctored gateway quiz -- about user and class settings

by Joseph Lo -
Sorry, looks like the screenshots were not uploaded properly. The user settings in a non-proctored quiz looks like this:



For a proctored quiz, it looks like this:



The difference I mentioned was in the last 4 settings that gets overridden in proctored quiz.

Thanks a lot.

Joseph
In reply to Joseph Lo

Re: Proctored vs non-proctored gateway quiz -- about user and class settings

by Danny Glin -

The way that quiz versions are generated and stored in the database makes it dangerous to not set an override value in many cases.  For example the setting to randomize the order of the questions needs to be stored with the version so WW knows whether the question numbers (and associated weights, source files, etc.) have been permuted.

This also means that bulk-changing settings for a quiz version is not possible through the web interface.  It isn't particularly hard to do with a database query on the server, but these sorts of things are dangerous, so I don't recommend trying it unless you know exactly what you are doing.

The same applies to giving an extension to the whole class after they have started the quiz.  WW stores the due date for each student's version, so globally changing the due date for everyone's version would give some students more of an extension than others.  I have done this at the DB level, but it meant exactly what I described: setting the same finishing time for all students, regardless of when they started.

In reply to Danny Glin

Re: Proctored vs non-proctored gateway quiz -- about user and class settings

by Joseph Lo -
Thanks very much for the reply. I agree that it is dangerous to bulk-change quiz settings without understanding exactly what the consequences are.

Randomizing question orders is an important one and should not be altered. I actually played with this setting before and it did mess up students' answers (good that it was not a real test). This setting, unfortunately, was not overridden for unproctored quizzes.

On the other hand, the settings for "number of problems per page", "show scores on finished assignments" and "show problems on finished tests" shouldn't cause too much trouble if changed. Since the answer date are different for each student, we will need to control these settings manually to release the scores and the tests for viewing all at the same time. These settings were not allowed to be bulk-changed for proctored quizzes.

I did some code-digging and found something relevant in GatewayQuiz.pm and LoginProctor.pm. These are the changes I made:

For GatewayQuiz.pm, inside "sub pre_header_initialize", before the line
$db->putSetVersion($cleanSet);
I added
$cleanSet->problem_randorder($set->problem_randorder);

For LoginProctor.pm, inside "sub body", before the line
$db->putSetVersion($UserSet);
I added
$UserSet->problems_per_page('');
$UserSet->hide_score('');
$UserSet->hide_score_by_problem('');
$UserSet->hide_work('');

So far this seems to work OK but there could be some problems that I might have failed to foresee.

To determine whether the test is open or closed, I was thinking instead of using $set->due_date, use $closeTime, where

$closeTime = ($set->version_time_limit > 0) ? $set->open_date + $set->version_time_limit : $set->due_date;
if ($set->time_limit_cap && $closeTime > $set->due_date) {$closeTime = $set->due_date;}

This way the time can be extended by the same amount for every student. I was tempted to try this but there must be a lot of places to change and I am sure I will break something.