--- loncom/homework/grades.pm 2001/04/17 21:07:38 1.6 +++ loncom/homework/grades.pm 2001/07/26 15:50:25 1.9 @@ -1,5 +1,6 @@ # The LON-CAPA Grading handler # 2/9,2/13 Guy Albertelli +# 6/8 Gerd Kortemeyer package Apache::grades; use strict; @@ -26,12 +27,22 @@ sub moreinfo { } -#FIXME - needs to be much smarter +#FIXME - needs to handle multiple matches sub finduser { my ($name) = @_; + my $domain = ''; if ( $Apache::grades::viewgrades eq 'F' ) { - return ($name,$ENV{'user.domain'}); + #get classlist + my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'}); + my $chome=$ENV{"course.$ENV{'request.course.id'}.home"}; + #print "Found $cdom:$cnum:$chome
"; + my (%classlist) = &getclasslist($cdom,$cnum,$chome,'0'); + foreach my $student ( sort(@{ $classlist{'allids'} }) ) { + my ($posname,$posdomain) = split(/:/,$student); + if ($posname =~ $name) { $name=$posname; $domain=$posdomain; last; } + } + return ($name,$domain); } else { return ($ENV{'user.name'},$ENV{'user.domain'}); } @@ -73,8 +84,7 @@ sub viewstudentgrade { my ($stuname,$domain) = split(/:/,$student); - my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$stuname, - &Apache::lonnet::homeserver($stuname,$domain)); + my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$stuname); $result.="$stuname$domain\n"; foreach my $part (@parts) { @@ -115,8 +125,8 @@ sub setstudentgrade { my ($stuname,$domain) = split(/:/,$student); - my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$stuname, - &Apache::lonnet::homeserver($stuname,$domain)); + my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$stuname); + my %newrecord; foreach my $part (@parts) { @@ -152,8 +162,7 @@ sub setstudentgrade { } if ( scalar(keys(%newrecord)) > 0 ) { $newrecord{"resource.regrader"}="$ENV{'user.name'}:$ENV{'user.domain'}"; - &Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$stuname, - &Apache::lonnet::homeserver($stuname,$domain)); + &Apache::lonnet::cstore(\%newrecord,$symb,$courseid,$domain,$stuname); $result.="Stored away ".scalar(keys(%newrecord))." elements.
\n"; } return $result; @@ -168,8 +177,7 @@ sub submission { if ($uname eq '') { &moreinfo($request,"Unable to find student"); return ''; } my $symb=&Apache::lonnet::symbread($url); if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; } - my $home=&Apache::lonnet::homeserver($uname,$udom); - my $answer=&Apache::loncommon::get_previous_attempt($symb,$uname,$udom,$home, + my $answer=&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, $ENV{'request.course.id'}); my $result="

Submission Record

$uname:$udom for $url".$answer; return $result;