--- loncom/homework/grades.pm 2005/12/02 19:56:36 1.301 +++ loncom/homework/grades.pm 2006/01/25 22:56:25 1.304 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.301 2005/12/02 19:56:36 albertel Exp $ +# $Id: grades.pm,v 1.304 2006/01/25 22:56:25 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1577,7 +1577,7 @@ sub submission { } my $overRideScore = $env{'form.overRideScore'} eq '' ? 'no' : $env{'form.overRideScore'}; - $request->print('
'."\n". + $request->print(''."\n". ''."\n". ''."\n". ''."\n". @@ -1807,9 +1807,14 @@ KEYWORDS } if (@files) { $lastsubonly.='
Like all files provided by users, this file may contain virusses
'; + my $file_counter = 0; foreach my $file (@files) { + $file_counter ++; &Apache::lonnet::allowuploaded('/adm/grades',$file); $lastsubonly.='
'.$file.''; + $lastsubonly.='Return commented document to student. '."\n"; + $lastsubonly.=''; + } $lastsubonly.='
'; } @@ -2040,6 +2045,14 @@ sub processHandGrade { } } } + if ($env{'form.returndoc1'}) { + # if multiple files are uploaded names will be 'returndoc2', 'returndoc3' + my $file_counter = 1; + while ($env{'form.returndoc'.$file_counter}) { + $request->print("Will upload document".$env{'form.returndocorig'.$file_counter}); + $file_counter ++; + } + } $ctr++; } } @@ -2397,22 +2410,23 @@ sub version_portfiles { &Apache::lonnet::logthis("should be unmarking and remarking $key",@portfiles); foreach my $file (@portfiles) { &Apache::lonnet::unmark_as_readonly($domain,$stuname,[$symb,$env{'request.course.id'}],$file); - my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*$)/); + my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*)$/); my $version = 0; - my @answer_file_parts = split(/\./, $answer_file); + my ($answer_name,$answer_ver,$answer_ext) = + &file_name_version_ext($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])) { + my ($file) = split(/\&/,$row,2); + my ($file_name,$file_version,$file_ext) = + &file_name_version_ext($file); + if (($file_name eq $answer_name) && + ($file_ext eq $answer_ext)) { # 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]}; + if ($file_version ne '') { + # a versioned file is found so save it for later + if ($file_version > $version) { + $version = $file_version; + } } } } @@ -2421,11 +2435,13 @@ sub version_portfiles { if($env{'form.copy'} eq '-1') { &Apache::lonnet::logthis('problem getting file '.$directory.$answer_file); } else { - my $copy_result = &Apache::lonnet::finishuserfileupload($stuname,$domain,'copy', - '/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); - push(@v_portfiles, $directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); + my $new_answer = $answer_name.'.'.$version.'.'.$answer_ext; + my $copy_result = &Apache::lonnet::finishuserfileupload( + $stuname,$domain,'copy', + '/portfolio'.$directory.$new_answer); + push(@v_portfiles, $directory.$new_answer); &Apache::lonnet::mark_as_readonly($domain,$stuname, - ['/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]], + ['/portfolio'.$directory.$new_answer], [$symb,$env{'request.course.id'},'graded']); } } @@ -2436,6 +2452,22 @@ sub version_portfiles { } +sub file_name_version_ext { + my ($file)=@_; + my @file_parts = split(/\./, $file); + my ($name,$version,$ext); + if (@file_parts > 1) { + $ext=pop(@file_parts); + if (@file_parts > 1 && $file_parts[-1] =~ /^\d+$/) { + $version=pop(@file_parts); + } + $name=join('.',@file_parts); + } else { + $name=join('.',@file_parts); + } + return($name,$version,$ext); +} + #-------------------------------------------------------------------------------------- # #-------------------------- Next few routines handles grading by section or whole class @@ -3291,12 +3323,14 @@ sub csvuploadoptions {

Uploading Class Grade Options

+

+ + Failed to store student $username\@$domain. + Message when trying to store was ($result) + +

" ); + } $request->rflush(); $countdone++; }