Diff for /loncom/homework/grades.pm between versions 1.22 and 1.25

version 1.22, 2002/05/03 22:34:25 version 1.25, 2002/05/16 00:01:09
Line 59  sub moreinfo { Line 59  sub moreinfo {
   return '';    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('<h1>Verifying Submission Receipt '.$receipt.'</h1>');
           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.'<br>');
                  $matches++;
      }
           }
           $request->print('<p>'.$matches.' match(es)</p>');
       }
       return '';
   }
   
 sub listStudents {  sub listStudents {
   my ($request) = shift;    my ($request) = shift;
   my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});    my $cdom=$ENV{"course.$ENV{'request.course.id'}.domain"};
   my $chome=$ENV{"course.$ENV{'request.course.id'}.home"};    my $cnum=$ENV{"course.$ENV{'request.course.id'}.num"};
   $request->print ('<h1>Show Student Submissions on Assessment</h1>'.    my $hostver=unpack("%32C*",$Apache::lonnet::perlvar{'lonHostID'});
  '<table border="1"><tr><th>Username</th><th>Domain</th><th>Name</th><th>&nbsp;</th></tr>'    $request->print(<<ENDHEADER);
  );  <h1>Verify a Submission Receipt Issued by this Server</h1>
   my (%classlist) = &getclasslist($cdom,$cnum,$chome,'0');  <form action="/adm/grades" method="post">
   <tt>$hostver-<input type="text" name="receipt" size="4"></tt>
   <input type="submit" name="submit" value="Verify">
   <input type="hidden" name="command" value="verify">
   ENDHEADER
     if ($ENV{'form.url'}) {
       $request->print(
       '<input type="hidden" name="url" value="'.$ENV{'form.url'}.'" />');
     }
     if ($ENV{'form.symb'}) {
       $request->print(
       '<input type="hidden" name="symb" value="'.$ENV{'form.symb'}.'" />');
     }
     $request->print(<<ENDTABLEST);
   </form>
   <h1>Show Student Submissions on Assessment</h1>
   <table border="1">
   <tr><th>Username</th><th>Domain</th><th>Name</th><th>&nbsp;</th></tr>
   ENDTABLEST
     my (%classlist) = &getclasslist($cdom,$cnum,'0');
   foreach my $student ( sort(@{ $classlist{'allids'} }) ) {    foreach my $student ( sort(@{ $classlist{'allids'} }) ) {
       my ($sname,$sdom) = split(/:/,$student);        my ($sname,$sdom) = split(/:/,$student);
   
       my $reply=&Apache::lonnet::reply('get:'.$sdom.':'.$sname.        my %name=&Apache::lonnet::get('environment', ['lastname','generation',
      ':environment:lastname&generation&firstname&middlename',      'firstname','middlename'],
       &Apache::lonnet::homeserver($sname,$sdom));      $sdom,$sname);
       #print "reply=$reply<br>";        my $fullname;
       my (@nameparts) = split /&/,$reply;        my ($tmp) = keys(%name);
 #      my $sfullname = $Apache::lonnet::unescape($nameparts[0]);        if ($tmp !~ /^(con_lost|error|no_such_host)/i) {
    $fullname=$name{'lastname'}.$name{'generation'};
    if ($fullname =~ /[^\s]+/) { $fullname.=','; }
    $fullname.=$name{'firstname'}.' '.$name{'middlename'};
         }
       if ( $Apache::grades::viewgrades eq 'F' ) {        if ( $Apache::grades::viewgrades eq 'F' ) {
   $request->print("\n".'<tr>'."<td>$sname</td><td>$sdom</td><td>@nameparts</td><td>".    $request->print("\n".'<tr>'."<td>$sname</td><td>$sdom</td><td>$fullname</td><td>".
   '<form action="/adm/grades" method="post">');    '<form action="/adm/grades" method="post">');
   if ($ENV{'form.url'}) {    if ($ENV{'form.url'}) {
     $request->print(      $request->print(
Line 112  sub finduser { Line 162  sub finduser {
   if ( $Apache::grades::viewgrades eq 'F' ) {    if ( $Apache::grades::viewgrades eq 'F' ) {
     #get classlist      #get classlist
     my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});      my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});
     my $chome=$ENV{"course.$ENV{'request.course.id'}.home"};      #print "Found $cdom:$cnum<br />";
     #print "Found $cdom:$cnum:$chome<br />";      my (%classlist) = &getclasslist($cdom,$cnum,'0');
     my (%classlist) = &getclasslist($cdom,$cnum,$chome,'0');  
     foreach my $student ( sort(@{ $classlist{'allids'} }) ) {      foreach my $student ( sort(@{ $classlist{'allids'} }) ) {
       my ($posname,$posdomain) = split(/:/,$student);        my ($posname,$posdomain) = split(/:/,$student);
       if ($posname =~ $name) { $name=$posname; $domain=$posdomain; last; }        if ($posname =~ $name) { $name=$posname; $domain=$posdomain; last; }
Line 126  sub finduser { Line 175  sub finduser {
 }  }
   
 sub getclasslist {  sub getclasslist {
   my ($coursedomain,$coursenum,$coursehome,$hideexpired) = @_;    my ($coursedomain,$coursenum,$hideexpired) = @_;
   my $classlist=&Apache::lonnet::reply("dump:$coursedomain:$coursenum:classlist",$coursehome);    my %classlist=&Apache::lonnet::dump('classlist',$coursedomain,$coursenum);
   my %classlist=();  
   my $now = time;    my $now = time;
   foreach my $record (split /&/, $classlist) {    foreach my $student (keys(%classlist)) {
     my ($name,$value)=split(/=/,&Apache::lonnet::unescape($record));      my ($end,$start)=split(/:/,$classlist{$student});
     my ($end,$start)=split(/:/,$value);  
     # still a student?      # still a student?
     if (($hideexpired) && ($end) && ($end < $now)) {      if (($hideexpired) && ($end) && ($end < $now)) {
       #print "Skipping:$name:$end:$now<br />\n";        #print "Skipping:$name:$end:$now<br />\n";
       next;        next;
     }      }
     #print "record=$record<br>";      #print "record=$record<br>";
     push( @{ $classlist{'allids'} }, $name);       push( @{ $classlist{'allids'} }, $student);
   }    }
   return (%classlist);    return (%classlist);
 }  }
Line 288  sub viewgrades { Line 335  sub viewgrades {
   
   #get classlist    #get classlist
   my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});    my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});
   my $chome=$ENV{"course.$ENV{'request.course.id'}.home"};    #print "Found $cdom:$cnum<br />";
   #print "Found $cdom:$cnum:$chome<br />";    my (%classlist) = &getclasslist($cdom,$cnum,'0');
   my (%classlist) = &getclasslist($cdom,$cnum,$chome,'0');  
   my $headerclr = '"#ccffff"';    my $headerclr = '"#ccffff"';
   my $cellclr = '"#ffffcc"';    my $cellclr = '"#ffffcc"';
   
Line 332  sub editgrades { Line 378  sub editgrades {
   my $url=$ENV{'form.url'};    my $url=$ENV{'form.url'};
   #get classlist    #get classlist
   my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});    my ($cdom,$cnum) = split(/_/,$ENV{'request.course.id'});
   my $chome=$ENV{"course.$ENV{'request.course.id'}.home"};    #print "Found $cdom:$cnum<br />";
   #print "Found $cdom:$cnum:$chome<br />";    my (%classlist) = &getclasslist($cdom,$cnum,'0');
   my (%classlist) = &getclasslist($cdom,$cnum,$chome,'0');  
   
   #get list of parts for this problem    #get list of parts for this problem
   my (@parts) = &getpartlist($url);    my (@parts) = &getpartlist($url);
Line 428  sub handler { Line 473  sub handler {
       $request->print(&viewgrades($request));        $request->print(&viewgrades($request));
     } elsif ($command eq 'editgrades') {      } elsif ($command eq 'editgrades') {
       $request->print(&editgrades($request));        $request->print(&editgrades($request));
       } elsif ($command eq 'verify') {
         $request->print(&verifyreceipt($request));
     } else {      } else {
       $request->print("Unknown action:$command:");        $request->print("Unknown action: $command:");
     }      }
   }    }
   &send_footer($request);    &send_footer($request);

Removed from v.1.22  
changed lines
  Added in v.1.25


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>