Diff for /loncom/homework/grades.pm between versions 1.376 and 1.380

version 1.376, 2006/09/22 21:11:55 version 1.380, 2006/10/17 20:19:31
Line 112  sub nameUserString { Line 112  sub nameUserString {
 #--- Indicate if a response type is coded handgraded or not. ---  #--- Indicate if a response type is coded handgraded or not. ---
 sub response_type {  sub response_type {
     my ($symb) = shift;      my ($symb) = shift;
     my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb);  
     my $allkeys = &Apache::lonnet::metadata($url,'keys');      my $navmap = Apache::lonnavmaps::navmap->new();
     my %vPart;      my $res = $navmap->getBySymb($symb);
     foreach my $partid (&Apache::loncommon::get_env_multiple('form.vPart')) {      my $partlist = $res->parts();
  $vPart{$partid}=1;      my (%response_types,%handgrade);
     }      foreach my $part (@{ $partlist }) {
     my %seen = ();   my @types = $res->responseType($part);
     my (@partlist,%handgrade,%responseType);   my @ids = $res->responseIds($part);
     foreach (split(/,/,&Apache::lonnet::metadata($url,'packages'))) {   for (my $i=0; $i < scalar(@ids); $i++) {
  if (/^\w+response_.*/ || /^Task_/) {      $response_types{$part}{$ids[$i]} = $types[$i];
     my ($responsetype,$part) = split(/_/,$_,2);      $handgrade{$part.'_'.$ids[$i]} = 
     my ($partid,$respid) = split(/_/,$part,2);   &Apache::lonnet::EXT('resource.'.$part.'_'.$ids[$i].
     if ($responsetype eq 'Task') { $respid='0'; }       '.handgrade',$symb);
     if (&Apache::loncommon::check_if_partid_hidden($partid,$symb)) {  
  next;  
     }  
     if (%vPart && !exists($vPart{$partid})) {  
  next;  
     }  
     $responsetype =~ s/response$//; # make it compatible w/ navmaps - should move to that!!  
     my ($value) = &Apache::lonnet::EXT('resource.'.$part.'.handgrade',$symb);  
     $handgrade{$part} = ($value eq 'yes' ? 'yes' : 'no');   
     if (!exists($responseType{$partid})) { $responseType{$partid}={}; }  
     $responseType{$partid}->{$respid}=$responsetype;  
     next if ($seen{$partid} > 0);  
     $seen{$partid}++;  
     push @partlist,$partid;  
  }   }
     }      }
     return (\@partlist,\%handgrade,\%responseType);      return ($partlist,\%handgrade,\%response_types);
 }  }
   
 sub flatten_responseType {  sub flatten_responseType {
Line 602  sub verifyreceipt { Line 588  sub verifyreceipt {
     my $receipt  = &Apache::lonnet::recprefix($courseid).'-'.      my $receipt  = &Apache::lonnet::recprefix($courseid).'-'.
  $env{'form.receipt'};   $env{'form.receipt'};
     $receipt     =~ s/[^\-\d]//g;      $receipt     =~ s/[^\-\d]//g;
     my $symb     = &Apache::lonnet::symbread();      my ($symb)   = &get_symb($request);
   
     my $title.='<h3><font color="#339933">Verifying Submission Receipt '.      my $title.='<h3><font color="#339933">Verifying Submission Receipt '.
  $receipt.'</h3></font>'."\n".   $receipt.'</h3></font>'."\n".
Line 1918  KEYWORDS Line 1904  KEYWORDS
     my $order=&get_order($partid,$respid,$symb,$uname,$udom);      my $order=&get_order($partid,$respid,$symb,$uname,$udom);
     if ($env{'form.lastSub'} eq 'lastonly' ||       if ($env{'form.lastSub'} eq 'lastonly' || 
  ($env{'form.lastSub'} eq 'hdgrade' &&    ($env{'form.lastSub'} eq 'hdgrade' && 
  $$handgrade{$part} eq 'yes')) {   $$handgrade{$$part[0].'_'.$$part[1]} eq 'yes')) {
  my $display_part=&get_display_part($partid,$symb);   my $display_part=&get_display_part($partid,$symb);
  $lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part:</b> '.   $lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part:</b> '.
     $display_part.' <font color="#999999">( ID '.$respid.      $display_part.' <font color="#999999">( ID '.$respid.
Line 2434  sub saveHandGrade { Line 2420  sub saveHandGrade {
         }          }
  &Apache::lonnet::cstore(\%newrecord,$symb,   &Apache::lonnet::cstore(\%newrecord,$symb,
  $env{'request.course.id'},$domain,$stuname);   $env{'request.course.id'},$domain,$stuname);
  my @ungraded_parts;   &check_and_remove_from_queue(\@parts,\%record,\%newrecord,$symb,
  foreach my $part (@parts) {       $cdom,$cnum,$domain,$stuname);
     if ( !defined($record{'resource.'.$part.'.awarded'})  
  && !defined($newrecord{'resource.'.$part.'.awarded'}) ) {  
  push(@ungraded_parts, $part);  
     }  
  }  
  if ( !@ungraded_parts ) {  
     &Apache::bridgetask::remove_from_queue('gradingqueue',$symb,$cdom,  
    $cnum,$domain,$stuname);  
  }  
     }      }
     if ($aggregateflag) {      if ($aggregateflag) {
         &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,          &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,
Line 2453  sub saveHandGrade { Line 2430  sub saveHandGrade {
     return ('',$pts,$wgt);      return ('',$pts,$wgt);
 }  }
   
   sub check_and_remove_from_queue {
       my ($parts,$record,$newrecord,$symb,$cdom,$cnum,$domain,$stuname) = @_;
       my @ungraded_parts;
       foreach my $part (@{$parts}) {
    if (    $record->{   'resource.'.$part.'.awarded'} eq ''
        && $record->{   'resource.'.$part.'.solved' } ne 'excused'
        && $newrecord->{'resource.'.$part.'.awarded'} eq ''
        && $newrecord->{'resource.'.$part.'.solved' } ne 'excused'
    ) {
       push(@ungraded_parts, $part);
    }
       }
       if ( !@ungraded_parts ) {
    &Apache::bridgetask::remove_from_queue('gradingqueue',$symb,$cdom,
          $cnum,$domain,$stuname);
       }
   }
   
 sub handback_files {  sub handback_files {
     my ($request,$symb,$stuname,$domain,$newflg,$new_part,$newrecord) = @_;      my ($request,$symb,$stuname,$domain,$newflg,$new_part,$newrecord) = @_;
     my $portfolio_root = &propath($domain,$stuname).'/userfiles/portfolio';      my $portfolio_root = &propath($domain,$stuname).'/userfiles/portfolio';
Line 4194  sub updateGradeByPage { Line 4189  sub updateGradeByPage {
  $displayPts[1].='&nbsp;<b>Part:</b> '.$display_part.' = '.   $displayPts[1].='&nbsp;<b>Part:</b> '.$display_part.' = '.
      (($score eq 'excused') ? 'excused' : $newpts).       (($score eq 'excused') ? 'excused' : $newpts).
     '&nbsp;<br />';      '&nbsp;<br />';
   
  $question++;   $question++;
  next if ($dropMenu eq 'reset status' || ($newpts == $oldpts && $score ne 'excused'));   next if ($dropMenu eq 'reset status' || ($newpts eq $oldpts && $score ne 'excused'));
   
  $newrecord{'resource.'.$partid.'.awarded'}  = $partial if $partial ne '';   $newrecord{'resource.'.$partid.'.awarded'}  = $partial if $partial ne '';
  $newrecord{'resource.'.$partid.'.solved'}   = $score if $score ne '';   $newrecord{'resource.'.$partid.'.solved'}   = $score if $score ne '';
Line 4208  sub updateGradeByPage { Line 4202  sub updateGradeByPage {
     if (scalar(keys(%newrecord)) > 0) {      if (scalar(keys(%newrecord)) > 0) {
  &Apache::lonnet::cstore(\%newrecord,$symbx,$env{'request.course.id'},   &Apache::lonnet::cstore(\%newrecord,$symbx,$env{'request.course.id'},
  $udom,$uname);   $udom,$uname);
    my %record = &Apache::lonnet::restore($symbx,$env{'request.course.id'},
         $udom,$uname);
    &check_and_remove_from_queue($parts,\%record,undef,$symbx,
        $cdom,$cnum,$udom,$uname);
     }      }
       
             if ($aggregateflag) {              if ($aggregateflag) {
                 &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,                  &Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,
                       $env{'course.'.$env{'request.course.id'}.'.domain'},                        $env{'course.'.$env{'request.course.id'}.'.domain'},
Line 4448  SCANTRONFORM Line 4447  SCANTRONFORM
     <tr>      <tr>
       <form action='/adm/grades' name='scantron_download'>        <form action='/adm/grades' name='scantron_download'>
         <td bgcolor="#777777">          <td bgcolor="#777777">
     $default_form_data
           <input type="hidden" name="command" value="scantron_download" />            <input type="hidden" name="command" value="scantron_download" />
           <table width="100%" border="0">            <table width="100%" border="0">
             <tr bgcolor="#e6ffff">              <tr bgcolor="#e6ffff">

Removed from v.1.376  
changed lines
  Added in v.1.380


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