--- loncom/homework/grades.pm 2006/01/17 23:09:50 1.303
+++ loncom/homework/grades.pm 2006/01/27 00:26:18 1.305
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.303 2006/01/17 23:09:50 banghart Exp $
+# $Id: grades.pm,v 1.305 2006/01/27 00:26:18 banghart Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2049,6 +2049,8 @@ sub processHandGrade {
# if multiple files are uploaded names will be 'returndoc2', 'returndoc3'
my $file_counter = 1;
while ($env{'form.returndoc'.$file_counter}) {
+ my $fname=$env{'form.returndoc'.$file_counter.'.filename'};
+ $request->print("
".$fname." will be the uploaded file name");
$request->print("Will upload document".$env{'form.returndocorig'.$file_counter});
$file_counter ++;
}
@@ -2301,7 +2303,10 @@ sub saveHandGrade {
"$env{'user.name'}:$env{'user.domain'}";
}
# unless problem has been graded, set flag to version the submitted files
- unless ($record{'resource.'.$new_part.'.solved'} =~ /^correct_/ || $record{'resource.'.$new_part.'.solved'} eq 'incorrect_by_override') {
+ unless ($record{'resource.'.$new_part.'.solved'} =~ /^correct_/ ||
+ $record{'resource.'.$new_part.'.solved'} eq 'incorrect_by_override' ||
+ $dropMenu eq 'reset status')
+ {
push (@v_flag,$new_part);
}
}
@@ -2407,25 +2412,25 @@ sub version_portfiles {
if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) {
my @v_portfiles;
my @portfiles = split(/,/,$$record{$key});
- &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;
+ }
}
}
}
@@ -2434,11 +2439,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']);
}
}
@@ -2446,7 +2453,27 @@ sub version_portfiles {
}
}
return 'ok';
-
+}
+
+sub version_selected_portfile {
+ my ($file_name,$domain,$stu_name) = @_;
+ return 'ok';
+}
+
+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);
}
#--------------------------------------------------------------------------------------