--- loncom/homework/essayresponse.pm	2004/12/14 20:38:51	1.55
+++ loncom/homework/essayresponse.pm	2005/02/10 22:43:15	1.59
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # essay (ungraded) style responses
 #
-# $Id: essayresponse.pm,v 1.55 2004/12/14 20:38:51 albertel Exp $
+# $Id: essayresponse.pm,v 1.59 2005/02/10 22:43:15 banghart Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -108,14 +108,12 @@ sub end_essayresponse {
 	    $Apache::lonhomework::results{"resource.$part.$id.collaborators"}=$collaborators
 		if ($collaborators ne $previous_list);
 	}
-	if ( defined($ENV{'form.submitted'}) &&
-	     $ENV{'form.submitted'} eq 'scantron' ) {
+	if (  &Apache::response::submitted('scantron') ) {
 	    $increment=&Apache::response::scored_response($part,$id);
-	} elsif ( defined($ENV{'form.submitted'}) ) {
+	} elsif ( &Apache::response::submitted() ) {
 	    my $response      = $ENV{'form.HWVAL_'.$id};
             my $filename= $ENV{'form.HWFILE'.$part.'_'.$id.'.filename'};
             my $portfiles = $ENV{'form.HWPORT'.$part.'_'.$id};
-            &Apache::lonnet::logthis("portfiles now $portfiles");
 	    if (( $response =~ /[^\s]/) || ($filename =~ /[^\s]/) || ($portfiles =~ /[^\s]/)) {
  		my $award;
         	if ($ENV{'form.HWDRAFT'.$part.'_'.$id} eq 'yes') {
@@ -145,12 +143,25 @@ sub end_essayresponse {
                     $portfiles =~s/,$//;
                     $Apache::lonhomework::results{"resource.$part.$id.portfiles"}=$portfiles;
                     my @submitted_files = split /,/,$portfiles;
-		    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;
+ 	            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"}="";
     	        }
 		$Apache::lonhomework::results{"resource.$part.$id.submission"}=$response;