--- loncom/homework/grades.pm 2006/02/25 20:25:02 1.315
+++ loncom/homework/grades.pm 2006/02/27 02:06:52 1.319
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.315 2006/02/25 20:25:02 bowersj2 Exp $
+# $Id: grades.pm,v 1.319 2006/02/27 02:06:52 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -471,8 +471,7 @@ sub jscriptNform {
# Given the score (as a number [0-1] and the weight) what is the final
# point value? This function will round to the nearest tenth, third,
# or quarter if one of those is within the tolerance of .00001.
-sub compute_points
-{
+sub compute_points {
my ($score, $weight) = @_;
my $tolerance = .00001;
@@ -483,8 +482,7 @@ sub compute_points
my ($factor) = @_;
my $num = ($points * $factor) + $tolerance;
my $floored_num = floor($num);
- if ($num - $floored_num < 2 * $tolerance * $factor)
- {
+ if ($num - $floored_num < 2 * $tolerance * $factor) {
return $floored_num / $factor;
}
return $points;
@@ -1415,7 +1413,7 @@ SUBJAVASCRIPT
#--- displays the grading box, used in essay type problem and grading by page/sequence
sub gradeBox {
- my ($request,$symb,$uname,$udom,$counter,$partid,$record) = @_;
+ my ($request,$symb,$uname,$udom,$counter,$partid,$record,$respid) = @_;
my $checkIcon = '';
my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname);
@@ -1423,8 +1421,9 @@ sub gradeBox {
'problem weight assigned by computer');
$wgt = ($wgt > 0 ? $wgt : '1');
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ?
- '' : $$record{'resource.'.$partid.'.awarded'}*$wgt);
+ '' : compute_points($$record{'resource.'.$partid.'.awarded'},$wgt));
my $result=''."\n";
+ $result.='
'.$partid.' - '.$respid.'
';
my $display_part=&get_display_part($partid,undef,$symb);
my %last_resets = &get_last_resets($symb,$env{'request.course.id'},
[$partid]);
@@ -1473,19 +1472,23 @@ sub gradeBox {
''."\n";
$result.=''."\n";
- my $files=&get_submitted_files($udom,$uname,$partid,$counter,$record);
+ $result.=&handbackBox($uname,$udom,$counter,$partid,$record,$respid);
+ return $result;
+}
+sub handbackBox {
+ my ($uname,$udom,$counter,$partid,$record,$respid) = @_;
+ my $files=&get_submitted_files($udom,$uname,$partid,$respid,$record);
+ my $result;
if (@$files) {
my $file_counter = 0;
foreach my $file (@$files) {
$result.=' Return commented document to student. '."\n";
- $result.='';
- $result.='';
+ $result.='';
+ $result.='
';
}
}
-
-
- return $result;
+ return $result;
}
sub show_problem {
@@ -1827,15 +1830,6 @@ KEYWORDS
$display_part.' ( ID '.$respid.
' ) ';
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record);
-# if ($record{"resource.$partid.$respid.portfiles"}) {
-# my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio';
-# foreach my $file (split(',',$record{"resource.$partid.$respid.portfiles"})) {
-# push(@files,$file_url.$file);
-# }
-# }
-# if ($record{"resource.$partid.$respid.uploadedurl"}) {
-# push(@files,$record{"resource.$partid.$respid.uploadedurl"});
-# }
if (@$files) {
$lastsubonly.='
Like all files provided by users, this file may contain virusses
';
my $file_counter = 0;
@@ -1920,15 +1914,18 @@ KEYWORDS
my %seen = ();
my @partlist;
my @gradePartRespid;
- for (sort keys(%$handgrade)) {
- my ($partid,$respid) = split(/_/);
- next if ($seen{$partid} > 0);
+ for my $part_resp(sort keys(%$handgrade)) {
+ my ($partid,$respid) = split(/_/, $part_resp);
+ #next if ($seen{$partid} > 0);
+ if ($seen{$partid} > 0) {
+ $request->print(&handbackBox($uname,$udom,$counter,$partid,\%record,$respid));
+ next;
+ }
$seen{$partid}++;
- next if ($$handgrade{$_} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/);
+ next if ($$handgrade{$part_resp} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/);
push @partlist,$partid;
push @gradePartRespid,$partid.'.'.$respid;
-
- $request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record));
+ $request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record,$respid));
}
$result=''."\n";
@@ -2896,7 +2893,7 @@ sub viewstudentgrade {
$aggregates{$part} = 1;
}
if ($type eq 'awarded') {
- my $pts = $score eq '' ? '' : $score*$$weight{$part};
+ my $pts = $score eq '' ? '' : compute_points($score,$$weight{$part});
$result.=''."\n";
$result.='