Diff for /loncom/homework/grades.pm between versions 1.249 and 1.254

version 1.249, 2005/02/28 21:18:08 version 1.254, 2005/04/02 18:44:39
Line 96  sub get_symb_and_url { Line 96  sub get_symb_and_url {
 sub nameUserString {  sub nameUserString {
     my ($type,$fullname,$uname,$udom) = @_;      my ($type,$fullname,$uname,$udom) = @_;
     if ($type eq 'header') {      if ($type eq 'header') {
  return '<b>&nbsp;Fullname&nbsp;</b><font color="#999999">(Username)</font>&nbsp;Section/Group';   return '<b>&nbsp;Fullname&nbsp;</b><font color="#999999">(Username)</font>';
     } else {      } else {
  return '&nbsp;'.$fullname.'<font color="#999999">&nbsp;('.$uname.   return '&nbsp;'.$fullname.'<font color="#999999">&nbsp;('.$uname.
     ($ENV{'user.domain'} eq $udom ? '' : ' ('.$udom.')').')</font>';      ($ENV{'user.domain'} eq $udom ? '' : ' ('.$udom.')').')</font>';
Line 678  LISTJAVASCRIPT Line 678  LISTJAVASCRIPT
     my $loop = 0;      my $loop = 0;
     while ($loop < 2) {      while ($loop < 2) {
  $gradeTable.='<td><b>&nbsp;No.</b>&nbsp;</td><td><b>&nbsp;Select&nbsp;</b></td>'.   $gradeTable.='<td><b>&nbsp;No.</b>&nbsp;</td><td><b>&nbsp;Select&nbsp;</b></td>'.
     '<td>'.&nameUserString('header').'</td>';      '<td>'.&nameUserString('header').'&nbsp;Section/Group</td>';
  if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') {   if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') {
     foreach (sort(@$partlist)) {      foreach (sort(@$partlist)) {
  my $display_part=&get_display_part((split(/_/))[0],$url,$symb);   my $display_part=&get_display_part((split(/_/))[0],$url,$symb);
Line 2113  sub saveHandGrade { Line 2113  sub saveHandGrade {
    $ENV{'request.course.id'});     $ENV{'request.course.id'});
     if (!&canmodify($usec)) { return('not_allowed'); }      if (!&canmodify($usec)) { return('not_allowed'); }
     my %record     = &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$domain,$stuname);      my %record     = &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$domain,$stuname);
       my @parts_graded;
     my %newrecord  = ();      my %newrecord  = ();
     my ($pts,$wgt) = ('','');      my ($pts,$wgt) = ('','');
     foreach (split(/:/,$ENV{'form.partlist'.$newflg})) {      foreach (split(/:/,$ENV{'form.partlist'.$newflg})) {
Line 2147  sub saveHandGrade { Line 2148  sub saveHandGrade {
     if ($partial eq $record{'resource.'.$_.'.awarded'}) {      if ($partial eq $record{'resource.'.$_.'.awarded'}) {
  #do not update score for part if not changed.   #do not update score for part if not changed.
  next;   next;
       } else {
           push @parts_graded, $_;
     }      }
     if ($record{'resource.'.$_.'.awarded'} ne $partial) {      if ($record{'resource.'.$_.'.awarded'} ne $partial) {
  $newrecord{'resource.'.$_.'.awarded'}  = $partial;   $newrecord{'resource.'.$_.'.awarded'}  = $partial;
Line 2170  sub saveHandGrade { Line 2173  sub saveHandGrade {
  }   }
     }      }
     if (scalar(keys(%newrecord)) > 0) {      if (scalar(keys(%newrecord)) > 0) {
           &version_portfiles(\%record, \@parts_graded, $ENV{'request.course.id'}, $symb, $domain, $stuname);
  &Apache::lonnet::cstore(\%newrecord,$symb,   &Apache::lonnet::cstore(\%newrecord,$symb,
  $ENV{'request.course.id'},$domain,$stuname);   $ENV{'request.course.id'},$domain,$stuname);
     }      }
     return '',$pts,$wgt;      return '',$pts,$wgt;
 }  }
   
   # ----------- Handles creating versions for portfolio files as answers
   sub version_portfiles {
       my ($record, $parts_graded, $courseid, $symb, $domain, $stuname) = @_;
       my $parts = join '|', @$parts_graded;
       my $portfolio_root = &Apache::loncommon::propath($domain,
    $stuname).
    '/userfiles/portfolio';
       foreach my $key (keys %$record) {
           if ($key =~ /^resource\.($parts)\./ && $key =~ /\.portfiles$/) {
               my @portfiles = split /,/,$$record{$key};
               foreach my $file (@portfiles) {
                   my ($directory,$answer_file) =( $file =~ /^(.*?)([^\/]*$)/);
                   my $version = 0;
                   my @answer_file_parts = split /\./, $answer_file;
                   my @dir_list = &Apache::lonnet::dirlist($directory,$domain,$stuname,$portfolio_root);
                   my @file_names;
                   my @file_name_parts;
                   foreach my $row (@dir_list) {
                       @file_names = split (/\&/,$row,2);
                       @file_name_parts = split (/\./, $file_names[0]);
                       # ($file_name_parts[scalar @file_name_parts] eq $answer_file_parts[scalar @answer_file_parts])
                       if (($file_name_parts[0] eq $answer_file_parts[0]) && 
                           ($file_name_parts[-1] eq $answer_file_parts[-1])) {
                           # gets here if filename and extension match, regardless of version
                           if (scalar @file_name_parts == 3) { # a versioned file is found
                               # so save it for later
                               if ($file_name_parts[1] > $version) {$version = $file_name_parts[1]};
                           }
                       }
                   }
                   $version += 1;
                   &Apache::lonnet::logthis('answer file is '.$answer_file.
                           ' becomes '.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[(scalar @answer_file_parts)-1]);
                   &Apache::lonnet::logthis('from dir list is '.$file_names[0].' has '.@file_name_parts.' parts');
               }
               &Apache::lonnet::logthis('found key portfiles '.$key);
               &Apache::lonnet::logthis('found value portfiles '.$$record{$key});
           }
       } 
       
       
   }
   
 #--------------------------------------------------------------------------------------  #--------------------------------------------------------------------------------------
 #  #
 #-------------------------- Next few routines handles grading by section or whole class  #-------------------------- Next few routines handles grading by section or whole class

Removed from v.1.249  
changed lines
  Added in v.1.254


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