| … | |
… | |
| 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}; |
| … | |
… | |
| 345 | my $ansEvalDefaults = $courseEnv->{pg}->{ansEvalDefaults}; |
343 | my $ansEvalDefaults = $courseEnv->{pg}->{ansEvalDefaults}; |
| 346 | $envir{$_} = $ansEvalDefaults->{$_} foreach (keys %$ansEvalDefaults); |
344 | $envir{$_} = $ansEvalDefaults->{$_} foreach (keys %$ansEvalDefaults); |
| 347 | |
345 | |
| 348 | # ---------------------------------------------------------------------- |
346 | # ---------------------------------------------------------------------- |
| 349 | |
347 | |
|
|
348 | my $basename = "equation-$envir{psvn}.$envir{probNum}"; |
|
|
349 | $basename .= ".$envir{problemSeed}" if $envir{problemSeed}; |
|
|
350 | |
| 350 | # Object for generating equation images |
351 | # Object for generating equation images |
| 351 | $envir{imagegen} = WeBWorK::PG::ImageGenerator->new( |
352 | $envir{imagegen} = WeBWorK::PG::ImageGenerator->new( |
| 352 | tempDir => $courseEnv->{webworkDirs}->{tmp}, # global temp dir |
353 | tempDir => $courseEnv->{webworkDirs}->{tmp}, # global temp dir |
| 353 | dir => $envir{tempDirectory}, |
354 | dir => $envir{tempDirectory}, |
| 354 | url => $envir{tempURL}, |
355 | url => $envir{tempURL}, |
| 355 | basename => "equation-$envir{psvn}.$envir{probNum}.$envir{problemSeed}", |
356 | basename => $basename, |
| 356 | latex => $envir{externalLaTeXPath}, |
357 | latex => $envir{externalLaTeXPath}, |
| 357 | dvipng => $envir{externalDvipngPath}, |
358 | dvipng => $envir{externalDvipngPath}, |
| 358 | ); |
359 | ); |
| 359 | |
360 | |
| 360 | # Other things... |
361 | # Other things... |