| … | |
… | |
| 41 | |
41 | |
| 42 | sub pre_header_initialize { |
42 | sub pre_header_initialize { |
| 43 | my ($self, $setName, $problemNumber) = @_; |
43 | my ($self, $setName, $problemNumber) = @_; |
| 44 | my $courseEnv = $self->{courseEnvironment}; |
44 | my $courseEnv = $self->{courseEnvironment}; |
| 45 | my $r = $self->{r}; |
45 | my $r = $self->{r}; |
| 46 | my $userName = $r->param('user'); |
46 | my $authUserName = $r->param("user"); |
|
|
47 | my $userName = $r->param("effectiveUser"); |
| 47 | |
48 | |
| 48 | ##### database setup ##### |
49 | ##### database setup ##### |
| 49 | |
50 | |
| 50 | my $cldb = WeBWorK::DB::Classlist->new($courseEnv); |
51 | my $cldb = WeBWorK::DB::Classlist->new($courseEnv); |
| 51 | my $wwdb = WeBWorK::DB::WW->new($courseEnv); |
52 | my $wwdb = WeBWorK::DB::WW->new($courseEnv); |
| … | |
… | |
| 53 | |
54 | |
| 54 | my $user = $cldb->getUser($userName); |
55 | my $user = $cldb->getUser($userName); |
| 55 | my $set = $wwdb->getSet($userName, $setName); |
56 | my $set = $wwdb->getSet($userName, $setName); |
| 56 | my $problem = $wwdb->getProblem($userName, $setName, $problemNumber); |
57 | my $problem = $wwdb->getProblem($userName, $setName, $problemNumber); |
| 57 | my $psvn = $wwdb->getPSVN($userName, $setName); |
58 | my $psvn = $wwdb->getPSVN($userName, $setName); |
| 58 | my $permissionLevel = $authdb->getPermissions($userName); |
59 | my $permissionLevel = $authdb->getPermissions($authUserName); |
| 59 | |
60 | |
| 60 | ##### form processing ##### |
61 | ##### form processing ##### |
| 61 | |
62 | |
| 62 | # set options from form fields (see comment at top of file for names) |
63 | # set options from form fields (see comment at top of file for names) |
| 63 | my $displayMode = $r->param("displayMode") || $courseEnv->{pg}->{options}->{displayMode}; |
64 | my $displayMode = $r->param("displayMode") || $courseEnv->{pg}->{options}->{displayMode}; |
| 64 | my $redisplay = $r->param("redisplay"); |
65 | my $redisplay = $r->param("redisplay"); |
| 65 | my $submitAnswers = $r->param("submitAnswers"); |
66 | my $submitAnswers = $r->param("submitAnswers"); |
| 66 | my $previewAnswers = $r->param("previewAnswers"); |
67 | my $previewAnswers = $r->param("previewAnswers"); |
| 67 | |
68 | |
| 68 | # coerce form fields into CGI::Vars format |
69 | # coerce form fields into CGI::Vars format |
| … | |
… | |
| 141 | |
142 | |
| 142 | $self->{cldb} = $cldb; |
143 | $self->{cldb} = $cldb; |
| 143 | $self->{wwdb} = $wwdb; |
144 | $self->{wwdb} = $wwdb; |
| 144 | $self->{authdb} = $authdb; |
145 | $self->{authdb} = $authdb; |
| 145 | |
146 | |
|
|
147 | $self->{userName} = $userName; |
| 146 | $self->{user} = $user; |
148 | $self->{user} = $user; |
| 147 | $self->{set} = $set; |
149 | $self->{set} = $set; |
| 148 | $self->{problem} = $problem; |
150 | $self->{problem} = $problem; |
| 149 | $self->{permissionLevel} = $permissionLevel; |
151 | $self->{permissionLevel} = $permissionLevel; |
| 150 | |
152 | |
| … | |
… | |
| 205 | my $courseName = $ce->{courseName}; |
207 | my $courseName = $ce->{courseName}; |
| 206 | |
208 | |
| 207 | print CGI::strong("Problems"), CGI::br(); |
209 | print CGI::strong("Problems"), CGI::br(); |
| 208 | |
210 | |
| 209 | my $wwdb = $self->{wwdb}; |
211 | my $wwdb = $self->{wwdb}; |
| 210 | my $user = $self->{r}->param("user"); |
212 | my $user = $self->{userName}; |
| 211 | my @problems; |
213 | my @problems; |
| 212 | push @problems, $wwdb->getProblem($user, $setName, $_) |
214 | push @problems, $wwdb->getProblem($user, $setName, $_) |
| 213 | foreach ($wwdb->getProblems($user, $setName)); |
215 | foreach ($wwdb->getProblems($user, $setName)); |
| 214 | foreach my $problem (sort { $a->id <=> $b->id } @problems) { |
216 | foreach my $problem (sort { $a->id <=> $b->id } @problems) { |
| 215 | print CGI::a({-href=>"$root/$courseName/$setName/".$problem->id."/?" |
217 | print CGI::a({-href=>"$root/$courseName/$setName/".$problem->id."/?" |
| 216 | . $self->url_authen_args}, "Problem ".$problem->id), CGI::br(); |
218 | . $self->url_authen_args . "&displayMode=" . $self->{displayMode}}, |
|
|
219 | "Problem ".$problem->id), CGI::br(); |
| 217 | } |
220 | } |
| 218 | } |
221 | } |
| 219 | |
222 | |
| 220 | sub nav { |
223 | sub nav { |
| 221 | my $self = shift; |
224 | my $self = shift; |
| … | |
… | |
| 226 | my $ce = $self->{courseEnvironment}; |
229 | my $ce = $self->{courseEnvironment}; |
| 227 | my $root = $ce->{webworkURLs}->{root}; |
230 | my $root = $ce->{webworkURLs}->{root}; |
| 228 | my $courseName = $ce->{courseName}; |
231 | my $courseName = $ce->{courseName}; |
| 229 | |
232 | |
| 230 | my $wwdb = $self->{wwdb}; |
233 | my $wwdb = $self->{wwdb}; |
| 231 | my $user = $self->{r}->param("user"); |
234 | my $user = $self->{userName}; |
|
|
235 | my $tail = "&displayMode=".$self->{displayMode}; |
| 232 | |
236 | |
| 233 | my @links = ("Problem List" => "$root/$courseName/$setName"); |
237 | my @links = ("Problem List" => "$root/$courseName/$setName"); |
| 234 | |
238 | |
| 235 | my $prevProblem = $wwdb->getProblem($user, $setName, $problemNumber-1); |
239 | my $prevProblem = $wwdb->getProblem($user, $setName, $problemNumber-1); |
| 236 | my $nextProblem = $wwdb->getProblem($user, $setName, $problemNumber+1); |
240 | my $nextProblem = $wwdb->getProblem($user, $setName, $problemNumber+1); |
| … | |
… | |
| 239 | : ""; |
243 | : ""; |
| 240 | push @links, "Next Problem" => $nextProblem |
244 | push @links, "Next Problem" => $nextProblem |
| 241 | ? "$root/$courseName/$setName/".$nextProblem->id |
245 | ? "$root/$courseName/$setName/".$nextProblem->id |
| 242 | : ""; |
246 | : ""; |
| 243 | |
247 | |
| 244 | return $self->navMacro($args, @links); |
248 | return $self->navMacro($args, $tail, @links); |
| 245 | } |
249 | } |
| 246 | |
250 | |
| 247 | sub title { |
251 | sub title { |
| 248 | my $self = shift; |
252 | my $self = shift; |
| 249 | my $setName = $self->{set}->id; |
253 | my $setName = $self->{set}->id; |
| … | |
… | |
| 396 | if ($pg->{warnings} ne "") { |
400 | if ($pg->{warnings} ne "") { |
| 397 | print CGI::hr(), warningOutput($pg->{warnings}); |
401 | print CGI::hr(), warningOutput($pg->{warnings}); |
| 398 | } |
402 | } |
| 399 | |
403 | |
| 400 | # debugging stuff |
404 | # debugging stuff |
| 401 | print |
405 | #print |
| 402 | CGI::hr(), |
406 | # CGI::hr(), |
| 403 | CGI::h2("debugging information"), |
407 | # CGI::h2("debugging information"), |
| 404 | CGI::h3("form fields"), |
408 | # CGI::h3("form fields"), |
| 405 | ref2string($self->{formFields}), |
409 | # ref2string($self->{formFields}), |
| 406 | CGI::h3("user object"), |
410 | # CGI::h3("user object"), |
| 407 | ref2string($self->{user}), |
411 | # ref2string($self->{user}), |
| 408 | CGI::h3("set object"), |
412 | # CGI::h3("set object"), |
| 409 | ref2string($set), |
413 | # ref2string($set), |
| 410 | CGI::h3("problem object"), |
414 | # CGI::h3("problem object"), |
| 411 | ref2string($problem), |
415 | # ref2string($problem), |
| 412 | CGI::h3("PG object"), |
416 | # CGI::h3("PG object"), |
| 413 | ref2string($pg, {'WeBWorK::PG::Translator' => 1}); |
417 | # ref2string($pg, {'WeBWorK::PG::Translator' => 1}); |
| 414 | |
418 | |
| 415 | return ""; |
419 | return ""; |
| 416 | } |
420 | } |
| 417 | |
421 | |
| 418 | ##### output utilities ##### |
422 | ##### output utilities ##### |