Diff for /loncom/homework/grades.pm between versions 1.359 and 1.369

version 1.359, 2006/05/30 12:45:36 version 1.369, 2006/07/02 01:03:04
Line 36  use Apache::lonhtmlcommon; Line 36  use Apache::lonhtmlcommon;
 use Apache::lonnavmaps;  use Apache::lonnavmaps;
 use Apache::lonhomework;  use Apache::lonhomework;
 use Apache::loncoursedata;  use Apache::loncoursedata;
 use Apache::lonmsg qw(:user_normal_msg);  use Apache::lonmsg();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::lonlocal;  use Apache::lonlocal;
 use String::Similarity;  use String::Similarity;
Line 1551  sub handback_box { Line 1551  sub handback_box {
  next if (!@$files);   next if (!@$files);
  my $file_counter = 1;   my $file_counter = 1;
  foreach my $file (@$files) {   foreach my $file (@$files) {
     my ($file_path, $file_disp) = ($file =~ m|(.+/)(.+)$|);      if ($file =~ /\/portfolio\//) {
     my ($name,$version,$ext) = &file_name_version_ext($file_disp);             my ($file_path, $file_disp) = ($file =~ m|(.+/)(.+)$|);
     $file_disp = "$name.$ext";             my ($name,$version,$ext) = &file_name_version_ext($file_disp);
     $file = $file_path.$file_disp;             $file_disp = "$name.$ext";
     $result.=&mt('Return commented version of [_1] to student.',             $file = $file_path.$file_disp;
  '<span class="filename">'.$file_disp.'</span>');             $result.=&mt('Return commented version of [_1] to student.',
     $result.='<input type="file"   name="'.$prefix.'returndoc'.$file_counter.'" />'."\n";      '<span class="LC_filename">'.$file_disp.'</span>');
     $result.='<input type="hidden" name="'.$prefix.'origdoc'.$file_counter.'" value="'.$file.'" /><br />';             $result.='<input type="file"   name="'.$prefix.'returndoc'.$file_counter.'" />'."\n";
     $file_counter++;             $result.='<input type="hidden" name="'.$prefix.'origdoc'.$file_counter.'" value="'.$file.'" /><br />';
              $result.='(File will be uploaded when you click on Save & Next below.)<br />';
              $file_counter++;
       }
  }   }
     }      }
     return $result;          return $result;    
