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

raeburn raeburn@source.lon-capa.org
Thu, 01 Jan 2009 16:45:32 -0000


raeburn		Thu Jan  1 16:45:32 2009 EDT

  Modified files:              
    /loncom/homework	essayresponse.pm 
  Log:
  - Regexp will now correctly extract path and filename for portfolio files at the top level of a user's portfolio.
  - Correction to logic for storage of directory listing for specific portfolio paths for later reuse. 
  
  
Index: loncom/homework/essayresponse.pm
diff -u loncom/homework/essayresponse.pm:1.96 loncom/homework/essayresponse.pm:1.97
--- loncom/homework/essayresponse.pm:1.96	Mon Dec 22 14:55:28 2008
+++ loncom/homework/essayresponse.pm	Thu Jan  1 16:45:32 2009
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # essay (ungraded) style responses
 #
-# $Id: essayresponse.pm,v 1.96 2008/12/22 14:55:28 raeburn Exp $
+# $Id: essayresponse.pm,v 1.97 2009/01/01 16:45:32 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -294,11 +294,14 @@
                 }
             } else {
                 my ($symb,$crsid,$udom,$uname) = &Apache::lonnet::whichuser();
-                my ($path,$filename) = ($file =~ m{^(.+)/([^/]+)$});
+                my ($path,$filename) = ($file =~ m{^(.*/)([^/]+)$});
                 my $fullpath = '/userfiles/portfolio'.$path;
                 if (!exists($dirlist{$fullpath})) {
                     my @list = &Apache::lonnet::dirlist($fullpath,$udom,$uname,1);
-                    foreach my $dir_line (@list) {
+                    $dirlist{$fullpath} = \@list;
+                }
+                if (ref($dirlist{$fullpath}) eq 'ARRAY') {
+                    foreach my $dir_line (@{$dirlist{$fullpath}}) {
                         my ($fname,$dom,undef,$testdir,undef,undef,undef,undef,
                             $size,undef,$mtime,undef,undef,undef,$obs,undef) = 
                         split(/\&/,$dir_line,16);
@@ -310,7 +313,6 @@
                             last;
                         }
                     }
-                    $dirlist{$fullpath} = \@list;
                 }
             }
             if (ref($totalsize)) {
@@ -319,6 +321,7 @@
                     if ($which eq 'filename') {
                         &delete_form_items($jspart,$id);
                     }
+                    last;
                 } else {
                     push(@accepted_files,$file);
                 }