--- loncom/homework/essayresponse.pm 2008/12/09 00:23:22 1.93 +++ loncom/homework/essayresponse.pm 2008/12/22 14:55:28 1.96 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # essay (ungraded) style responses # -# $Id: essayresponse.pm,v 1.93 2008/12/09 00:23:22 raeburn Exp $ +# $Id: essayresponse.pm,v 1.96 2008/12/22 14:55:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -203,6 +203,7 @@ sub end_essayresponse { if ($target eq 'analyze') { $Apache::lonhomework::analyze{"$part.$id.type"} = 'essayresponse'; + push (@{ $Apache::lonhomework::analyze{"parts"} },"$part.$id"); &Apache::lonhomework::set_bubble_lines(); } } @@ -318,12 +319,13 @@ sub file_submission { if ($which eq 'filename') { &delete_form_items($jspart,$id); } + } else { + push(@accepted_files,$file); } } else { push(@accepted_files,$file); } } - my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes"); $Apache::lonhomework::results{"resource.$part.$id.$which"}=join(',',@accepted_files); if (($$award eq 'INVALID_FILETYPE') || ($award eq 'EXCESS_FILESIZE')) { return; @@ -331,8 +333,8 @@ sub file_submission { if (ref($uploadedflag)) { $$uploadedflag=1; } + my ($symb,$crsid,$domain,$name)=&Apache::lonnet::whichuser(); if ($which eq 'portfiles') { - my ($symb,$crsid,$domain,$name)=&Apache::lonnet::whichuser(); &Apache::lonnet::unmark_as_readonly($domain,$name,[$symb,$crsid]); &Apache::lonnet::mark_as_readonly($domain,$name,\@submitted_files,[$symb,$crsid]); &Apache::lonnet::clear_selected_files($name); @@ -340,9 +342,39 @@ sub file_submission { if ($which eq 'filename') { $Apache::lonhomework::results{"resource.$part.$id.uploadedfile"}= $files; + my $cleanpart = $part; + $cleanpart =~ s/\W/_/g; + my $cleanid = $id; + $cleanid =~ s/\W/_/g; + my ($map,$resid,$res)=&Apache::lonnet::decode_symb($symb); + my $container; + if ($map =~ /^uploaded/) { + (my $prefix,$container) = ($map =~ m{^uploaded/[^/]+/[^/]+/(default|supplemental)_?([^.]*)\.(?:sequence|page)$}); + if (length($container) > 10) { + $container = substr($container,-10,10); + } + if ($container ne '') { + $container = $prefix.'_'.$container; + } else { + $container = $prefix; + } + } else { + ($container) = ($map =~ m{(.+)\.(?:sequence|page)$}); + $container =~ s/\W/_/g; + if (length($container) > 255) { + $container = substr($container,0,254); + } + } + my $subdir = 'essayresponse'; + my %crsdesc = &Apache::lonnet::coursedescription($crsid); + foreach my $item ($crsdesc{'domain'},$crsdesc{'num'},$container,$resid,$cleanpart,$cleanid) { + if ($item ne '') { + $subdir .= '/'.$item; + } + } $Apache::lonhomework::results{"resource.$part.$id.uploadedurl"}= &Apache::lonnet::userfileupload('HWFILE'.$jspart.'_'.$id,undef, - 'essayresponse'); + $subdir); &Apache::lonnet::delenv($env{'form.HWFILE'.$jspart.'_'.$id}); } } elsif ($which eq 'portfiles' &&