| … | |
… | |
| 16 | use File::Path qw(rmtree); |
16 | use File::Path qw(rmtree); |
| 17 | use WeBWorK::PG::ImageGenerator; |
17 | use WeBWorK::PG::ImageGenerator; |
| 18 | use WeBWorK::PG::Translator; |
18 | use WeBWorK::PG::Translator; |
| 19 | use WeBWorK::Utils qw(readFile formatDateTime writeTimingLogEntry makeTempDirectory); |
19 | use WeBWorK::Utils qw(readFile formatDateTime writeTimingLogEntry makeTempDirectory); |
| 20 | |
20 | |
| 21 | sub new($$$$$$$$) { |
21 | sub new { |
| 22 | my $invocant = shift; |
22 | my $invocant = shift; |
| 23 | my $class = ref($invocant) || $invocant; |
23 | my $class = ref($invocant) || $invocant; |
| 24 | my ( |
24 | my ( |
| 25 | $courseEnv, |
25 | $courseEnv, |
| 26 | $user, |
26 | $user, |
| … | |
… | |
| 100 | #warn "PG: setting the opcode mask (using default values)\n"; |
100 | #warn "PG: setting the opcode mask (using default values)\n"; |
| 101 | $translator->set_mask(); |
101 | $translator->set_mask(); |
| 102 | |
102 | |
| 103 | # store the problem source |
103 | # store the problem source |
| 104 | #warn "PG: storing the problem source\n"; |
104 | #warn "PG: storing the problem source\n"; |
| 105 | my $sourceFile = ( defined($translationOptions->{override_problem_source}) ) ? |
105 | my $sourceFile = $problem->source_file; |
| 106 | $translationOptions->{override_problem_source} : |
|
|
| 107 | $problem->source_file; |
|
|
| 108 | $sourceFile = $courseEnv->{courseDirs}->{templates}."/".$sourceFile |
106 | $sourceFile = $courseEnv->{courseDirs}->{templates}."/".$sourceFile |
| 109 | unless ($sourceFile =~ /^\//); |
107 | unless ($sourceFile =~ /^\//); |
| 110 | eval { $translator->source_string(readFile($sourceFile)) }; |
108 | eval { $translator->source_string(readFile($sourceFile)) }; |
| 111 | if ($@) { |
109 | if ($@) { |
| 112 | # well, we couldn't get the problem source, for some reason. |
110 | # well, we couldn't get the problem source, for some reason. |
| … | |
… | |
| 228 | }, $class; |
226 | }, $class; |
| 229 | } |
227 | } |
| 230 | |
228 | |
| 231 | # ----- |
229 | # ----- |
| 232 | |
230 | |
| 233 | sub defineProblemEnvir($$$$$$$) { |
231 | sub defineProblemEnvir { |
| 234 | my ( |
232 | my ( |
| 235 | $courseEnv, |
233 | $courseEnv, |
| 236 | $user, |
234 | $user, |
| 237 | $key, |
235 | $key, |
| 238 | $set, |
236 | $set, |
| … | |
… | |
| 252 | |
250 | |
| 253 | # Vital state information |
251 | # Vital state information |
| 254 | # ADDED: displayHintsQ, displaySolutionsQ, refreshMath2img, |
252 | # ADDED: displayHintsQ, displaySolutionsQ, refreshMath2img, |
| 255 | # texDisposition |
253 | # texDisposition |
| 256 | |
254 | |
| 257 | $envir{psvn} = $psvn; |
255 | $envir{psvn} = $set->psvn; |
| 258 | $envir{psvnNumber} = $envir{psvn}; |
256 | $envir{psvnNumber} = $envir{psvn}; |
| 259 | $envir{probNum} = $problem->problem_id; |
257 | $envir{probNum} = $problem->problem_id; |
| 260 | $envir{questionNumber} = $envir{probNum}; |
258 | $envir{questionNumber} = $envir{probNum}; |
| 261 | $envir{fileName} = $problem->source_file; |
259 | $envir{fileName} = $problem->source_file; |
| 262 | $envir{probFileName} = $envir{fileName}; |
260 | $envir{probFileName} = $envir{fileName}; |
| 263 | $envir{problemSeed} = (defined($options->{override_seed}) ) ? $options->{override_seed} :$problem->problem_seed; |
261 | $envir{problemSeed} = $problem->problem_seed; |
| 264 | $envir{displayMode} = translateDisplayModeNames($options->{displayMode}); |
262 | $envir{displayMode} = translateDisplayModeNames($options->{displayMode}); |
| 265 | $envir{languageMode} = $envir{displayMode}; |
263 | $envir{languageMode} = $envir{displayMode}; |
| 266 | $envir{outputMode} = $envir{displayMode}; |
264 | $envir{outputMode} = $envir{displayMode}; |
| 267 | $envir{displayHintsQ} = $options->{showHints}; |
265 | $envir{displayHintsQ} = $options->{showHints}; |
| 268 | $envir{displaySolutionsQ} = $options->{showSolutions}; |
266 | $envir{displaySolutionsQ} = $options->{showSolutions}; |