[system] / trunk / webwork-modperl / lib / WeBWorK / ContentGenerator / Problem.pm Repository:
ViewVC logotype

Diff of /trunk/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm

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

Revision 1635 Revision 1636
47# 47#
48# FIXME: this table is heinously out of date 48# FIXME: this table is heinously out of date
49# 49#
50############################################################ 50############################################################
51 51
52# FIXME: what is this?
52sub templateName { 53sub templateName {
53 "problem"; 54 "problem";
54} 55}
55 56
56sub pre_header_initialize { 57sub pre_header_initialize {
59 my $courseEnv = $self->{ce}; 60 my $courseEnv = $self->{ce};
60 my $db = $self->{db}; 61 my $db = $self->{db};
61 my $userName = $r->param('user'); 62 my $userName = $r->param('user');
62 my $effectiveUserName = $r->param('effectiveUser'); 63 my $effectiveUserName = $r->param('effectiveUser');
63 my $key = $r->param('key'); 64 my $key = $r->param('key');
64 my $user = $db->getUser($userName); 65
66 my $user = $db->getUser($userName); # checked
67 die "record for user $userName (real user) does not exist."
68 unless defined $user;
69
65 my $effectiveUser = $db->getUser($effectiveUserName); 70 my $effectiveUser = $db->getUser($effectiveUserName); # checked
71 die "record for user $effectiveUserName (effective user) does not exist."
72 unless defined $effectiveUser;
73
74 my $PermissionLevel = $db->getPermissionLevel($userName); # checked
75 die "permission level record for user $userName does not exist (but the user does? odd...)"
76 unless defined $PermissionLevel;
66 my $permissionLevel = $db->getPermissionLevel($userName)->permission(); 77 my $permissionLevel = $PermissionLevel->permission;
67 78
68 # obtain the merged set for $effectiveUser 79 # obtain the merged set for $effectiveUser
69 my $set = $db->getMergedSet($effectiveUserName, $setName); 80 my $set = $db->getMergedSet($effectiveUserName, $setName); # checked
70 81
71 # obtain the merged problem for $effectiveUser 82 # obtain the merged problem for $effectiveUser
72 my $problem = $db->getMergedProblem($effectiveUserName, $setName, $problemNumber); 83 my $problem = $db->getMergedProblem($effectiveUserName, $setName, $problemNumber); # checked
73 84
74 my $editMode = $r->param("editMode"); 85 my $editMode = $r->param("editMode");
75 86
76 if ($permissionLevel > 0 and defined $editMode) { 87 if ($permissionLevel > 0 and defined $editMode) {
77 # professors are allowed to fabricate sets and problems not 88 # professors are allowed to fabricate sets and problems not
80 91
81 # if that is not yet defined obtain the global set, convert 92 # if that is not yet defined obtain the global set, convert
82 # it to a user set, and add fake user data 93 # it to a user set, and add fake user data
83 unless (defined $set) { 94 unless (defined $set) {
84 my $userSetClass = $db->{set_user}->{record}; 95 my $userSetClass = $db->{set_user}->{record};
85 $set = global2user($userSetClass, 96 my $globalSet = $db->getGlobalSet($setName); # checked
86 $db->getGlobalSet($setName)); 97 # if the global set doesn't exist either, bail!
87 die "Set $setName does not exist" 98 die "Set $setName does not exist"
88 unless defined $set; 99 unless defined $set;
100 $set = global2user($userSetClass, $globalSet);
89 $set->psvn(0); 101 $set->psvn(0);
90 } 102 }
91 103
92 # if that is not yet defined obtain the global problem, 104 # if that is not yet defined obtain the global problem,
93 # convert it to a user problem, and add fake user data 105 # convert it to a user problem, and add fake user data
94 unless (defined $problem) { 106 unless (defined $problem) {
95 my $userProblemClass = $db->{problem_user}->{record}; 107 my $userProblemClass = $db->{problem_user}->{record};
96 $problem = global2user($userProblemClass,
97 $db->getGlobalProblem($setName,$problemNumber)); 108 my $globalProblem = $db->getGlobalProblem($setName, $problemNumber); # checked
109 # if the global problem doesn't exist either, bail!
98 die "Problem $problemNumber in set $setName does not exist" 110 die "Problem $problemNumber in set $setName does not exist"
99 unless defined $problem; 111 unless defined $problem;
112 $problem = global2user($userProblemClass, $globalProblem);
100 $problem->user_id($effectiveUserName); 113 $problem->user_id($effectiveUserName);
101 $problem->problem_seed(0); 114 $problem->problem_seed(0);
102 $problem->status(0); 115 $problem->status(0);
103 $problem->attempted(0); 116 $problem->attempted(0);
104 $problem->last_answer(""); 117 $problem->last_answer("");
450 # if answers were submitted: 463 # if answers were submitted:
451 my $scoreRecordedMessage; 464 my $scoreRecordedMessage;
452 if ($submitAnswers) { 465 if ($submitAnswers) {
453 # get a "pure" (unmerged) UserProblem to modify 466 # get a "pure" (unmerged) UserProblem to modify
454 # this will be undefined if the problem has not been assigned to this user 467 # this will be undefined if the problem has not been assigned to this user
455 my $pureProblem = $db->getUserProblem($problem->user_id, $problem->set_id, $problem->problem_id); 468 my $pureProblem = $db->getUserProblem($problem->user_id, $problem->set_id, $problem->problem_id); # checked
456 if (defined $pureProblem) { 469 if (defined $pureProblem) {
457 # store answers in DB for sticky answers 470 # store answers in DB for sticky answers
458 my %answersToStore; 471 my %answersToStore;
459 my %answerHash = %{ $pg->{answers} }; 472 my %answerHash = %{ $pg->{answers} };
460 $answersToStore{$_} = $self->{formFields}->{$_} #$answerHash{$_}->{original_student_ans} -- this may have been modified for fields with multiple values. Don't use it!! 473 $answersToStore{$_} = $self->{formFields}->{$_} #$answerHash{$_}->{original_student_ans} -- this may have been modified for fields with multiple values. Don't use it!!
853 } else { 866 } else {
854 $summary .= "At least one of the above answers is NOT correct."; 867 $summary .= "At least one of the above answers is NOT correct.";
855 } 868 }
856 } 869 }
857 #FIXME there must be a better way to force refresh. 870 #FIXME there must be a better way to force refresh.
858 my $refresh_warning = 'Hold down shift and click "refresh" or "reload" to update answer preview images.'; 871 #my $refresh_warning = 'Hold down shift and click "refresh" or "reload" to update answer preview images.';
859 return CGI::table({-class=>"attemptResults"}, CGI::Tr(\@tableRows)) . 872 #return CGI::table({-class=>"attemptResults"}, CGI::Tr(\@tableRows)) .
860 CGI::div({style=>'color:red; font-size:10pt'},$refresh_warning) . 873 #CGI::div({style=>'color:red; font-size:10pt'},$refresh_warning) .
861 ($showSummary ? CGI::p({class=>'emphasis'},$summary) : ""); 874 #($showSummary ? CGI::p({class=>'emphasis'},$summary) : "");
875 # ... this has been fixed by equation caching.
876 return
877 CGI::table({-class=>"attemptResults"}, CGI::Tr(\@tableRows))
878 . ($showSummary ? CGI::p({class=>'emphasis'},$summary) : "");
862} 879}
863sub nbsp { 880sub nbsp {
864 my $str = shift; 881 my $str = shift;
865 ($str =~/\S/) ? $str : ' ' ; # returns non-breaking space for empty strings 882 ($str =~/\S/) ? $str : ' ' ; # returns non-breaking space for empty strings
866 # tricky cases: $str =0; 883 # tricky cases: $str =0;

Legend:
Removed from v.1635  
changed lines
  Added in v.1636

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9