[LON-CAPA-cvs] cvs: loncom /homework grades.pm

banghart lon-capa-cvs@mail.lon-capa.org
Fri, 27 Jan 2006 01:52:26 -0000


banghart		Thu Jan 26 20:52:26 2006 EDT

  Modified files:              
    /loncom/homework	grades.pm 
  Log:
  	Refactored sub version_portfiles first pass. Replicates original 
  	behavior. (At least, I think it does.)
  
  
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.305 loncom/homework/grades.pm:1.306
--- loncom/homework/grades.pm:1.305	Thu Jan 26 19:26:18 2006
+++ loncom/homework/grades.pm	Thu Jan 26 20:52:25 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.305 2006/01/27 00:26:18 banghart Exp $
+# $Id: grades.pm,v 1.306 2006/01/27 01:52:25 banghart Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -2400,25 +2400,24 @@
 
 # ----------- Handles creating versions for portfolio files as answers
 sub version_portfiles {
-    my ($record, $parts_graded, $courseid, $symb, $domain, $stuname, $v_flag) = @_;
+    my ($record, $parts_graded, $courseid, $symb, $domain, $stu_name, $v_flag) = @_;
     my $version_parts = join('|',@$v_flag);
     my $parts = join('|', @$parts_graded);
     my $portfolio_root = &Apache::loncommon::propath($domain,
-						 $stuname).
+						 $stu_name).
 						'/userfiles/portfolio';
     foreach my $key (keys(%$record)) {
         my $new_portfiles;
-	
         if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) {
             my @v_portfiles;
             my @portfiles = split(/,/,$$record{$key});
             foreach my $file (@portfiles) {
-                &Apache::lonnet::unmark_as_readonly($domain,$stuname,[$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 $version = 0;
 		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 @dir_list = &Apache::lonnet::dirlist($directory,$domain,$stu_name,$portfolio_root);
                 foreach my $row (@dir_list) {
                     my ($file) = split(/\&/,$row,2);
 		    my ($file_name,$file_version,$file_ext) =
@@ -2435,19 +2434,14 @@
                     }
                 }
                 $version++;
-                $env{'form.copy'} = &Apache::lonnet::getfile("/uploaded/$domain/$stuname/portfolio$directory$answer_file");
-                if($env{'form.copy'} eq '-1') {
-                    &Apache::lonnet::logthis('problem getting file '.$directory.$answer_file);
-                } else {
-		    my $new_answer = $answer_name.'.'.$version.'.'.$answer_ext;
-		    my $copy_result = &Apache::lonnet::finishuserfileupload(
-                                        $stuname,$domain,'copy',
-				        '/portfolio'.$directory.$new_answer);
+                my $new_answer = &version_selected_portfile($domain, $stu_name, $directory, $answer_file, $version);
+                if ($new_answer ne 'problem getting file') {
                     push(@v_portfiles, $directory.$new_answer);
-                    &Apache::lonnet::mark_as_readonly($domain,$stuname,
-                                ['/portfolio'.$directory.$new_answer],
-                                [$symb,$env{'request.course.id'},'graded']);
+                    &Apache::lonnet::mark_as_readonly($domain,$stu_name,
+                        ['/portfolio'.$directory.$new_answer],
+                        [$symb,$env{'request.course.id'},'graded']);
                 }
+                
             }
             $$record{$key} = join(',',@v_portfiles);
         }
@@ -2456,8 +2450,21 @@
 }
 
 sub version_selected_portfile {
-    my ($file_name,$domain,$stu_name) = @_;
-    return 'ok';
+    my ($domain,$stu_name,$directory,$file_name,$version) = @_;
+    my ($answer_name,$answer_ver,$answer_ext) =
+        &file_name_version_ext($file_name);
+    my $new_answer;
+    $env{'form.copy'} = &Apache::lonnet::getfile("/uploaded/$domain/$stu_name/portfolio$directory$file_name");
+    if($env{'form.copy'} eq '-1') {
+        &Apache::lonnet::logthis('problem getting file '.$file_name);
+        $new_answer = 'problem getting file';
+    } else {
+        $new_answer = $answer_name.'.'.$version.'.'.$answer_ext;
+        my $copy_result = &Apache::lonnet::finishuserfileupload(
+                            $stu_name,$domain,'copy',
+		        '/portfolio'.$directory.$new_answer);
+    }    
+    return ($new_answer);
 }
 
 sub file_name_version_ext {