| … | |
… | |
| 51 | $self->{sets} = \@sets; |
51 | $self->{sets} = \@sets; |
| 52 | $self->{users} = \@users; |
52 | $self->{users} = \@users; |
| 53 | $self->{errors} = []; |
53 | $self->{errors} = []; |
| 54 | $self->{warnings} = []; |
54 | $self->{warnings} = []; |
| 55 | |
55 | |
| 56 | # security checks - these have to be put somewhere |
56 | # security checks |
| 57 | my $multiSet = $self->{permissionLevel} > 0; |
57 | my $multiSet = $self->{permissionLevel} > 0; |
| 58 | my $multiUser = $self->{permissionLevel} > 0; |
58 | my $multiUser = $self->{permissionLevel} > 0; |
| 59 | if (@sets > 1 and not $multiSet) { |
59 | if (@sets > 1 and not $multiSet) { |
| 60 | $self->{generationError} = ["SIMPLE", "You are not permitted to generate hardcopy for multiple sets. Please select a single set and try again."]; |
60 | $self->{generationError} = ["SIMPLE", "You are not permitted to generate hardcopy for multiple sets. Please select a single set and try again."]; |
| 61 | } |
61 | } |
| … | |
… | |
| 171 | } |
171 | } |
| 172 | print CGI::end_p(); |
172 | print CGI::end_p(); |
| 173 | |
173 | |
| 174 | print CGI::start_form(-method=>"POST", -action=>$r->uri); |
174 | print CGI::start_form(-method=>"POST", -action=>$r->uri); |
| 175 | print $self->hidden_authen_fields(); |
175 | print $self->hidden_authen_fields(); |
|
|
176 | warn "showHints=", $r->param("showHints"), "\n"; |
|
|
177 | print CGI::p( |
|
|
178 | CGI::checkbox( |
|
|
179 | -name => "showCorrectAnswers", |
|
|
180 | -checked => $r->param("showCorrectAnswers") || 0, |
|
|
181 | -label => "Correct answers", |
|
|
182 | ), CGI::br(), |
|
|
183 | CGI::checkbox( |
|
|
184 | -name => "showHints", |
|
|
185 | -checked => $r->param("showHints") || 0, |
|
|
186 | -label => "Hints", |
|
|
187 | ), CGI::br(), |
|
|
188 | CGI::checkbox( |
|
|
189 | -name => "showSolutions", |
|
|
190 | -checked => $r->param("showSolutions") || 0, |
|
|
191 | -label => "Solutions", |
|
|
192 | ), |
|
|
193 | ); |
| 176 | print CGI::start_table({-width=>"100%"}), CGI::start_Tr({-valign=>"top"}); |
194 | print CGI::start_table({-width=>"100%"}), CGI::start_Tr({-valign=>"top"}); |
| 177 | |
195 | |
| 178 | my $multiSet = $self->{permissionLevel} > 0; |
196 | my $multiSet = $self->{permissionLevel} > 0; |
| 179 | my $multiUser = $self->{permissionLevel} > 0; |
197 | my $multiUser = $self->{permissionLevel} > 0; |
| 180 | |
198 | |
| … | |
… | |
| 408 | sub getProblemTeX { |
426 | sub getProblemTeX { |
| 409 | my ($self, $setName, $problemNumber, $pgFile) = @_; |
427 | my ($self, $setName, $problemNumber, $pgFile) = @_; |
| 410 | my $r = $self->{r}; |
428 | my $r = $self->{r}; |
| 411 | my $ce = $self->{courseEnvironment}; |
429 | my $ce = $self->{courseEnvironment}; |
| 412 | |
430 | |
| 413 | my $wwdb = $self->{wwdb}; |
431 | my $wwdb = $self->{wwdb}; |
| 414 | my $cldb = $self->{cldb}; |
432 | my $cldb = $self->{cldb}; |
|
|
433 | my $authdb = $self->{authdb}; |
| 415 | my $effectiveUser = $self->{effectiveUser}; |
434 | my $effectiveUser = $self->{effectiveUser}; |
|
|
435 | my $permissionLevel = $self->{permissionLevel}; |
| 416 | my $set = $wwdb->getSet($effectiveUser->id, $setName); |
436 | my $set = $wwdb->getSet($effectiveUser->id, $setName); |
| 417 | my $psvn = $wwdb->getPSVN($effectiveUser->id, $setName); |
437 | my $psvn = $wwdb->getPSVN($effectiveUser->id, $setName); |
| 418 | |
438 | |
| 419 | # decide what to do about problem number |
439 | # decide what to do about problem number |
| 420 | my $problem; |
440 | my $problem; |
| … | |
… | |
| 426 | set_id => $set->id, |
446 | set_id => $set->id, |
| 427 | login_id => $effectiveUser->id, |
447 | login_id => $effectiveUser->id, |
| 428 | source_file => $pgFile, |
448 | source_file => $pgFile, |
| 429 | # the rest of Problem's fields are not needed, i think |
449 | # the rest of Problem's fields are not needed, i think |
| 430 | ); |
450 | ); |
|
|
451 | } |
|
|
452 | |
|
|
453 | # *** right here, figure out if we're allowed to get solutions and call PG->new accordingly. |
|
|
454 | my $showCorrectAnswers = $r->param("showCorrectAnswers") || 0; |
|
|
455 | my $showHints = $r->param("showHints") || 0; |
|
|
456 | my $showSolutions = $r->param("showSolutions") || 0; |
|
|
457 | unless ($permissionLevel > 0 or time > $set->due_date) { |
|
|
458 | $showCorrectAnswers = 0; |
|
|
459 | $showSolutions = 0; |
| 431 | } |
460 | } |
| 432 | |
461 | |
| 433 | my $pg = WeBWorK::PG->new( |
462 | my $pg = WeBWorK::PG->new( |
| 434 | $ce, |
463 | $ce, |
| 435 | $effectiveUser, |
464 | $effectiveUser, |
| … | |
… | |
| 464 | # if there was an error, body_text contains |
493 | # if there was an error, body_text contains |
| 465 | # the error context, not TeX code |
494 | # the error context, not TeX code |
| 466 | $pg->{body_text} = undef; |
495 | $pg->{body_text} = undef; |
| 467 | } |
496 | } |
| 468 | |
497 | |
|
|
498 | # *** right here, append list of correct answers to body text |
|
|
499 | |
| 469 | return $pg->{body_text}; |
500 | return $pg->{body_text}; |
| 470 | } |
501 | } |
| 471 | |
502 | |
| 472 | sub texInclude { |
503 | sub texInclude { |
| 473 | my ($self, $texFile) = @_; |
504 | my ($self, $texFile) = @_; |