| … | |
… | |
| 11 | |
11 | |
| 12 | =cut |
12 | =cut |
| 13 | |
13 | |
| 14 | use strict; |
14 | use strict; |
| 15 | use warnings; |
15 | use warnings; |
|
|
16 | use File::Path qw(rmtree); |
| 16 | use File::Temp qw(tempdir); |
17 | use File::Temp qw(tempdir); |
| 17 | use WeBWorK::DB::Classlist; |
18 | use WeBWorK::DB::Classlist; |
| 18 | use WeBWorK::DB::WW; |
19 | use WeBWorK::DB::WW; |
| 19 | use WeBWorK::PG::Translator; |
20 | use WeBWorK::PG::Translator; |
| 20 | use WeBWorK::Problem; |
21 | use WeBWorK::Problem; |
| … | |
… | |
| 92 | $translator->load_extra_packages(@extra_packages); |
93 | $translator->load_extra_packages(@extra_packages); |
| 93 | } |
94 | } |
| 94 | |
95 | |
| 95 | # set the environment (from defineProblemEnvir) |
96 | # set the environment (from defineProblemEnvir) |
| 96 | warn "PG: setting the environment (from defineProblemEnvir)\n"; |
97 | warn "PG: setting the environment (from defineProblemEnvir)\n"; |
| 97 | $translator->environment(defineProblemEnvir( |
98 | my $envir = defineProblemEnvir( |
| 98 | $courseEnv, |
99 | $courseEnv, |
| 99 | $user, |
100 | $user, |
| 100 | $key, |
101 | $key, |
| 101 | $set, |
102 | $set, |
| 102 | $problem, |
103 | $problem, |
| 103 | $psvn, |
104 | $psvn, |
| 104 | $formFields, |
105 | $formFields, |
| 105 | $translationOptions, |
106 | $translationOptions, |
| 106 | )); |
107 | ); |
|
|
108 | $translator->environment($envir); |
| 107 | |
109 | |
| 108 | # initialize the Translator |
110 | # initialize the Translator |
| 109 | warn "PG: initializing the Translator\n"; |
111 | warn "PG: initializing the Translator\n"; |
| 110 | $translator->initialize(); |
112 | $translator->initialize(); |
| 111 | |
113 | |
| … | |
… | |
| 154 | |
156 | |
| 155 | # translate the PG source into text |
157 | # translate the PG source into text |
| 156 | warn "PG: translating the PG source into text\n"; |
158 | warn "PG: translating the PG source into text\n"; |
| 157 | $translator->translate(); |
159 | $translator->translate(); |
| 158 | |
160 | |
|
|
161 | # after we're done translating, we may have to clean up after the translator. |
|
|
162 | # for example, 'images' mode uses a tempdir for dvipng's temp files. We have |
|
|
163 | # to remove it. |
|
|
164 | if ($translationOptions->{displayMode} eq 'images' && $envir->{dvipngTempDir}) { |
|
|
165 | rmtree($envir->{dvipngTempDir}, 0, 1); |
|
|
166 | } |
|
|
167 | |
| 159 | my ($result, $state); # we'll need these on the other side of the if block! |
168 | my ($result, $state); # we'll need these on the other side of the if block! |
| 160 | if ($translationOptions->{processAnswers}) { |
169 | if ($translationOptions->{processAnswers}) { |
| 161 | |
170 | |
| 162 | # process student answers |
171 | # process student answers |
| 163 | warn "PG: processing student answers\n"; |
172 | warn "PG: processing student answers\n"; |
| … | |
… | |
| 310 | $envir{templateDirectory} = $courseEnv->{courseDirs}->{templates}."/"; |
319 | $envir{templateDirectory} = $courseEnv->{courseDirs}->{templates}."/"; |
| 311 | $envir{tempDirectory} = $courseEnv->{courseDirs}->{html_temp}."/"; |
320 | $envir{tempDirectory} = $courseEnv->{courseDirs}->{html_temp}."/"; |
| 312 | $envir{tempURL} = $courseEnv->{courseURLs}->{html_temp}; |
321 | $envir{tempURL} = $courseEnv->{courseURLs}->{html_temp}; |
| 313 | $envir{scriptDirectory} = undef; |
322 | $envir{scriptDirectory} = undef; |
| 314 | $envir{webworkDocsURL} = $courseEnv->{webworkURLs}->{docs}; |
323 | $envir{webworkDocsURL} = $courseEnv->{webworkURLs}->{docs}; |
| 315 | $envir{dvipngTempDir} = tempdir("webwork-dvipng-XXXXXXXX", TMPDIR => 1); |
324 | $envir{dvipngTempDir} = $options->{displayMode} eq 'images' |
|
|
325 | ? tempdir("webwork-dvipng-XXXXXXXX", TMPDIR => 1) |
|
|
326 | : undef; |
| 316 | |
327 | |
| 317 | # Default values for evaluating answers |
328 | # Default values for evaluating answers |
| 318 | |
329 | |
| 319 | my $ansEvalDefaults = $courseEnv->{pg}->{ansEvalDefaults}; |
330 | my $ansEvalDefaults = $courseEnv->{pg}->{ansEvalDefaults}; |
| 320 | $envir{$_} = $ansEvalDefaults->{$_} foreach (keys %$ansEvalDefaults); |
331 | $envir{$_} = $ansEvalDefaults->{$_} foreach (keys %$ansEvalDefaults); |