--- loncom/homework/grades.pm	2004/01/28 16:25:05	1.171
+++ loncom/homework/grades.pm	2004/02/16 18:28:25	1.175
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.171 2004/01/28 16:25:05 albertel Exp $
+# $Id: grades.pm,v 1.175 2004/02/16 18:28:25 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -89,10 +89,15 @@ sub getpartlist {
 
 # --- Get the symbolic name of a problem and the url
 sub get_symb_and_url {
-    my ($request) = @_;
+    my ($request,$silent) = @_;
     (my $url=$ENV{'form.url'}) =~ s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
     my $symb=($ENV{'form.symb'} ne '' ? $ENV{'form.symb'} : (&Apache::lonnet::symbread($url)));
-    if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; }
+    if ($symb eq '') { 
+	if (!$silent) {
+	    $request->print("Unable to handle ambiguous references:$url:.");
+	    return ();
+	}
+    }
     return ($symb,$url);
 }
 
@@ -3447,34 +3452,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>
@@ -3495,13 +3494,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>
@@ -3821,7 +3843,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);
@@ -3853,7 +3875,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 {
@@ -4155,11 +4177,11 @@ SCANTRONFORM
 						 'last student');
     }
     &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
-    my $lasttime = &Time::HiRes::time()-$start;
-    $r->print("<p>took $lasttime</p>");
+#    my $lasttime = &Time::HiRes::time()-$start;
+#    $r->print("<p>took $lasttime</p>");
 
     $navmap->untieHashes();
-    $r->print("<p>Done</p>");
+    $r->print("</form><p>Done</p>");
     $r->print(&show_grading_menu_form($symb,$url));
     return '';
 }
@@ -4171,7 +4193,7 @@ sub scantron_upload_scantron_data {
 							  'domainid');
     my $domsel=&Apache::loncommon::select_dom_form($ENV{'request.role.domain'},
 						   'domainid');
-    my $default_form_data=&defaultFormData(&get_symb_and_url($r));
+    my $default_form_data=&defaultFormData(&get_symb_and_url($r,1));
     $r->print(<<UPLOAD);
 <script type="text/javascript" language="javascript">
     function checkUpload(formname) {
@@ -4227,7 +4249,15 @@ sub scantron_upload_scantron_data_save {
     $r->print(&Apache::lonnet::finishuserfileupload($ENV{'form.courseid'},
 						    $ENV{'form.domainid'},
 						    $home,'upfile',$fname));
-    $r->print(&show_grading_menu_form(&get_symb_and_url($r)));
+    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 '';
 }