Diff for /loncom/homework/grades.pm between versions 1.337 and 1.342

version 1.337, 2006/03/21 12:45:20 version 1.342, 2006/03/28 00:46:20
Line 2269  sub processHandGrade { Line 2269  sub processHandGrade {
 #---- Save the score and award for each student, if changed  #---- Save the score and award for each student, if changed
 sub saveHandGrade {  sub saveHandGrade {
     my ($request,$symb,$stuname,$domain,$newflg,$submitter,$part) = @_;      my ($request,$symb,$stuname,$domain,$newflg,$submitter,$part) = @_;
     my @v_flag;      my @version_parts;
     my $usec = &Apache::lonnet::getsection($domain,$stuname,      my $usec = &Apache::lonnet::getsection($domain,$stuname,
    $env{'request.course.id'});     $env{'request.course.id'});
     if (!&canmodify($usec)) { return('not_allowed'); }      if (!&canmodify($usec)) { return('not_allowed'); }
Line 2352  sub saveHandGrade { Line 2352  sub saveHandGrade {
             &handback_files($request,$symb,$stuname,$domain,$newflg,$new_part,\%newrecord);              &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
  &Apache::lonnet::logthis("about to enter condition vflag");  
  unless ($record{'resource.'.$new_part.'.solved'} =~ /^correct_/  ||    unless ($record{'resource.'.$new_part.'.solved'} =~ /^correct_/  || 
         $record{'resource.'.$new_part.'.solved'} eq 'incorrect_by_override' ||          $record{'resource.'.$new_part.'.solved'} eq 'incorrect_by_override' ||
         $dropMenu eq 'reset status')          $dropMenu eq 'reset status')
    {     {
     &Apache::lonnet::logthis("pushing vflag");      push (@version_parts,$new_part);
     push (@v_flag,$new_part);  
  }   }
     }      }
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
   
     if (scalar(keys(%newrecord)) > 0) {      if (scalar(keys(%newrecord)) > 0) {
         if (scalar(@v_flag)) {          if (scalar(@version_parts)) {
             &version_portfiles(\%record, \@parts_graded, $env{'request.course.id'}, $symb, $domain, $stuname, \@v_flag);              &version_portfiles(\%record, \%newrecord, \@parts_graded, $env{'request.course.id'}, $symb, $domain, $stuname, \@version_parts);
         }          }
  &Apache::lonnet::cstore(\%newrecord,$symb,   &Apache::lonnet::cstore(\%newrecord,$symb,
  $env{'request.course.id'},$domain,$stuname);   $env{'request.course.id'},$domain,$stuname);
Line 2391  sub saveHandGrade { Line 2389  sub saveHandGrade {
   
 sub handback_files {  sub handback_files {
     my ($request,$symb,$stuname,$domain,$newflg,$new_part,$newrecord) = @_;      my ($request,$symb,$stuname,$domain,$newflg,$new_part,$newrecord) = @_;
     &Apache::lonnet::logthis("inside the handback");      my $portfolio_root = &Apache::loncommon::propath($domain,
     my $output;   $stuname).
    '/userfiles/portfolio';
  my ($partlist,$handgrade,$responseType) = &response_type($symb);   my ($partlist,$handgrade,$responseType) = &response_type($symb);
   
         foreach my $part_resp (sort(keys(%$handgrade))) {          foreach my $part_resp (sort(keys(%$handgrade))) {
             my ($part_id, $resp_id) = split(/_/,$part_resp);              my ($part_id, $resp_id) = split(/_/,$part_resp);
             if (($env{'form.'.$newflg.'_'.$part_resp.'_returndoc1'}) && ($new_part == $part_id)) {              if (($env{'form.'.$newflg.'_'.$part_resp.'_returndoc1'}) && ($new_part == $part_id)) {
Line 2402  sub handback_files { Line 2400  sub handback_files {
                 my $file_counter = 1;                  my $file_counter = 1;
                 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'};
                     $$newrecord{"resource.$new_part.$resp_id.handback"} = $env{'form.returndocorig'.$file_counter};                      my ($directory,$answer_file) = 
                           ($env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter} =~ /^(.*?)([^\/]*)$/);
                       my ($answer_name,$answer_ver,$answer_ext) =
           &file_name_version_ext($answer_file);
       $directory =~ /^.+$stuname\/portfolio(.*)/;
       my $portfolio_path = $1;
       my @dir_list = &Apache::lonnet::dirlist($portfolio_path,$domain,$stuname,$portfolio_root);
       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;
                     # set the filename to match the submitted file name                      # set the filename to match the submitted file name
                     $env{'form.'.$newflg.'_'.$part_resp.'_returndoc1.filename'} = $env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter};                      $env{'form.'.$newflg.'_'.$part_resp.'_returndoc1.filename'} = $env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter};
                     my $result=&Apache::lonnet::userfileupload($newflg.'_'.$part_resp.'_returndoc'.$file_counter,'',                      my $result=&Apache::lonnet::userfileupload($newflg.'_'.$part_resp.'_returndoc'.$file_counter,'',
             'portfolio',undef,undef,undef,$stuname,$domain);                 'portfolio',undef,undef,undef,$stuname,$domain);
                     if ($result !~ m|^/uploaded/|) {                      if ($result !~ m|^/uploaded/|) {
                         $request->print('<font color="red"> An errror occured ('.$result.                          $request->print('<font color="red"> An errror occured ('.$result.
                         ') while trying to upload '.&display_file().'</font><br />');                          ') while trying to upload '.&display_file().'</font><br />');
                     # $request->print(&done('Back'));                      # $request->print(&done('Back'));
                     }                      }
                     $request->print("<br />".$fname." will be the uploaded file name");                      $request->print("<br />".$fname." will be the uploaded file name");
                     $request->print("<font color=\"red\">Will upload document</font>".$env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter});                      $request->print("<font color=\"red\">Will upload document </font>".$env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter});
                     $file_counter++;                      $file_counter++;
                 }                  }
             }              }
         }          }
     return ($output);      return;
 }  }
   
 sub get_submitted_files {  sub get_submitted_files {
Line 2497  sub get_last_resets { Line 2504  sub get_last_resets {
   
 # ----------- Handles creating versions for portfolio files as answers  # ----------- Handles creating versions for portfolio files as answers
 sub version_portfiles {  sub version_portfiles {
     my ($record, $parts_graded, $courseid, $symb, $domain, $stu_name, $v_flag) = @_;      my ($record, $newrecord, $parts_graded, $courseid, $symb, $domain, $stu_name, $v_flag) = @_;
     my $version_parts = join('|',@$v_flag);      my $version_parts = join('|',@$v_flag);
     my $parts = join('|', @$parts_graded);      my $parts = join('|', @$parts_graded);
     my $portfolio_root = &Apache::loncommon::propath($domain,      my $portfolio_root = &Apache::loncommon::propath($domain,
Line 2506  sub version_portfiles { Line 2513  sub version_portfiles {
     foreach my $key (keys(%$record)) {      foreach my $key (keys(%$record)) {
         my $new_portfiles;          my $new_portfiles;
         if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) {          if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) {
             my @v_portfiles;              my @versioned_portfiles;
             my @portfiles = split(/,/,$$record{$key});              my @portfiles = split(/,/,$$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 =~ /^(.*?)([^\/]*)$/);
                 my $version = 0;  
  my ($answer_name,$answer_ver,$answer_ext) =   my ($answer_name,$answer_ver,$answer_ext) =
     &file_name_version_ext($answer_file);      &file_name_version_ext($answer_file);
                 my @dir_list = &Apache::lonnet::dirlist($directory,$domain,$stu_name,$portfolio_root);                  my @dir_list = &Apache::lonnet::dirlist($directory,$domain,$stu_name,$portfolio_root);
                 $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, $stu_name, $directory, $answer_file, $version);                  my $new_answer = &version_selected_portfile($domain, $stu_name, $directory, $answer_file, $version);
                 if ($new_answer ne 'problem getting file') {                  if ($new_answer ne 'problem getting file') {
                     push(@v_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],                          ['/portfolio'.$directory.$new_answer],
                         [$symb,$env{'request.course.id'},'graded']);                          [$symb,$env{'request.course.id'},'graded']);
                 }                  }
                   
             }              }
             $$record{$key} = join(',',@v_portfiles);              $$newrecord{$key} = join(',',@versioned_portfiles);
         }          }
     }       } 
     return 'ok';         return 'ok';   
 }  }
   
 sub get_next_version {  sub get_next_version {
     my ($answer_name, $answer_ext, $dir_list);      my ($answer_name, $answer_ext, $dir_list) = @_;
     my $version;      my $version;
     foreach my $row (@$dir_list) {      foreach my $row (@$dir_list) {
         my ($file) = split(/\&/,$row,2);          my ($file) = split(/\&/,$row,2);
Line 5979  sub handler { Line 5984  sub handler {
   
 sub send_header {  sub send_header {
     my ($request)= @_;      my ($request)= @_;
     $request->print(&Apache::lontexconvert::header());      &Apache::lontexconvert::init_tth();
 #  $request->print("      $request->print(&Apache::loncommon::start_page('Grading'));
 #<script>  
 #remotewindow=open('','homeworkremote');  
 #remotewindow.close();  
 #</script>");   
     $request->print(&Apache::loncommon::bodytag('Grading'));  
     $request->rflush();      $request->rflush();
 }  }
   
 sub send_footer {  sub send_footer {
     my ($request)= @_;      my ($request)= @_;
     $request->print('</body></html>');      $request->print(&Apache::loncommon::end_page());
 }  }
   
 1;  1;

Removed from v.1.337  
changed lines
  Added in v.1.342


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