--- loncom/homework/essayresponse.pm 2005/03/31 21:24:29 1.60 +++ loncom/homework/essayresponse.pm 2005/04/05 15:38:57 1.61 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # essay (ungraded) style responses # -# $Id: essayresponse.pm,v 1.60 2005/03/31 21:24:29 albertel Exp $ +# $Id: essayresponse.pm,v 1.61 2005/04/05 15:38:57 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -90,55 +90,13 @@ sub end_essayresponse { my $filename= $ENV{'form.HWFILE'.$part.'_'.$id.'.filename'}; my $portfiles = $ENV{'form.HWPORT'.$part.'_'.$id}; if (( $response =~ /[^\s]/) || ($filename =~ /[^\s]/) || ($portfiles =~ /[^\s]/)) { - my $award; + my $award='DRAFT'; if ($ENV{'form.HWDRAFT'.$part.'_'.$id} eq 'yes') { $award='SUBMITTED'; - } else { - $award='DRAFT'; } my $uploadedflag=0; - if ($filename =~ /[^\s]/) { - my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes"); - $uploadedfiletypes=~s/[^\w\,]//g; - $uploadedfiletypes=','.$uploadedfiletypes.','; - my ($extension)=($filename=~/\.(\w+)$/); - if ($uploadedfiletypes=~/\,$extension\,/i) { - $Apache::lonhomework::results{"resource.$part.$id.uploadedfile"}=$filename; - $Apache::lonhomework::results{"resource.$part.$id.uploadedurl"}= - &Apache::lonnet::userfileupload('HWFILE'.$part.'_'.$id,undef,'essayresponse'); - $uploadedflag=1; - } else { - $award='INVALID_FILETYPE'; - } - } else { - $Apache::lonhomework::results{"resource.$part.$id.uploadedfile"}=""; - $Apache::lonhomework::results{"resource.$part.$id.uploadedurl"}=""; - } - if ($portfiles =~ /[^\s]/) { - $portfiles =~s/,$//; - $Apache::lonhomework::results{"resource.$part.$id.portfiles"}=$portfiles; - my @submitted_files = split /,/,$portfiles; - my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes"); - $uploadedfiletypes=~s/[^\w\,]//g; - $uploadedfiletypes=','.$uploadedfiletypes.','; - foreach (@submitted_files) { - my ($extension)=($_=~/\.(\w+)$/); - unless ($uploadedfiletypes=~/\,$extension\,/i) { - $award='INVALID_FILETYPE'; - } - } - if ($award ne 'INVALID_FILETYPE'){ - my ($dsymb,$crsid,$domain,$name)=&Apache::lonxml::whichuser(); - &Apache::lonnet::unmark_as_readonly($domain,$name,$dsymb.$crsid); - &Apache::lonnet::mark_as_readonly($domain,$name,\@submitted_files,$dsymb.$crsid); - &Apache::lonnet::clear_selected_files($name); - $uploadedflag=1; - } - } else { - my ($dsymb,$crsid,$domain,$name)=&Apache::lonxml::whichuser(); - &Apache::lonnet::unmark_as_readonly($domain,$name,$dsymb.$crsid); - $Apache::lonhomework::results{"resource.$part.$id.portfiles"}=""; - } + &file_submission($part,$id,'filename',$award,\$uploadedflag); + &file_submission($part,$id,'portfiles',$award,\$uploadedflag); $Apache::lonhomework::results{"resource.$part.$id.submission"}=$response; $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$award; my %previous=&Apache::response::check_for_previous($response,$part,$id); @@ -188,6 +146,51 @@ sub end_essayresponse { return $result; } +sub file_submission { + my ($part,$id,$which,$award,$uploadedflag)=@_; + my $files; + if ($which eq 'portfiles') { $files= $ENV{'form.HWPORT'.$part.'_'.$id}; } + if ($which eq 'filename') { + $files = $ENV{'form.HWFILE'.$part.'_'.$id.'.filename'}; + } + + if ($files =~ /[^\s]/) { + $files =~s/,$//; + $Apache::lonhomework::results{"resource.$part.$id.$which"}=$files; + my @submitted_files = split(/,/,$files); + my $uploadedfiletypes= &Apache::lonnet::EXT("resource.$part".'_'."$id.uploadedfiletypes"); + $uploadedfiletypes=~s/[^\w\,]//g; + $uploadedfiletypes=','.$uploadedfiletypes.','; + foreach my $file (@submitted_files) { + my ($extension)=($file=~/\.(\w+)$/); + unless ($uploadedfiletypes=~/\,$extension\,/i) { + $award='INVALID_FILETYPE'; + } + } + if ($award ne 'INVALID_FILETYPE' && ref($uploadedflag)) { + $$uploadedflag=1; + } + if ($award ne 'INVALID_FILETYPE' && $which eq 'portfiles') { + my ($symb,$crsid,$domain,$name)=&Apache::lonxml::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); + } + if ($award ne 'INVALID_FILETYPE' && $which eq 'filename') { + $Apache::lonhomework::results{"resource.$part.$id.uploadedfile"}= + $files; + $Apache::lonhomework::results{"resource.$part.$id.uploadedurl"}= + &Apache::lonnet::userfileupload('HWFILE'.$part.'_'.$id,undef, + 'essayresponse'); + } + } elsif ($which eq 'portfiles' && + $Apache::lonhomework::history{"resource.$part.$id.$which"}) { + my ($symb,$crsid,$domain,$name)=&Apache::lonxml::whichuser(); + &Apache::lonnet::unmark_as_readonly($domain,$name,$symb.$crsid); + $Apache::lonhomework::results{"resource.$part.$id.$which"}=""; + } +} + sub check_collaborators { my ($ncol,$coll) = @_; my %classlist=&Apache::lonnet::dump('classlist',