version 1.206, 2006/09/29 20:55:33
|
version 1.215, 2007/02/27 17:52:16
|
Line 283 sub needs_exam_box {
|
Line 283 sub needs_exam_box {
|
sub start_textline { |
sub start_textline { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result = ""; |
my $result = ""; |
|
my $input_id = &start_input($parstack,$safeeval); |
if ($target eq 'web') { |
if ($target eq 'web') { |
$Apache::lonxml::evaluate--; |
$Apache::lonxml::evaluate--; |
my $partid=$Apache::inputtags::part; |
my $partid=$Apache::inputtags::part; |
Line 291 sub start_textline {
|
Line 292 sub start_textline {
|
my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval); |
my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval); |
my $maxlength; |
my $maxlength; |
if ($size eq '') { $size=20; } else { |
if ($size eq '') { $size=20; } else { |
if ($size < 20) { $maxlength=$size; } |
if ($size < 20) { |
|
$maxlength = ' maxlength="'.$size.'"'; |
|
} |
|
} |
|
my $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"}; |
|
&Apache::lonxml::debug("oldresponse $oldresponse is ".ref($oldresponse)); |
|
|
|
if (ref($oldresponse) eq 'ARRAY') { |
|
$oldresponse = $oldresponse->[$#Apache::inputtags::inputlist]; |
} |
} |
my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$id.submission"},'<>&"'); |
$oldresponse = &HTML::Entities::encode($oldresponse,'<>&"'); |
|
|
if ($Apache::lonhomework::type ne 'exam') { |
if ($Apache::lonhomework::type ne 'exam') { |
my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval); |
my $addchars=&Apache::lonxml::get_param('addchars',$parstack,$safeeval); |
$result=''; |
$result=''; |
Line 312 sub start_textline {
|
Line 322 sub start_textline {
|
if ($Apache::inputtags::status[-1] eq 'CANNOT_ANSWER') { |
if ($Apache::inputtags::status[-1] eq 'CANNOT_ANSWER') { |
$name = "none"; |
$name = "none"; |
} |
} |
$result.= '<input type="text" '.$readonly.' name="'.$name.'" value="'. |
$result.= '<input onkeydown="javascript:setSubmittedPart(\''.$partid.'\');" type="text" '.$readonly.' name="'.$name.'" value="'. |
$oldresponse.'" size="'.$size.'" maxlength="'.$maxlength.'" />'; |
$oldresponse.'" size="'.$size.'"'.$maxlength.' />'; |
} |
} |
if ($Apache::lonhomework::type eq 'exam' |
if ($Apache::lonhomework::type eq 'exam' |
&& &needs_exam_box($tagstack)) { |
&& &needs_exam_box($tagstack)) { |
Line 321 sub start_textline {
|
Line 331 sub start_textline {
|
} |
} |
} else { |
} else { |
#right or wrong don't show what was last typed in. |
#right or wrong don't show what was last typed in. |
$result='<b>'.$Apache::inputtags::answertxt{$id}.'</b>'; |
my $count = scalar(@Apache::inputtags::inputlist)-1; |
|
$result='<b>'.$Apache::inputtags::answertxt{$id}[$count].'</b>'; |
#$result=''; |
#$result=''; |
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
Line 356 sub end_textline {
|
Line 367 sub end_textline {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web') { $Apache::lonxml::evaluate++; } |
if ($target eq 'web') { $Apache::lonxml::evaluate++; } |
elsif ($target eq 'edit') { return ('','no'); } |
elsif ($target eq 'edit') { return ('','no'); } |
|
&end_input(); |
return ""; |
return ""; |
} |
} |
|
|
sub start_hiddenline { |
sub start_hiddenline { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result = ""; |
my $result = ""; |
|
my $input_id = &start_input($parstack,$safeeval); |
if ($target eq 'web') { |
if ($target eq 'web') { |
$Apache::lonxml::evaluate--; |
$Apache::lonxml::evaluate--; |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
my $partid=$Apache::inputtags::part; |
my $partid=$Apache::inputtags::part; |
my $id=$Apache::inputtags::response[-1]; |
my $id=$Apache::inputtags::response[-1]; |
my $oldresponse = &HTML::Entities::encode($Apache::lonhomework::history{"resource.$partid.$id.submission"},'<>&"'); |
my $oldresponse = $Apache::lonhomework::history{"resource.$partid.$id.submission"}; |
|
if (ref($oldresponse) eq 'ARRAY') { |
|
$oldresponse = $oldresponse->[$#Apache::inputtags::inputlist]; |
|
} |
|
$oldresponse = &HTML::Entities::encode($oldresponse,'<>&"'); |
|
|
if ($Apache::lonhomework::type ne 'exam') { |
if ($Apache::lonhomework::type ne 'exam') { |
$result= '<input type="hidden" name="HWVAL_'.$id.'" value="'. |
$result= '<input type="hidden" name="HWVAL_'.$id.'" value="'. |
$oldresponse.'" />'; |
$oldresponse.'" />'; |
Line 390 sub end_hiddenline {
|
Line 408 sub end_hiddenline {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web') { $Apache::lonxml::evaluate++; } |
if ($target eq 'web') { $Apache::lonxml::evaluate++; } |
elsif ($target eq 'edit') { return ('','no'); } |
elsif ($target eq 'edit') { return ('','no'); } |
|
&end_input(); |
return ""; |
return ""; |
} |
} |
|
|
Line 459 sub show_past_portfile_submission {
|
Line 478 sub show_past_portfile_submission {
|
} |
} |
my (@file_list,@bad_file_list); |
my (@file_list,@bad_file_list); |
foreach my $file (split(/\s*,\s*/,&unescape($Apache::lonhomework::history{"resource.$part.$id.portfiles"}))) { |
foreach my $file (split(/\s*,\s*/,&unescape($Apache::lonhomework::history{"resource.$part.$id.portfiles"}))) { |
my (undef,undef,$domain,$user)=&Apache::lonxml::whichuser(); |
my (undef,undef,$domain,$user)=&Apache::lonnet::whichuser(); |
my $url="/uploaded/$domain/$user/portfolio$file"; |
my $url="/uploaded/$domain/$user/portfolio$file"; |
my $icon=&Apache::loncommon::icon($url); |
my $icon=&Apache::loncommon::icon($url); |
push(@file_list,'<a href="'.$url.'"><img src="'.$icon. |
push(@file_list,'<a href="'.$url.'"><img src="'.$icon. |
Line 484 sub show_past_portfile_submission {
|
Line 503 sub show_past_portfile_submission {
|
|
|
} |
} |
|
|
sub checkstatus { |
|
my ($value,$awardref,$msgref,$nameref)=@_; |
|
for (my $i=0;$i<=$#$awardref;$i++) { |
|
if ($$awardref[$i] eq $value) { |
|
if (ref($nameref)) { |
|
return ($$awardref[$i],$$msgref[$i],$$nameref[$i]); |
|
} else { |
|
return ($$awardref[$i],$$msgref[$i]); |
|
} |
|
} |
|
} |
|
return(undef,undef); |
|
} |
|
|
|
sub valid_award { |
sub valid_award { |
my ($award) =@_; |
my ($award) =@_; |
foreach my $possibleaward ('EXTRA_ANSWER','MISSING_ANSWER', 'ERROR', |
foreach my $possibleaward ('EXTRA_ANSWER','MISSING_ANSWER', 'ERROR', |
Line 515 sub valid_award {
|
Line 520 sub valid_award {
|
return 0; |
return 0; |
} |
} |
|
|
|
{ |
|
my @awards = ('EXTRA_ANSWER', 'MISSING_ANSWER', 'ERROR', 'NO_RESPONSE', |
|
'TOO_LONG', |
|
'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT', |
|
'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', |
|
'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', |
|
'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', |
|
'INVALID_FILETYPE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE', |
|
'APPROX_ANS', 'EXACT_ANS'); |
|
my $i=0; |
|
my %fwd_awards = map { ($_,$i++) } @awards; |
|
my $max=scalar(@awards); |
|
@awards=reverse(@awards); |
|
$i=0; |
|
my %rev_awards = map { ($_,$i++) } @awards; |
|
|
sub finalizeawards { |
sub finalizeawards { |
my ($awardref,$msgref,$nameref,$reverse)=@_; |
my ($awardref,$msgref,$nameref,$reverse)=@_; |
my ($result,$award,$msg,$name); |
my $result; |
if ($#$awardref == -1) { $result = "NO_RESPONSE"; } |
if ($#$awardref == -1) { $result = "NO_RESPONSE"; } |
if ($result eq '' ) { |
if ($result eq '' ) { |
my $blankcount; |
my $blankcount; |
foreach $award (@$awardref) { |
foreach my $award (@$awardref) { |
if ($award eq '') { |
if ($award eq '') { |
$result='MISSING_ANSWER'; |
$result='MISSING_ANSWER'; |
$blankcount++; |
$blankcount++; |
Line 529 sub finalizeawards {
|
Line 550 sub finalizeawards {
|
} |
} |
if ($blankcount == ($#$awardref + 1)) { $result = 'NO_RESPONSE'; } |
if ($blankcount == ($#$awardref + 1)) { $result = 'NO_RESPONSE'; } |
} |
} |
if (defined($result)) { return ($result,$msg); } |
if (defined($result)) { return ($result); } |
|
|
# these awards are ordered from most important error through best correct |
# these awards are ordered from most important error through best correct |
|
my $awards = (!$reverse) ? \%fwd_awards : \%rev_awards ; |
my @awards = ('EXTRA_ANSWER', 'MISSING_ANSWER', 'ERROR', 'NO_RESPONSE', |
|
'TOO_LONG', |
my $best = $max; |
'UNIT_INVALID_INSTRUCTOR', 'UNIT_INVALID_STUDENT', |
my $j=0; |
'UNIT_IRRECONCIBLE', 'UNIT_FAIL', 'NO_UNIT', |
my $which; |
'UNIT_NOTNEEDED', 'WANTED_NUMERIC', 'BAD_FORMULA', |
foreach my $award (@$awardref) { |
'COMMA_FAIL', 'SIG_FAIL', 'INCORRECT', 'MISORDERED_RANK', |
if ($awards->{$award} < $best) { |
'INVALID_FILETYPE', 'DRAFT', 'SUBMITTED', 'ASSIGNED_SCORE', |
$best = $awards->{$award}; |
'APPROX_ANS', 'EXACT_ANS'); |
$which = $j; |
if ($reverse) { @awards=reverse(@awards); } |
} |
foreach my $possibleaward (@awards) { |
$j++; |
($result,$msg,$name)=&checkstatus($possibleaward,$awardref,$msgref, |
} |
$nameref); |
if (defined($which)) { |
if (defined($result)) { return ($result,$msg,$name); } |
if (ref($nameref)) { |
|
return ($$awardref[$which],$$msgref[$which],$$nameref[$which]); |
|
} else { |
|
return ($$awardref[$which],$$msgref[$which]); |
|
} |
} |
} |
return ('ERROR',undef); |
return ('ERROR',undef); |
} |
} |
|
} |
|
|
sub decideoutput { |
sub decideoutput { |
my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_; |
my ($award,$awarded,$awardmsg,$solved,$previous,$target)=@_; |
Line 597 sub decideoutput {
|
Line 623 sub decideoutput {
|
$message.= $computer; |
$message.= $computer; |
} |
} |
$added_computer_text=1; |
$added_computer_text=1; |
unless ($env{'course.'. |
if ((!$env{'course.'. |
$env{'request.course.id'}. |
$env{'request.course.id'}. |
'.disable_receipt_display'} eq 'yes') { |
'.disable_receipt_display'} eq 'yes')&& |
|
$env{'request.course.id'}) { |
$message.=(($target eq 'web')?'<br />':' '). |
$message.=(($target eq 'web')?'<br />':' '). |
&mt('Your receipt is').' '.&Apache::lonnet::receipt($Apache::inputtags::part). |
&mt('Your receipt is').' '.&Apache::lonnet::receipt($Apache::inputtags::part). |
(($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):''); |
(($target eq 'web')?&Apache::loncommon::help_open_topic('Receipt'):''); |
Line 677 sub decideoutput {
|
Line 704 sub decideoutput {
|
$button=1; |
$button=1; |
} elsif ($award eq 'SIG_FAIL') { |
} elsif ($award eq 'SIG_FAIL') { |
my ($used,$min,$max)=split(':',$awardmsg); |
my ($used,$min,$max)=split(':',$awardmsg); |
my $word; |
my $word = ($used < $min) ? 'more' : 'fewer'; |
if ($used < $min) { $word=&mt('more'); } |
$message = &mt("Submission not graded. Use $word digits.",$used); |
if ($used > $max) { $word=&mt('fewer'); } |
|
$message = &mt("Submission not graded. Use [_2] digits.",$used,$word); |
|
$bgcolor=$possiblecolors{'not_charged_try'}; |
$bgcolor=$possiblecolors{'not_charged_try'}; |
$button=1; |
$button=1; |
} elsif ($award eq 'UNIT_INVALID_INSTRUCTOR') { |
} elsif ($award eq 'UNIT_INVALID_INSTRUCTOR') { |
Line 743 sub decideoutput {
|
Line 768 sub decideoutput {
|
$message = &mt("Unknown message").": $award"; |
$message = &mt("Unknown message").": $award"; |
$button=1; |
$button=1; |
} |
} |
my (undef,undef,$domain,$user)=&Apache::lonxml::whichuser(); |
my (undef,undef,$domain,$user)=&Apache::lonnet::whichuser(); |
foreach my $resid(@Apache::inputtags::response){ |
foreach my $resid(@Apache::inputtags::response){ |
if ($Apache::lonhomework::history{"resource.$part.$resid.handback"}) { |
if ($Apache::lonhomework::history{"resource.$part.$resid.handback"}) { |
$message.='<br />'; |
$message.='<br />'; |
Line 1041 sub gradestatus {
|
Line 1066 sub gradestatus {
|
if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') {$showbutton = 0;} |
if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') {$showbutton = 0;} |
if ( $showbutton ) { |
if ( $showbutton ) { |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
$button = '<input type="submit" name="submit_'.$id.'" value="'.&mt('Submit Answer').'" />'; |
$button = '<input onsubmit="javascript:setSubmittedPart(\''.$id.'\')" type="submit" name="submit_'.$id.'" value="'.&mt('Submit Answer').'" />'; |
} |
} |
} |
} |
if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) { |
if ($Apache::lonhomework::history{"resource.$id.afterduedate"}) { |