[LON-CAPA-cvs] cvs: loncom /homework essayresponse.pm
raeburn
raeburn@source.lon-capa.org
Sun, 21 Dec 2008 19:09:15 -0000
raeburn Sun Dec 21 19:09:15 2008 EDT
Modified files:
/loncom/homework essayresponse.pm
Log:
- Releated to bug 5760.
- Add some hierarchy to the storage of files uploaded to essayresponse/drop box problems.
- Prevent a user overwriting an existing file with the same name submitted to a different response item in the same course or a differet course.
- Files are saved in user's userfiles directory in essayresponse/$cdom/$cnum/$map/$mapid/$part/$respid
Index: loncom/homework/essayresponse.pm
diff -u loncom/homework/essayresponse.pm:1.94 loncom/homework/essayresponse.pm:1.95
--- loncom/homework/essayresponse.pm:1.94 Mon Dec 15 20:00:21 2008
+++ loncom/homework/essayresponse.pm Sun Dec 21 19:09:15 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# essay (ungraded) style responses
#
-# $Id: essayresponse.pm,v 1.94 2008/12/15 20:00:21 raeburn Exp $
+# $Id: essayresponse.pm,v 1.95 2008/12/21 19:09:15 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -332,8 +332,8 @@
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);
@@ -341,9 +341,39 @@
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' &&