| … | |
… | |
| 64 | |
64 | |
| 65 | # set options from form fields (see comment at top of file for names) |
65 | # set options from form fields (see comment at top of file for names) |
| 66 | my $displayMode = $r->param("displayMode") || $courseEnv->{pg}->{options}->{displayMode}; |
66 | my $displayMode = $r->param("displayMode") || $courseEnv->{pg}->{options}->{displayMode}; |
| 67 | my $redisplay = $r->param("redisplay"); |
67 | my $redisplay = $r->param("redisplay"); |
| 68 | my $submitAnswers = $r->param("submitAnswers"); |
68 | my $submitAnswers = $r->param("submitAnswers"); |
|
|
69 | my $checkAnswers = $r->param("checkAnswers"); |
| 69 | my $previewAnswers = $r->param("previewAnswers"); |
70 | my $previewAnswers = $r->param("previewAnswers"); |
| 70 | |
71 | |
| 71 | # coerce form fields into CGI::Vars format |
72 | # coerce form fields into CGI::Vars format |
| 72 | my $formFields = { WeBWorK::Form->new_from_paramable($r)->Vars }; |
73 | my $formFields = { WeBWorK::Form->new_from_paramable($r)->Vars }; |
| 73 | |
74 | |
| … | |
… | |
| 77 | my %want = ( |
78 | my %want = ( |
| 78 | showOldAnswers => $r->param("showOldAnswers") || $courseEnv->{pg}->{options}->{showOldAnswers}, |
79 | showOldAnswers => $r->param("showOldAnswers") || $courseEnv->{pg}->{options}->{showOldAnswers}, |
| 79 | showCorrectAnswers => $r->param("showCorrectAnswers") || $courseEnv->{pg}->{options}->{showCorrectAnswers}, |
80 | showCorrectAnswers => $r->param("showCorrectAnswers") || $courseEnv->{pg}->{options}->{showCorrectAnswers}, |
| 80 | showHints => $r->param("showHints") || $courseEnv->{pg}->{options}->{showHints}, |
81 | showHints => $r->param("showHints") || $courseEnv->{pg}->{options}->{showHints}, |
| 81 | showSolutions => $r->param("showSolutions") || $courseEnv->{pg}->{options}->{showSolutions}, |
82 | showSolutions => $r->param("showSolutions") || $courseEnv->{pg}->{options}->{showSolutions}, |
| 82 | recordAnswers => $r->param("recordAnswers") || 1, |
83 | #recordAnswers => $r->param("recordAnswers") || 1, |
|
|
84 | recordAnswers => $submitAnswers, |
| 83 | ); |
85 | ); |
| 84 | |
86 | |
| 85 | # are certain options enforced? |
87 | # are certain options enforced? |
| 86 | my %must = ( |
88 | my %must = ( |
| 87 | showOldAnswers => 0, |
89 | showOldAnswers => 0, |
| … | |
… | |
| 154 | $self->{permissionLevel} = $permissionLevel; |
156 | $self->{permissionLevel} = $permissionLevel; |
| 155 | |
157 | |
| 156 | $self->{displayMode} = $displayMode; |
158 | $self->{displayMode} = $displayMode; |
| 157 | $self->{redisplay} = $redisplay; |
159 | $self->{redisplay} = $redisplay; |
| 158 | $self->{submitAnswers} = $submitAnswers; |
160 | $self->{submitAnswers} = $submitAnswers; |
|
|
161 | $self->{checkAnswers} = $checkAnswers; |
| 159 | $self->{previewAnswers} = $previewAnswers; |
162 | $self->{previewAnswers} = $previewAnswers; |
| 160 | $self->{formFields} = $formFields; |
163 | $self->{formFields} = $formFields; |
| 161 | |
164 | |
| 162 | $self->{want} = \%want; |
165 | $self->{want} = \%want; |
| 163 | $self->{must} = \%must; |
166 | $self->{must} = \%must; |
| … | |
… | |
| 267 | my $wwdb = $self->{wwdb}; |
270 | my $wwdb = $self->{wwdb}; |
| 268 | my $set = $self->{set}; |
271 | my $set = $self->{set}; |
| 269 | my $problem = $self->{problem}; |
272 | my $problem = $self->{problem}; |
| 270 | my $permissionLevel = $self->{permissionLevel}; |
273 | my $permissionLevel = $self->{permissionLevel}; |
| 271 | my $submitAnswers = $self->{submitAnswers}; |
274 | my $submitAnswers = $self->{submitAnswers}; |
|
|
275 | my $checkAnswers = $self->{checkAnswers}; |
| 272 | my $previewAnswers = $self->{previewAnswers}; |
276 | my $previewAnswers = $self->{previewAnswers}; |
|
|
277 | my %want = %{ $self->{want} }; |
|
|
278 | my %can = %{ $self->{can} }; |
|
|
279 | my %must = %{ $self->{must} }; |
| 273 | my %will = %{ $self->{will} }; |
280 | my %will = %{ $self->{will} }; |
| 274 | my $pg = $self->{pg}; |
281 | my $pg = $self->{pg}; |
| 275 | |
282 | |
| 276 | ##### translation errors? ##### |
283 | ##### translation errors? ##### |
| 277 | |
284 | |
| … | |
… | |
| 321 | ##### output ##### |
328 | ##### output ##### |
| 322 | |
329 | |
| 323 | # attempt summary |
330 | # attempt summary |
| 324 | if ($submitAnswers or $will{showCorrectAnswers}) { |
331 | if ($submitAnswers or $will{showCorrectAnswers}) { |
| 325 | # print this if user submitted answers OR requested correct answers |
332 | # print this if user submitted answers OR requested correct answers |
| 326 | print $self->attemptResults($pg, $submitAnswers, $will{showCorrectAnswers}, |
333 | print $self->attemptResults($pg, $submitAnswers, |
|
|
334 | $will{showCorrectAnswers}, |
| 327 | $pg->{flags}->{showPartialCorrectAnswers}, 0); |
335 | $pg->{flags}->{showPartialCorrectAnswers}, 0); |
|
|
336 | } elsif ($checkAnswers) { |
|
|
337 | # print this if user previewed answers |
|
|
338 | print $self->attemptResults($pg, 1, 0, 1, 0); |
|
|
339 | # show attempt answers |
|
|
340 | # don't show correct answers |
|
|
341 | # show attempt results (correctness) |
|
|
342 | # don't show attempt previews |
| 328 | } elsif ($previewAnswers) { |
343 | } elsif ($previewAnswers) { |
| 329 | # print this if user previewed answers |
344 | # print this if user previewed answers |
| 330 | print $self->attemptResults($pg, 1, 0, 0, 1); |
345 | print $self->attemptResults($pg, 1, 0, 0, 1); |
| 331 | # don't show correctness |
346 | # show attempt answers |
| 332 | # don't show correct answers |
347 | # don't show correct answers |
|
|
348 | # don't show attempt results (correctness) |
|
|
349 | # show attempt previews |
| 333 | } |
350 | } |
| 334 | |
351 | |
| 335 | # score summary |
352 | # score summary |
| 336 | my $attempts = $problem->num_correct + $problem->num_incorrect; |
353 | my $attempts = $problem->num_correct + $problem->num_incorrect; |
| 337 | my $attemptsNoun = $attempts != 1 ? "times" : "time"; |
354 | my $attemptsNoun = $attempts != 1 ? "times" : "time"; |
| … | |
… | |
| 370 | CGI::startform("POST", $r->uri), |
387 | CGI::startform("POST", $r->uri), |
| 371 | $self->hidden_authen_fields, |
388 | $self->hidden_authen_fields, |
| 372 | CGI::p(CGI::i($pg->{result}->{msg})), |
389 | CGI::p(CGI::i($pg->{result}->{msg})), |
| 373 | CGI::p($pg->{body_text}), |
390 | CGI::p($pg->{body_text}), |
| 374 | CGI::p( |
391 | CGI::p( |
| 375 | CGI::submit(-name=>"submitAnswers", -label=>"Submit Answers"), |
392 | ($can{recordAnswers} |
| 376 | CGI::submit(-name=>"previewAnswers", -label=>"Preview Answers"), |
393 | ? CGI::submit(-name=>"submitAnswers", |
|
|
394 | -label=>"Submit Answers") |
|
|
395 | : ""), |
|
|
396 | ($can{recordAnswers} |
|
|
397 | ? CGI::submit(-name=>"checkAnswers", |
|
|
398 | -label=>"Check Answers") |
|
|
399 | : ""), |
|
|
400 | CGI::submit(-name=>"previewAnswers", |
|
|
401 | -label=>"Preview Answers"), |
| 377 | ), |
402 | ), |
| 378 | $self->viewOptions(), |
403 | $self->viewOptions(), |
| 379 | CGI::endform(); |
404 | CGI::endform(); |
| 380 | |
405 | |
| 381 | # feedback form |
406 | # feedback form |