--- loncom/homework/grades.pm 2002/04/09 04:33:10 1.21
+++ loncom/homework/grades.pm 2002/06/20 21:21:16 1.28
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.21 2002/04/09 04:33:10 albertel Exp $
+# $Id: grades.pm,v 1.28 2002/06/20 21:21:16 ng Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -59,27 +59,79 @@ sub moreinfo {
return '';
}
+sub verifyreceipt {
+ my $request=shift;
+ my $courseid=$ENV{'request.course.id'};
+ my $cdom=$ENV{"course.$courseid.domain"};
+ my $cnum=$ENV{"course.$courseid.num"};
+ my $receipt=unpack("%32C*",$Apache::lonnet::perlvar{'lonHostID'}).'-'.
+ $ENV{'form.receipt'};
+ $receipt=~s/[^\-\d]//g;
+ my $symb=$ENV{'form.symb'};
+ unless ($symb) {
+ $symb=&Apache::lonnet::symbread($ENV{'form.url'});
+ }
+ if ((&Apache::lonnet::allowed('mgr',$courseid)) && ($symb)) {
+ $request->print('
Verifying Submission Receipt '.$receipt.'
');
+ my $matches=0;
+ my (%classlist) = &getclasslist($cdom,$cnum,'0');
+ foreach my $student ( sort(@{ $classlist{'allids'} }) ) {
+ my ($uname,$udom)=split(/\:/,$student);
+ if ($receipt eq
+ &Apache::lonnet::ireceipt($uname,$udom,$courseid,$symb)) {
+ $request->print('Matching '.$student.' ');
+ $matches++;
+ }
+ }
+ $request->print('
'.$matches.' match(es)
');
+ }
+ return '';
+}
sub listStudents {
my ($request) = shift;
- my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});
- my $chome=$ENV{"course.$ENV{'request.course.id'}.home"};
- $request->print ('
Show Student Submissions on Assessment
'.
- '
Username
Domain
Name
'
- );
- my (%classlist) = &getclasslist($cdom,$cnum,$chome,'0');
+ my $cdom=$ENV{"course.$ENV{'request.course.id'}.domain"};
+ my $cnum=$ENV{"course.$ENV{'request.course.id'}.num"};
+ my $hostver=unpack("%32C*",$Apache::lonnet::perlvar{'lonHostID'});
+ $request->print(<Verify a Submission Receipt Issued by this Server
+
');
}
@@ -112,9 +167,8 @@ sub finduser {
if ( $Apache::grades::viewgrades eq 'F' ) {
#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');
+ #print "Found $cdom:$cnum ";
+ my (%classlist) = &getclasslist($cdom,$cnum,'0');
foreach my $student ( sort(@{ $classlist{'allids'} }) ) {
my ($posname,$posdomain) = split(/:/,$student);
if ($posname =~ $name) { $name=$posname; $domain=$posdomain; last; }
@@ -126,20 +180,18 @@ sub finduser {
}
sub getclasslist {
- my ($coursedomain,$coursenum,$coursehome,$hideexpired) = @_;
- my $classlist=&Apache::lonnet::reply("dump:$coursedomain:$coursenum:classlist",$coursehome);
- my %classlist=();
+ my ($coursedomain,$coursenum,$hideexpired) = @_;
+ my %classlist=&Apache::lonnet::dump('classlist',$coursedomain,$coursenum);
my $now = time;
- foreach my $record (split /&/, $classlist) {
- my ($name,$value)=split(/=/,&Apache::lonnet::unescape($record));
- my ($end,$start)=split(/:/,$value);
+ foreach my $student (keys(%classlist)) {
+ my ($end,$start)=split(/:/,$classlist{$student});
# still a student?
if (($hideexpired) && ($end) && ($end < $now)) {
#print "Skipping:$name:$end:$now \n";
next;
}
#print "record=$record ";
- push( @{ $classlist{'allids'} }, $name);
+ push( @{ $classlist{'allids'} }, $student);
}
return (%classlist);
}
@@ -160,23 +212,28 @@ sub viewstudentgrade {
my ($url,$symb,$courseid,$student,@parts) = @_;
my $result ='';
my $cellclr = '"#ffffdd"';
- my ($stuname,$domain) = split(/:/,$student);
+ my ($username,$domain) = split(/:/,$student);
- my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$stuname);
+ my (@requests) = ('lastname','firstname','middlename','generation');
+ my (%name) = &Apache::lonnet::get('environment',\@requests,$domain,$username);
+ my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$username);
+ my $fullname=$name{'lastname'}.$name{'generation'};
+ if ($fullname =~ /[^\s]+/) { $fullname.=', '; }
+ $fullname.=$name{'firstname'}.' '.$name{'middlename'};
- $result.="
$stuname
$domain
\n";
+ $result.="
$username
$fullname
$domain
\n";
foreach my $part (@parts) {
my ($temp,$part,$type)=split(/_/,$part);
#print "resource.$part.$type = ".$record{"resource.$part.$type"}." \n";
if ($type eq 'awarded') {
my $score=$record{"resource.$part.$type"};
- $result.="