version 1.217, 2007/03/01 02:30:03
|
version 1.219, 2007/03/15 02:52:16
|
Line 957 sub setgradedata {
|
Line 957 sub setgradedata {
|
} |
} |
} |
} |
|
|
|
sub find_which_previous { |
|
my ($version) = @_; |
|
my $part = $Apache::inputtags::part; |
|
my (@previous_version); |
|
foreach my $resp (@Apache::inputtags::response) { |
|
my $key = "$version:resource.$part.$resp.submission"; |
|
my $submission = $Apache::lonhomework::history{$key}; |
|
my %previous = &Apache::response::check_for_previous($submission, |
|
$part,$resp, |
|
$version); |
|
push(@previous_version,$previous{'version'}); |
|
} |
|
return &previous_match(\@previous_version, |
|
scalar(@Apache::inputtags::response)); |
|
} |
|
|
|
sub previous_match { |
|
my ($previous_array,$count) = @_; |
|
my $match = 0; |
|
my @matches; |
|
foreach my $versionar (@$previous_array) { |
|
foreach my $version (@$versionar) { |
|
$matches[$version]++; |
|
} |
|
} |
|
my $which=0; |
|
foreach my $elem (@matches) { |
|
if ($elem eq $count) { |
|
$match=1; |
|
last; |
|
} |
|
$which++; |
|
} |
|
return ($match,$which); |
|
} |
|
|
sub grade { |
sub grade { |
my ($target) = @_; |
my ($target) = @_; |
my $id = $Apache::inputtags::part; |
my $id = $Apache::inputtags::part; |
Line 975 sub grade {
|
Line 1011 sub grade {
|
my ($finalaward,$msg) = &finalizeawards(\@awards,\@msgs); |
my ($finalaward,$msg) = &finalizeawards(\@awards,\@msgs); |
my $previously_used; |
my $previously_used; |
if ( $#Apache::inputtags::previous eq $#awards ) { |
if ( $#Apache::inputtags::previous eq $#awards ) { |
my $match=0; |
my ($match) = |
my @matches; |
&previous_match(\@Apache::inputtags::previous_version, |
foreach my $versionar (@Apache::inputtags::previous_version) { |
scalar(@Apache::inputtags::response)); |
foreach my $version (@$versionar) { |
|
$matches[$version]++; |
|
} |
|
} |
|
foreach my $elem (@matches) {if ($elem eq ($#awards+1)) {$match=1;}} |
|
if ($match) { |
if ($match) { |
$previously_used = 'PREVIOUSLY_LAST'; |
$previously_used = 'PREVIOUSLY_LAST'; |
foreach my $value (@Apache::inputtags::previous) { |
foreach my $value (@Apache::inputtags::previous) { |
Line 1095 sub gradestatus {
|
Line 1127 sub gradestatus {
|
if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') { |
if ( $status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER') { |
$showbutton = 0; |
$showbutton = 0; |
} |
} |
|
if ( $status eq 'SHOW_ANSWER') { |
|
undef($previousmsg); |
|
} |
if ( $showbutton ) { |
if ( $showbutton ) { |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
$button = '<input onsubmit="javascript:setSubmittedPart(\''.$id.'\')" type="submit" name="submit_'.$id.'" value="'.&mt('Submit Answer').'" />'; |
$button = '<input onsubmit="javascript:setSubmittedPart(\''.$id.'\')" type="submit" name="submit_'.$id.'" value="'.&mt('Submit Answer').'" />'; |
Line 1118 sub previous_tries {
|
Line 1153 sub previous_tries {
|
my ($id,$target) = @_; |
my ($id,$target) = @_; |
my $output; |
my $output; |
my $status = $Apache::inputtags::status['-1']; |
my $status = $Apache::inputtags::status['-1']; |
|
|
|
my $count; |
|
my %count_lookup; |
|
|
foreach my $i (1..$Apache::lonhomework::history{'version'}) { |
foreach my $i (1..$Apache::lonhomework::history{'version'}) { |
my $prefix = $i.":resource.$id"; |
my $prefix = $i.":resource.$id"; |
|
|
next if (!exists($Apache::lonhomework::history{"$prefix.award"})); |
next if (!exists($Apache::lonhomework::history{"$prefix.award"})); |
|
$count++; |
|
$count_lookup{$i} = $count; |
|
|
my ($previousmsg,$latemessage,$message,$trystr); |
my ($previousmsg,$latemessage,$message,$trystr); |
|
|
($previousmsg,$latemessage,$message,$trystr) = |
($previousmsg,$latemessage,$message,$trystr) = |
Line 1131 sub previous_tries {
|
Line 1172 sub previous_tries {
|
undef($trystr); |
undef($trystr); |
} |
} |
|
|
if ($previousmsg eq '') { $previousmsg='<td></td>'; } |
if ($previousmsg ne '') { |
if ($trystr eq '') { $trystr = '<td></td>'; } |
my ($match,$which) = &find_which_previous($i); |
|
$message=$previousmsg; |
|
my $previous = $count_lookup{$which}; |
|
$message =~ s{(</td>)}{ as submission $previous $1}; |
|
|
|
} elsif ($trystr ne '') { |
|
($trystr) = ($trystr =~ m{(\d+)/\d+}); |
|
$message =~ s{(<td.*?>)}{$1 $trystr }; |
|
} |
|
|
|
|
$output.='<tr>'; |
$output.='<tr>'; |
$output.=$message.$previousmsg.$trystr; |
$output.='<td align ="center">'.$count.'</td>'; |
|
$output.=$message; |
|
|
foreach my $resid (@Apache::inputtags::response) { |
foreach my $resid (@Apache::inputtags::response) { |
my $prefix = $prefix.".$resid"; |
my $prefix = $prefix.".$resid"; |
Line 1151 sub previous_tries {
|
Line 1202 sub previous_tries {
|
$output.='<td></td>'; |
$output.='<td></td>'; |
} |
} |
} |
} |
$output.='</tr>'; |
$output.='</tr>'."\n"; |
} |
} |
return if ($output eq ''); |
return if ($output eq ''); |
|
my $headers = |
$output ='<table class="LC_prior_tries">'.$output.'</table>'; |
'<tr>'.'<th>'.&mt('Submission #').'</th><th>'.&mt('Try'). |
|
'</th><th colspan="'.scalar(@Apache::inputtags::response).'">'. |
|
&mt('Submitted Answer').'</th>'; |
|
$output ='<table class="LC_prior_tries">'.$headers.$output.'</table>'; |
|
$output .='<pre>'.join("\n",@Apache::inputtags::previous_version).'</pre>'; |
#return $output; |
#return $output; |
$output=~s/\\/\\\\/g; |
$output=~s/\\/\\\\/g; |
$output=~s/\'/\\\'/g; |
$output=~s/\'/\\\'/g; |