Diff for /loncom/homework/grades.pm between versions 1.315 and 1.323

version 1.315, 2006/02/25 20:25:02 version 1.323, 2006/02/28 02:47:30
Line 471  sub jscriptNform { Line 471  sub jscriptNform {
 # Given the score (as a number [0-1] and the weight) what is the final  # 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,  # point value? This function will round to the nearest tenth, third,
 # or quarter if one of those is within the tolerance of .00001.  # or quarter if one of those is within the tolerance of .00001.
 sub compute_points  sub compute_points {
 {  
     my ($score, $weight) = @_;      my ($score, $weight) = @_;
           
     my $tolerance = .00001;      my $tolerance = .00001;
Line 483  sub compute_points Line 482  sub compute_points
         my ($factor) = @_;          my ($factor) = @_;
         my $num = ($points * $factor) + $tolerance;          my $num = ($points * $factor) + $tolerance;
         my $floored_num = floor($num);          my $floored_num = floor($num);
         if ($num - $floored_num < 2 * $tolerance * $factor)          if ($num - $floored_num < 2 * $tolerance * $factor) {
         {  
             return $floored_num / $factor;              return $floored_num / $factor;
         }          }
         return $points;          return $points;
Line 1423  sub gradeBox { Line 1421  sub gradeBox {
   '<font color="red">problem weight assigned by computer</font>');    '<font color="red">problem weight assigned by computer</font>');
     $wgt       = ($wgt > 0 ? $wgt : '1');      $wgt       = ($wgt > 0 ? $wgt : '1');
     my $score  = ($$record{'resource.'.$partid.'.awarded'} eq '' ?      my $score  = ($$record{'resource.'.$partid.'.awarded'} eq '' ?
   '' : $$record{'resource.'.$partid.'.awarded'}*$wgt);    '' : &compute_points($$record{'resource.'.$partid.'.awarded'},$wgt));
     my $result='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n";      my $result='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n";
     my $display_part=&get_display_part($partid,undef,$symb);      my $display_part=&get_display_part($partid,undef,$symb);
     my %last_resets = &get_last_resets($symb,$env{'request.course.id'},      my %last_resets = &get_last_resets($symb,$env{'request.course.id'},
Line 1473  sub gradeBox { Line 1471  sub gradeBox {
         '<input type="hidden" name="aggtries'.$counter.'_'.$partid.'" value="'.          '<input type="hidden" name="aggtries'.$counter.'_'.$partid.'" value="'.
         $aggtries.'" />'."\n";          $aggtries.'" />'."\n";
     $result.='</td></tr></table>'."\n";      $result.='</td></tr></table>'."\n";
     my $files=&get_submitted_files($udom,$uname,$partid,$counter,$record);      $result.=&handback_box($symb,$uname,$udom,$counter,$partid,$record);
     if (@$files) {      return $result;
         my $file_counter = 0;  }
  foreach my $file (@$files) {  
             $result.=' Return commented document to student. <input type="file" name="part'.$partid.'_returndoc';  sub handback_box {
             $result.=$file_counter.'" />'."\n";      my ($symb,$uname,$udom,$counter,$partid,$record) = @_;
             $result.='<input type="hidden" name="respid" value="'.$counter.'" />';      my ($map,$resid,$url) = &Apache::lonnet::decode_symb($symb);
             $result.='<input type="hidden" name="returndocorig'.$file_counter.'" value="'.$file.'" />';      my ($partlist,$handgrade,$responseType) = &response_type($url,$symb);
       my (@respids);
       foreach my $part_resp (sort(keys(%$handgrade))) {
           my ($part,$resp) = split(/_/,$part_resp);
           if ($part eq $partid) {
               push @respids,$resp;
         }          }
     }      }
       my $result;
           foreach my $respid (@respids) {
     return $result;   my $prefix = $counter.'_'.$partid.'_'.$respid.'_';
    my $files=&get_submitted_files($udom,$uname,$partid,$respid,$record);
    next if (!@$files);
    my $file_counter = 1;
    foreach my $file (@$files) {
       my ($file_disp) = ($file =~ m|.+/(.+)$|);
       $result.=&mt('Return commented version of [_1] to student.',
    '<span class="filename">'.$file_disp.'</span>');
       $result.='<input type="file"   name="'.$prefix.'returndoc'.$file_counter.'" />'."\n";
       $result.='<input type="hidden" name="'.$prefix.'origdoc'.$file_counter.'" value="'.$file.'" /><br />';
       $file_counter++;
    }
       }
       return $result;    
 }  }
   
 sub show_problem {  sub show_problem {
Line 1827  KEYWORDS Line 1843  KEYWORDS
     $display_part.' <font color="#999999">( ID '.$respid.      $display_part.' <font color="#999999">( ID '.$respid.
     ' )</font>&nbsp; &nbsp;';      ' )</font>&nbsp; &nbsp;';
  my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record);   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) {   if (@$files) {
     $lastsubonly.='<br /><font color="red" size="1">Like all files provided by users, this file may contain virusses</font><br />';      $lastsubonly.='<br /><font color="red" size="1">Like all files provided by users, this file may contain virusses</font><br />';
     my $file_counter = 0;      my $file_counter = 0;
Line 1920  KEYWORDS Line 1927  KEYWORDS
     my %seen = ();      my %seen = ();
     my @partlist;      my @partlist;
     my @gradePartRespid;      my @gradePartRespid;
     for (sort keys(%$handgrade)) {      for my $part_resp (sort(keys(%$handgrade))) {
  my ($partid,$respid) = split(/_/);   my ($partid,$respid) = split(/_/, $part_resp);
  next if ($seen{$partid} > 0);   next if ($seen{$partid} > 0);
  $seen{$partid}++;   $seen{$partid}++;
  next if ($$handgrade{$_} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/);   next if ($$handgrade{$part_resp} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/);
  push @partlist,$partid;   push @partlist,$partid;
  push @gradePartRespid,$partid.'.'.$respid;   push @gradePartRespid,$partid.'.'.$respid;
   
  $request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record));   $request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record));
     }      }
     $result='<input type="hidden" name="partlist'.$counter.      $result='<input type="hidden" name="partlist'.$counter.
Line 2319  sub saveHandGrade { Line 2325  sub saveHandGrade {
     $newrecord{'resource.'.$new_part.'.regrader'}=      $newrecord{'resource.'.$new_part.'.regrader'}=
  "$env{'user.name'}:$env{'user.domain'}";   "$env{'user.name'}:$env{'user.domain'}";
  }   }
         if ($env{'form.part'.$new_part.'_returndoc1'}) {   my ($partlist,$handgrade,$responseType) = &response_type($url,$symb);
             # if multiple files are uploaded names will be 'returndoc2','returndoc3'   foreach my $part_resp (sort(keys(%$handgrade))) {
                  my ($part_id, $resp_id) = split(/_/,$part_resp);
             my $portfolio_root = &Apache::loncommon::propath($domain,      &Apache::lonnet::logthis('form.'.$newflg.'_'.$part_resp.'_returndoc1');
     $stuname).      &Apache::lonnet::logthis("new part is $new_part and partid is $part_id");
     '/userfiles/portfolio';              if (($env{'form.'.$newflg.'_'.$part_resp.'_returndoc1'}) && ($new_part == $part_id)) {
                 $request->print('<br>'.$portfolio_root.'<br>');                  # if multiple files are uploaded names will be 'returndoc2','returndoc3'
                                   my $file_counter = 1;
     #                my $result=&Apache::lonnet::userfileupload('uploaddoc','',                  while ($env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter}) {
     #         'portfolio'.$env{'form.currentpath'});                      my $fname=$env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'.filename'};
                           $newrecord{"resource.$new_part.$resp_id.handback"} = $env{'form.returndocorig'.$file_counter};
             my $file_counter = 1;                      $request->print("<br />".$fname." will be the uploaded file name");
             my $respid = $env{'form.respid'};                      $request->print("<font color=\"red\">Will upload document</font>".$env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter});
             while ($env{'form.part'.$new_part.'_returndoc'.$file_counter}) {                      $file_counter++;
                 my $fname=$env{'form.returndoc'.$file_counter.'.filename'};                  }
                 $newrecord{"resource.$new_part.$respid.handback"} = $env{'form.returndocorig'.$file_counter};  
                 $request->print("<br />".$fname." will be the uploaded file name");  
                 $request->print("<font color=\"red\">Will upload document</font>".$env{'form.returndocorig'.$file_counter});  
                 $file_counter++;  
             }              }
         }          }
   
Line 2377  sub saveHandGrade { Line 2379  sub saveHandGrade {
     }      }
     return ('',$pts,$wgt);      return ('',$pts,$wgt);
 }  }
   
 sub get_submitted_files {  sub get_submitted_files {
     my ($udom,$uname,$partid,$respid,$record) = @_;      my ($udom,$uname,$partid,$respid,$record) = @_;
     my @files;      my @files;
Line 2391  sub get_submitted_files { Line 2394  sub get_submitted_files {
     }      }
     return (\@files);      return (\@files);
 }  }
   
 # ----------- Provides number of tries since last reset.  # ----------- Provides number of tries since last reset.
 sub get_num_tries {  sub get_num_tries {
     my ($record,$last_reset,$part) = @_;      my ($record,$last_reset,$part) = @_;
Line 2896  sub viewstudentgrade { Line 2900  sub viewstudentgrade {
             $aggregates{$part} = 1;              $aggregates{$part} = 1;
         }          }
  if ($type eq 'awarded') {   if ($type eq 'awarded') {
     my $pts = $score eq '' ? '' : $score*$$weight{$part};      my $pts = $score eq '' ? '' : &compute_points($score,$$weight{$part});
     $result.='<input type="hidden" name="'.      $result.='<input type="hidden" name="'.
  'GD_'.$student.'_'.$part.'_awarded_s" value="'.$pts.'" />'."\n";   'GD_'.$student.'_'.$part.'_awarded_s" value="'.$pts.'" />'."\n";
     $result.='<input type="text" name="'.      $result.='<input type="text" name="'.

Removed from v.1.315  
changed lines
  Added in v.1.323


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