--- loncom/homework/grades.pm	2004/02/09 22:16:32	1.173
+++ loncom/homework/grades.pm	2004/02/24 23:22:24	1.177
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.173 2004/02/09 22:16:32 albertel Exp $
+# $Id: grades.pm,v 1.177 2004/02/24 23:22:24 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -526,18 +526,28 @@ sub verifyreceipt {
 
     my ($string,$contents,$matches) = ('','',0);
     my (undef,undef,$fullname) = &getclasslist('all','0');
-
+    
+    my $receiptparts=0;
+    if ($ENV{"course.$courseid.receiptalg"} eq 'receipt2') { $receiptparts=1; }
+    my $parts=['0'];
+    if ($receiptparts) { ($parts)=&response_type($url,$symb); }
+    $request->print("got Parts ".join(':',@$parts));
     foreach (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) {
 	my ($uname,$udom)=split(/\:/);
-	if ($receipt eq 
-	    &Apache::lonnet::ireceipt($uname,$udom,$courseid,$symb)) {
-	    $contents.='<tr bgcolor="#ffffe6"><td>&nbsp;'."\n".
-		'<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom.
-		'\')"; TARGET=_self>'.$$fullname{$_}.'</a>&nbsp;</td>'."\n".
-		'<td>&nbsp;'.$uname.'&nbsp;</td>'.
-		'<td>&nbsp;'.$udom.'&nbsp;</td></tr>'."\n";
-	    
-	    $matches++;
+	foreach my $part (@$parts) {
+	    if ($receipt eq &Apache::lonnet::ireceipt($uname,$udom,$courseid,$symb,$part)) {
+		$contents.='<tr bgcolor="#ffffe6"><td>&nbsp;'."\n".
+		    '<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom.
+		    '\')"; TARGET=_self>'.$$fullname{$_}.'</a>&nbsp;</td>'."\n".
+		    '<td>&nbsp;'.$uname.'&nbsp;</td>'.
+		    '<td>&nbsp;'.$udom.'&nbsp;</td>';
+		if ($receiptparts) {
+		    $contents.='<td>&nbsp;'.$part.'&nbsp;</td>';
+		}
+		$contents.='</tr>'."\n";
+		
+		$matches++;
+	    }
 	}
     }
     if ($matches == 0) {
@@ -550,8 +560,11 @@ sub verifyreceipt {
 	    '<table border="0"><tr bgcolor="#e6ffff">'."\n".
 	    '<td><b>&nbsp;Fullname&nbsp;</b></td>'."\n".
 	    '<td><b>&nbsp;Username&nbsp;</b></td>'."\n".
-	    '<td><b>&nbsp;Domain&nbsp;</b></td></tr>'."\n".
-	    $contents.
+	    '<td><b>&nbsp;Domain&nbsp;</b></td>';
+	if ($receiptparts) {
+	    $string.='<td>&nbsp;Problem Part&nbsp;</td>';
+	}
+	$string.='</tr>'."\n".$contents.
 	    '</table></td></tr></table>'."\n";
     }
     return $string.&show_grading_menu_form($symb,$url);
@@ -3452,34 +3465,28 @@ sub scantron_selectphase {
         $default_form_data
         <table width="100%" border="0">
           <tr bgcolor="#e6ffff">
-            <td>
-              &nbsp;<b>Specify file location and which Folder/Sequence to grade</b>
+            <td colspan="2">
+              &nbsp;<b>Specify file and which Folder/Sequence to grade</b>
             </td>
           </tr>
           <tr bgcolor="#ffffe6">
-            <td>
-               Sequence to grade: $sequence_selector
-	    </td>
+            <td> Sequence to grade: </td><td> $sequence_selector </td>
           </tr>
           <tr bgcolor="#ffffe6">
-            <td>
-		Filename of scoring office file: $file_selector
-	    </td>
+            <td> Filename of scoring office file: </td><td> $file_selector </td>
           </tr>
           <tr bgcolor="#ffffe6">
-            <td>
-              Format of data file: $format_selector
-	    </td>
+            <td> Format of data file: </td><td> $format_selector </td>
           </tr>
           <tr bgcolor="#ffffe6">
             <td>
 <!-- FIXME this is lazy, a single parse of the set should let me know what this is -->
-              Last line to expect an answer on: 
+              Last line to expect an answer on: </td><td>
                 <input type="text" name="scantron_maxbubble" />
 	    </td>
           </tr>
           <tr bgcolor="#ffffe6">
-            <td>
+            <td colspan="2">
               <input type="submit" value="Validate Scantron Records" />
             </td>
           </tr>
@@ -3500,13 +3507,36 @@ SCANTRONFORM
         <table width="100%" border="0">
           <tr bgcolor="#e6ffff">
             <td>
-              Specify a Scantron data file to upload.
+              &nbsp;<b>Specify a Scantron data file to upload.</b>
             </td>
           </tr>
           <tr bgcolor="#ffffe6">
             <td>
 SCANTRONFORM
-        &scantron_upload_scantron_data($r);
+    my $default_form_data=&defaultFormData(&get_symb_and_url($r,1));
+    my $cdom= $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
+    my $cnum= $ENV{'course.'.$ENV{'request.course.id'}.'.num'};
+    $r->print(<<UPLOAD);
+              <script type="text/javascript" language="javascript">
+    function checkUpload(formname) {
+	if (formname.upfile.value == "") {
+	    alert("Please use the browse button to select a file from your local directory.");
+	    return false;
+	}
+	formname.submit();
+    }
+              </script>
+
+              <form enctype='multipart/form-data' action='/adm/grades' name='rules' method='post'>
+                $default_form_data
+                <input name='courseid' type='hidden' value='$cnum' />
+                <input name='domainid' type='hidden' value='$cdom' />
+                <input name='command' value='scantronupload_save' type='hidden' />
+                File to upload:<input type="file" name="upfile" size="50" />
+                <br />
+                <input type="button" onClick="javascript:checkUpload(this.form);" value="Upload Scantron Data" />
+              </form>
+UPLOAD
 
         $r->print(<<SCANTRONFORM);
             </td>
@@ -3826,7 +3856,7 @@ sub scantron_getfile {
     } else {
 	$scanlines{'skipped'}=[(split("\n",$lines,-1))];
     }
-    my @tmp=&Apache::lonnet::dump('scantrondata',$cdom,$cname);
+    my @tmp=&Apache::lonnet::dump('nohist_scantrondata',$cdom,$cname);
     if ($tmp[0] =~ /^(error:|no_such_host)/) { @tmp=(); }
     my %scan_data = @tmp;
     return (\%scanlines,\%scan_data);
@@ -3858,7 +3888,7 @@ sub scantron_putfile {
     &lonnet_putfile(join("\n",@{$scanlines->{'skipped'}}),
 		    $prefix.'skipped_'.
 		    $ENV{'form.scantron_selectfile'});
-    &Apache::lonnet::put('scantrondata',$scan_data,$cdom,$cname);
+    &Apache::lonnet::put('nohist_scantrondata',$scan_data,$cdom,$cname);
 }
 
 sub scantron_get_line {
@@ -3975,7 +4005,7 @@ sub scantron_get_correction {
 				       'scantron_username','scantron_domain'));
 	$r->print(": <input type='text' name='scantron_username' value='' />");
 	$r->print("\n@".
-		 &Apache::loncommon::select_dom_form(undef,'scantron_domain'));
+		 &Apache::loncommon::select_dom_form($ENV{'request.role..domain'},'scantron_domain'));
 
 	$r->print('</li>');
     } elsif ($error eq 'doublebubble') {
@@ -4232,10 +4262,15 @@ sub scantron_upload_scantron_data_save {
     $r->print(&Apache::lonnet::finishuserfileupload($ENV{'form.courseid'},
 						    $ENV{'form.domainid'},
 						    $home,'upfile',$fname));
-    $r->print('<br /><form action="/adm/grades" method="post">'."\n".
-	'<input type="hidden" name="command" value="scantronupload" />'."\n".
-	'<input type="submit" name="submit" value="Do Another Upload" />'."\n".
-	'</form>'."\n");
+    my ($symb,$url)=&get_symb_and_url($r);
+    if ($symb) {
+	$r->print(&show_grading_menu_form(&get_symb_and_url($r)));
+    } else {
+	$r->print('<br /><form action="/adm/grades" method="post">'."\n".
+		  '<input type="hidden" name="command" value="scantronupload" />'."\n".
+		  '<input type="submit" name="submit" value="Do Another Upload" />'."\n".
+		  '</form>'."\n");
+    }
     return '';
 }