Line 2107  sub processHandGrade { Line 2110  sub processHandGrade {
     if ($includemsg =~ /savemsg|newmsg\Q$ctr\E/) {      if ($includemsg =~ /savemsg|newmsg\Q$ctr\E/) {
  $subject = $env{'form.msgsub'} if ($includemsg =~ /msgsub/);   $subject = $env{'form.msgsub'} if ($includemsg =~ /msgsub/);
  unless ($subject=~/\w/) { $subject=&mt('Grading Feedback'); }   unless ($subject=~/\w/) { $subject=&mt('Grading Feedback'); }
    $subject.=' ['.&Apache::lonnet::declutter($url).']';
  my (@msgnum) = split(/,/,$includemsg);   my (@msgnum) = split(/,/,$includemsg);
  foreach (@msgnum) {   foreach (@msgnum) {
     $message.=$env{'form.'.$_} if ($_ =~ /savemsg|newmsg/ && $_ ne '');      $message.=$env{'form.'.$_} if ($_ =~ /savemsg|newmsg/ && $_ ne '');
Line 2119  sub processHandGrade { Line 2123  sub processHandGrade {
     "?symb=$symb\">$env{'form.probTitle'}</a>";      "?symb=$symb\">$env{'form.probTitle'}</a>";
  }   }
  $msgstatus = &Apache::lonmsg::user_normal_msg($uname,$udom,   $msgstatus = &Apache::lonmsg::user_normal_msg($uname,$udom,
       $subject.' ['.        $subject,
       &Apache::lonnet::declutter($url).']',$message);        $message);
  $request->print('<br />'.&mt('Sending message to [_1]@[_2]',$uname,$udom).': '.   $request->print('<br />'.&mt('Sending message to [_1]@[_2]',$uname,$udom).': '.
  $msgstatus);   $msgstatus);
     }      }
Line 2133  sub processHandGrade { Line 2137  sub processHandGrade {
     &saveHandGrade($request,$symb,$collaborator,$udom,$ctr,      &saveHandGrade($request,$symb,$collaborator,$udom,$ctr,
    $env{'form.unamedom'.$ctr},$part);     $env{'form.unamedom'.$ctr},$part);
  if ($errorflag eq 'not_allowed') {   if ($errorflag eq 'not_allowed') {
     $request->print("<font color=\"red\">Not allowed to modify grades for $collaborator:$udom</font>");      $request->print("<span class=\"LC_error\">".&mt('Not allowed to modify grades for [_1]',"$collaborator:$udom")."</span>");
     next;      next;
  } else {   } else {
     if ($message ne '') {      if ($message ne '') {
  $msgstatus = &Apache::lonmsg::user_normal_msg($collaborator,$udom,$env{'form.msgsub'},$message);   $msgstatus = &Apache::lonmsg::user_normal_msg($collaborator,$udom,$subject,$message);
     }      }
  }   }
     }      }
Line 2329  sub saveHandGrade { Line 2333  sub saveHandGrade {
  if (exists($record{'resource.'.$new_part.'.awarded'})) {   if (exists($record{'resource.'.$new_part.'.awarded'})) {
     $newrecord{'resource.'.$new_part.'.awarded'} = '';      $newrecord{'resource.'.$new_part.'.awarded'} = '';
  }   }
     $newrecord{'resource.'.$new_part.'.regrader'}="$env{'user.name'}:$env{'user.domain'}";          $newrecord{'resource.'.$new_part.'.regrader'}="$env{'user.name'}:$env{'user.domain'}";
     }      }
  } elsif ($dropMenu eq 'reset status'   } elsif ($dropMenu eq 'reset status'
  && exists($record{'resource.'.$new_part.'.solved'})) { #don't bother if no old records -> no attempts   && exists($record{'resource.'.$new_part.'.solved'})) { #don't bother if no old records -> no attempts
Line 2389  sub saveHandGrade { Line 2393  sub saveHandGrade {
     }      }
     $newrecord{'resource.'.$new_part.'.regrader'}=      $newrecord{'resource.'.$new_part.'.regrader'}=
  "$env{'user.name'}:$env{'user.domain'}";   "$env{'user.name'}:$env{'user.domain'}";
             &handback_files($request,$symb,$stuname,$domain,$newflg,$new_part,\%newrecord);  
  }   }
  # unless problem has been graded, set flag to version the submitted files   # unless problem has been graded, set flag to version the submitted files
  unless ($record{'resource.'.$new_part.'.solved'} =~ /^correct_/  ||    unless ($record{'resource.'.$new_part.'.solved'} =~ /^correct_/  || 
Line 2404  sub saveHandGrade { Line 2407  sub saveHandGrade {
   
     if (%newrecord) {      if (%newrecord) {
         if (@version_parts) {          if (@version_parts) {
             my @changed_keys = &version_portfiles(\%record, \@parts_graded, $env{'request.course.id'}, $symb, $domain, $stuname, \@version_parts);              my @changed_keys = &version_portfiles(\%record, \@parts_graded, 
                                   $env{'request.course.id'}, $symb, $domain, $stuname, \@version_parts);
     @newrecord{@changed_keys} = @record{@changed_keys};      @newrecord{@changed_keys} = @record{@changed_keys};
       foreach my $new_part (@version_parts) {
    &handback_files($request,$symb,$stuname,$domain,$newflg,
    $new_part,\%newrecord);
       }
         }          }
  &Apache::lonnet::cstore(\%newrecord,$symb,   &Apache::lonnet::cstore(\%newrecord,$symb,
  $env{'request.course.id'},$domain,$stuname);   $env{'request.course.id'},$domain,$stuname);
Line 2437  sub handback_files { Line 2445  sub handback_files {
             if (($env{'form.'.$newflg.'_'.$part_resp.'_returndoc1'}) && ($new_part == $part_id)) {              if (($env{'form.'.$newflg.'_'.$part_resp.'_returndoc1'}) && ($new_part == $part_id)) {
                 # if multiple files are uploaded names will be 'returndoc2','returndoc3'                  # if multiple files are uploaded names will be 'returndoc2','returndoc3'
                 my $file_counter = 1;                  my $file_counter = 1;
    my $file_msg;
                 while ($env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter}) {                  while ($env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter}) {
                     my $fname=$env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'.filename'};                      my $fname=$env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'.filename'};
                     my ($directory,$answer_file) =                       my ($directory,$answer_file) = 
Line 2446  sub handback_files { Line 2455  sub handback_files {
     my ($portfolio_path) = ($directory =~ /^.+$stuname\/portfolio(.*)/);      my ($portfolio_path) = ($directory =~ /^.+$stuname\/portfolio(.*)/);
     my @dir_list = &Apache::lonnet::dirlist($portfolio_path,$domain,$stuname,$portfolio_root);      my @dir_list = &Apache::lonnet::dirlist($portfolio_path,$domain,$stuname,$portfolio_root);
     my $version = &get_next_version($answer_name, $answer_ext, \@dir_list);      my $version = &get_next_version($answer_name, $answer_ext, \@dir_list);
     my $new_answer = &version_selected_portfile($domain, $stuname, $portfolio_path, $answer_file, $version);  
                     $$newrecord{"resource.$new_part.$resp_id.handback"} = $new_answer;  
                     $version++;  
                     # fix file name                      # fix file name
                     my ($save_file_name) = (($directory.$answer_name.".$version.".$answer_ext) =~ /^.+\/${stuname}\/(.*)/);                      my ($save_file_name) = (($directory.$answer_name.".$version.".$answer_ext) =~ /^.+\/${stuname}\/(.*)/);
                     my $result=&Apache::lonnet::finishuserfileupload($stuname,$domain,                      my $result=&Apache::lonnet::finishuserfileupload($stuname,$domain,
Line 2458  sub handback_files { Line 2464  sub handback_files {
                         $request->print('<font color="red"> An errror occured ('.$result.                          $request->print('<font color="red"> An errror occured ('.$result.
                         ') while trying to upload '.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'</font><br />');                          ') while trying to upload '.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'</font><br />');
                     } else {                      } else {
                         my $subject = "File Handed Back by Instructor ";                          # mark the file as read only
                         my $message = "A file has been returned that was originally submitted in reponse to: <br />";                          my @files = ($save_file_name);
                         $message .= "<strong>".&Apache::lonnet::gettitle($symb)."</strong><br />";                          my @what = ($symb,'handback');
                         $message .= " The returned file is named: <br /><strong>".$save_file_name."</strong><br />";                          &Apache::lonnet::mark_as_readonly($domain,$stuname,\@files,\@what);
                         $message .= " and can be found in your portfolio space.";   if (exists($$newrecord{"resource.$new_part.$resp_id.handback"})) {
                         &Apache::lonnet::logthis($message);      $$newrecord{"resource.$new_part.$resp_id.handback"}.=',';
                         my $msgstatus = &Apache::lonmsg::user_normal_msg($stuname,$domain,   }
         $subject.' [File Returned]',$message);                                              $$newrecord{"resource.$new_part.$resp_id.handback"} .= $save_file_name;
    $file_msg.= "\n".'<br /><span class="LC_filename"><a href="/uploaded/'."$domain/$stuname/".$save_file_name.'">'.$save_file_name."</a></span><br />";
   
                     }                      }
                     $request->print("<br />".$fname." will be the uploaded file name");                      $request->print("<br />".$fname." will be the uploaded file name");
                     $request->print(" ".$env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter});                      $request->print(" ".$env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter});
                     $file_counter++;                      $file_counter++;
                 }                  }
    my $subject = "File Handed Back by Instructor ";
    my $message = "A file has been returned that was originally submitted in reponse to: <br />";
    $message .= "<strong>".&Apache::lonnet::gettitle($symb)."</strong><br />";
    $message .= ' The returned file(s) are named: '. $file_msg;
    $message .= " and can be found in your portfolio space.";
    my $url = (&Apache::lonnet::decode_symb($symb))[2];
    $url = &Apache::lonnet::declutter($url);
    my $msgstatus = &Apache::lonmsg::user_normal_msg($stuname,$domain,
    $subject.' (File Returned) ['.$url.']',$message);                    
   
             }              }
         }          }
     return;      return;
Line 2562  sub version_portfiles { Line 2580  sub version_portfiles {
         my $new_portfiles;          my $new_portfiles;
         if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) {          if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) {
             my @versioned_portfiles;              my @versioned_portfiles;
             my @portfiles = split(/,/,$$record{$key});              my @portfiles = split(/\s*,\s*/,$$record{$key});
             foreach my $file (@portfiles) {              foreach my $file (@portfiles) {
                 &Apache::lonnet::unmark_as_readonly($domain,$stu_name,[$symb,$env{'request.course.id'}],$file);                  &Apache::lonnet::unmark_as_readonly($domain,$stu_name,[$symb,$env{'request.course.id'}],$file);
                 my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*)$/);                  my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*)$/);
Line 2574  sub version_portfiles { Line 2592  sub version_portfiles {
                 if ($new_answer ne 'problem getting file') {                  if ($new_answer ne 'problem getting file') {
                     push(@versioned_portfiles, $directory.$new_answer);                      push(@versioned_portfiles, $directory.$new_answer);
                     &Apache::lonnet::mark_as_readonly($domain,$stu_name,                      &Apache::lonnet::mark_as_readonly($domain,$stu_name,
                         ['/portfolio'.$directory.$new_answer],                          [$directory.$new_answer],
                         [$symb,$env{'request.course.id'},'graded']);                          [$symb,$env{'request.course.id'},'graded']);
                 }                  }
             }              }

Removed from v.1.359  
changed lines
  Added in v.1.369


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