[system] / trunk / webwork2 / lib / WeBWorK / ContentGenerator / Problem.pm Repository:
ViewVC logotype

Diff of /trunk/webwork2/lib/WeBWorK/ContentGenerator/Problem.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1197 Revision 1202
9=head1 NAME 9=head1 NAME
10 10
11WeBWorK::ContentGenerator::Problem - Allow a student to interact with a problem. 11WeBWorK::ContentGenerator::Problem - Allow a student to interact with a problem.
12 12
13=cut 13=cut
14 14my $timer0_ON=0; # times pg translation phase
15use strict; 15use strict;
16use warnings; 16use warnings;
17use CGI qw(); 17use CGI qw();
18use File::Path qw(rmtree); 18use File::Path qw(rmtree);
19use WeBWorK::Form; 19use WeBWorK::Form;
219 my %oldAnswers = decodeAnswers($problem->last_answer); 219 my %oldAnswers = decodeAnswers($problem->last_answer);
220 $formFields->{$_} = $oldAnswers{$_} foreach keys %oldAnswers; 220 $formFields->{$_} = $oldAnswers{$_} foreach keys %oldAnswers;
221 } 221 }
222 222
223 ##### translation ##### 223 ##### translation #####
224 224
225 $WeBWorK::timer0->continue("begin pg processing") if $timer0_ON;
225 my $pg = WeBWorK::PG->new( 226 my $pg = WeBWorK::PG->new(
226 $courseEnv, 227 $courseEnv,
227 $effectiveUser, 228 $effectiveUser,
228 $key, 229 $key,
229 $set, 230 $set,
237 refreshMath2img => $will{showHints} || $will{showSolutions}, 238 refreshMath2img => $will{showHints} || $will{showSolutions},
238 processAnswers => 1, 239 processAnswers => 1,
239 }, 240 },
240 ); 241 );
241 242
243 $WeBWorK::timer0->continue("end pg processing") if $timer0_ON;
242 ##### fix hint/solution options ##### 244 ##### fix hint/solution options #####
243 245
244 $can{showHints} &&= $pg->{flags}->{hintExists}; 246 $can{showHints} &&= $pg->{flags}->{hintExists};
245 $can{showSolutions} &&= $pg->{flags}->{solutionExists}; 247 $can{showSolutions} &&= $pg->{flags}->{solutionExists};
246 248
309 311
310 my $ce = $self->{ce}; 312 my $ce = $self->{ce};
311 my $db = $self->{db}; 313 my $db = $self->{db};
312 my $root = $ce->{webworkURLs}->{root}; 314 my $root = $ce->{webworkURLs}->{root};
313 my $courseName = $ce->{courseName}; 315 my $courseName = $ce->{courseName};
314 my $timer0 = WeBWorK::Timing->new("time siblings");
315 $timer0->start;
316 print CGI::strong("Problems"), CGI::br(); 316 print CGI::strong("Problems"), CGI::br();
317 317
318 my $effectiveUser = $self->{r}->param("effectiveUser"); 318 my $effectiveUser = $self->{r}->param("effectiveUser");
319 my @problems; 319 my @problems;
320# push @problems, $db->getMergedProblem($effectiveUser, $setName, $_) 320# push @problems, $db->getMergedProblem($effectiveUser, $setName, $_)
324 foreach my $problem (sort { $a <=> $b } @problems) { 324 foreach my $problem (sort { $a <=> $b } @problems) {
325 print CGI::a({-href=>"$root/$courseName/$setName/".$problem."/?" 325 print CGI::a({-href=>"$root/$courseName/$setName/".$problem."/?"
326 . $self->url_authen_args . "&displayMode=" . $self->{displayMode}}, 326 . $self->url_authen_args . "&displayMode=" . $self->{displayMode}},
327 "Problem ".$problem), CGI::br(); 327 "Problem ".$problem), CGI::br();
328 } 328 }
329 $timer0->stop; 329
330 $timer0->save;
331 ''; 330 '';
332} 331}
333 332
334sub nav { 333sub nav {
334 $WeBWorK::timer0->continue("begin nav subroutine") if $timer0_ON;
335 my $self = shift; 335 my $self = shift;
336 my $args = $_[-1]; 336 my $args = $_[-1];
337 my $setName = $self->{set}->set_id; 337 my $setName = $self->{set}->set_id;
338 my $problemNumber = $self->{problem}->problem_id; 338 my $problemNumber = $self->{problem}->problem_id;
339 339
356 : "") , "navPrev"; 356 : "") , "navPrev";
357 push @links, "Next Problem" , ($nextProblem 357 push @links, "Next Problem" , ($nextProblem
358 ? "$root/$courseName/$setName/".$nextProblem->problem_id 358 ? "$root/$courseName/$setName/".$nextProblem->problem_id
359 : "") , "navNext"; 359 : "") , "navNext";
360 360
361 return $self->navMacro($args, $tail, @links); 361 my $result = $self->navMacro($args, $tail, @links);
362 $WeBWorK::timer0->continue("end nav subroutine") if $timer0_ON;
363 return $result;
364
362} 365}
363 366
364sub title { 367sub title {
365 my $self = shift; 368 my $self = shift;
366 my $setName = $self->{set}->set_id; 369 my $setName = $self->{set}->set_id;
396 if ($pg->{flags}->{error_flag}) { 399 if ($pg->{flags}->{error_flag}) {
397 return $self->errorOutput($pg->{errors}, $pg->{body_text}); 400 return $self->errorOutput($pg->{errors}, $pg->{body_text});
398 } 401 }
399 402
400 ##### answer processing ##### 403 ##### answer processing #####
401 404 $WeBWorK::timer0->continue("begin answer processing") if $timer0_ON;
402 # if answers were submitted: 405 # if answers were submitted:
403 if ($submitAnswers) { 406 if ($submitAnswers) {
404 # get a "pure" (unmerged) UserProblem to modify 407 # get a "pure" (unmerged) UserProblem to modify
405 # this will be undefined if the problem has not been assigned to this user 408 # this will be undefined if the problem has not been assigned to this user
406 my $pureProblem = $db->getUserProblem($problem->user_id, $problem->set_id, $problem->problem_id); 409 my $pureProblem = $db->getUserProblem($problem->user_id, $problem->set_id, $problem->problem_id);
475 478
476 } 479 }
477 480
478 } 481 }
479 # end logging student answers 482 # end logging student answers
480 483 $WeBWorK::timer0->continue("end answer processing") if $timer0_ON;
481 ##### output ##### 484 ##### output #####
482 485
483 print CGI::start_div({class=>"problemHeader"}); 486 print CGI::start_div({class=>"problemHeader"});
484 487
485 # custom message for editor 488 # custom message for editor

Legend:
Removed from v.1197  
changed lines
  Added in v.1202

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9