--- loncom/homework/grades.pm	2010/04/12 12:55:18	1.611
+++ loncom/homework/grades.pm	2010/04/13 10:21:21	1.614
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.611 2010/04/12 12:55:18 www Exp $
+# $Id: grades.pm,v 1.614 2010/04/13 10:21:21 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -617,7 +617,6 @@ sub jscriptNform {
 	"\n");
     $jscript.= '<form action="/adm/grades" method="post" name="onestudent">'."\n".
 	'<input type="hidden" name="symb"    value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
-	'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n".
 	'<input type="hidden" name="Status"  value="'.$stu_status.'" />'."\n".
 	'<input type="hidden" name="command" value="submission" />'."\n".
 	'<input type="hidden" name="student" value="" />'."\n".
@@ -801,7 +800,7 @@ sub verifyreceipt {
 	    $contents.
 	    &Apache::loncommon::end_data_table()."\n";
     }
-    return $string.&show_grading_menu_form($symb);
+    return $string;
 }
 
 #--- This is called by a number of programs.
@@ -920,7 +919,6 @@ LISTJAVASCRIPT
 	'<input type="hidden" name="submitonly"  value="'.$submitonly.'" />'."\n".
 	'<input type="hidden" name="handgrade"   value="'.$env{'form.handgrade'}.'" /><br />'."\n".
 	'<input type="hidden" name="showgrading" value="'.$env{'form.showgrading'}.'" /><br />'."\n".
-	'<input type="hidden" name="saveState"   value="'.$env{'form.saveState'}.'" />'."\n".
 	'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
 	'<input type="hidden" name="saveStatusOld" value="'.$saveStatus.'" />'."\n";
 
@@ -1084,7 +1082,6 @@ LISTJAVASCRIPT
     } elsif ($ctr == 1) {
 	$gradeTable =~ s/type="checkbox"/type="checkbox" checked="checked"/;
     }
-    $gradeTable.=&show_grading_menu_form($symb);
     $request->print($gradeTable);
     return '';
 }
@@ -1898,7 +1895,6 @@ sub submission {
 	$request->print('<span class="LC_warning">Unable to view requested student.('.
 			$uname.':'.$udom.' in section '.$usec.' in course id '.
 			$env{'request.course.id'}.')</span>');
-	$request->print(&show_grading_menu_form($symb));
 	return;
     }
 
@@ -1956,7 +1952,6 @@ sub submission {
 	my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status'));
 	$request->print('<form action="/adm/grades" method="post" name="SCORE" enctype="multipart/form-data">'."\n".
 			'<input type="hidden" name="command"    value="handgrade" />'."\n".
-			'<input type="hidden" name="saveState"  value="'.$env{'form.saveState'}.'" />'."\n".
 			'<input type="hidden" name="Status"     value="'.$stu_status.'" />'."\n".
 			'<input type="hidden" name="overRideScore" value="'.$overRideScore.'" />'."\n".
 			'<input type="hidden" name="refresh"    value="off" />'."\n".
@@ -2228,10 +2223,6 @@ KEYWORDS
 	    'onclick="javascript:checksubmit(this.form,\'Grade Student\',\''
 	    .$counter.'\');" target="_self" /> &nbsp;'."\n" if (&canmodify($usec));
 	$toGrade.='</div>'."\n";
-	if (($env{'form.command'} eq 'submission') || 
-	    ($env{'form.command'} eq 'processGroup' && $counter == $total)) {
-	    $toGrade.='</form>'.&show_grading_menu_form($symb); 
-	}
 	$request->print($toGrade);
 	return;
     } else {
@@ -2331,7 +2322,6 @@ KEYWORDS
         $endform.="<input type='hidden' value='".&get_increment().
             "' name='increment' />";
 	$endform.='</td></tr></table></form>';
-	$endform.=&show_grading_menu_form($symb);
 	$request->print($endform);
     }
     return '';
@@ -2704,7 +2694,6 @@ sub processHandGrade {
 	my $the_end = '<h3><span class="LC_info">'.&mt('LON-CAPA User Message').'</span></h3><br />'."\n";
 	$the_end.=&mt('<b>Message: </b> No more students for this section or class.').'<br /><br />'."\n";
 	$the_end.=&mt('Click on the button below to return to the grading menu.').'<br /><br />'."\n";
-	$the_end.=&show_grading_menu_form($symb);
 	$request->print($the_end);
     }
     return '';
@@ -3289,7 +3278,6 @@ sub viewgrades {
 	'<input type="hidden" name="symb"    value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
 	'<input type="hidden" name="command" value="editgrades" />'."\n".
 	&build_section_inputs().
-	'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n".
 	'<input type="hidden" name="Status" value="'.$env{'stu_status'}.'" />'."\n".
 
     my ($common_header,$specific_header);
@@ -3436,7 +3424,6 @@ sub viewgrades {
 	        $section_display, $stu_status).
 	    '</span>';
     }
-    $result.=&show_grading_menu_form($symb);
     return $result;
 }
 
@@ -3719,8 +3706,7 @@ sub editgrades {
 		&Apache::loncommon::end_data_table_row();
 	}
     }
-    $result .= &Apache::loncommon::end_data_table().
-	&show_grading_menu_form($symb);
+    $result .= &Apache::loncommon::end_data_table();
     my $msg = '<p><b>'.
 	&mt('Number of records updated = [_1] for [quant,_2,student].',
 	    $rec_update,$count).'</b><br />'.
@@ -3856,7 +3842,6 @@ to this page if the data selected is ins
 <input type="hidden" name="upfile_associate" 
                                        value="$env{'form.upfile_associate'}" />
 <input type="hidden" name="symb"       value="$symb" />
-<input type="hidden" name="saveState"  value="$env{'form.saveState'}" />
 <input type="hidden" name="command"    value="csvuploadoptions" />
 <hr />
 ENDPICK
@@ -3934,7 +3919,6 @@ sub upcsvScores_form {
 <form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload">
 <input type="hidden" name="symb" value="$symb" />
 <input type="hidden" name="command" value="csvuploadmap" />
-<input type="hidden" name="saveState"  value="$env{'form.saveState'}" />
 $upfile_select
 <br /><input type="button" onclick="javascript:checkUpload(this.form);" value="$upload" />
 <label><input type="checkbox" name="noFirstLine" />$ignore</label>
@@ -3944,7 +3928,6 @@ ENDUPFORM
                            &mt("How do I create a CSV file from a spreadsheet"))
     .'</td></tr></table>'."\n";
     $result.='</td></tr></table><br /><br />'."\n";
-    $result.=&show_grading_menu_form($symb);
     return $result;
 }
 
@@ -3991,7 +3974,6 @@ sub csvuploadmap {
 	}
     }
     &csvuploadmap_footer($request,$i,$keyfields);
-    $request->print(&show_grading_menu_form($symb));
 
     return '';
 }
@@ -4035,7 +4017,6 @@ ENDPICK
     # FIXME do a check for any invalid user ids?...
     $request->print('<input type="submit" value="Assign Grades" /><br />
 <hr /></form>'."\n");
-    $request->print(&show_grading_menu_form($symb));
     return '';
 }
 
@@ -4164,7 +4145,6 @@ sub csvuploadassign {
 	$request->print(join(', ',@notallowed));
     }
     $request->print("<br />\n");
-    $request->print(&show_grading_menu_form($symb));
     return $error_msg;
 }
 #------------- end of section for handling csv file upload ---------
@@ -4248,8 +4228,7 @@ LISTJAVASCRIPT
     my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status'));
     $result.='<input type="hidden" name="Status"  value="'.$stu_status.'" />'."\n".
 	'<input type="hidden" name="command" value="displayPage" />'."\n".
-	'<input type="hidden" name="symb"    value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
-	'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."<br />\n";
+	'<input type="hidden" name="symb"    value="'.&Apache::lonenc::check_encrypt($symb).'" />'."<br />\n";
 
     $result.='&nbsp;<b>'.&mt('Use CODE').': </b> <input type="text" name="CODE" value="" /> <br />'."\n";
 
@@ -4295,7 +4274,6 @@ LISTJAVASCRIPT
     $studentTable.='<input type="button" '.
                    'onclick="javascript:checkPickOne(this.form);" value="'.&mt('Next').' &rarr;" /></form>'."\n";
 
-    $studentTable.=&show_grading_menu_form($symb);
     $request->print($studentTable);
 
     return '';
@@ -4350,7 +4328,6 @@ sub displayPage {
 
     if (!&canview($usec)) {
 	$request->print('<span class="LC_warning">'.&mt('Unable to view requested student. ([_1])',$env{'form.student'}).'</span>');
-	$request->print(&show_grading_menu_form($symb));
 	return;
     }
     my $result='<h3><span class="LC_info">&nbsp;'.$env{'form.title'}.'</span></h3>';
@@ -4368,14 +4345,12 @@ sub displayPage {
     my $navmap = Apache::lonnavmaps::navmap->new();
     unless (ref($navmap)) {
         $request->print(&navmap_errormsg());
-        $request->print(&show_grading_menu_form($symb));
         return;
     }
     my ($mapUrl, $id, $resUrl)=&Apache::lonnet::decode_symb($env{'form.page'});
     my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps
     if (!$map) {
 	$request->print('<span class="LC_warning">'.&mt('Unable to view requested sequence. ([_1])',$resUrl).'</span>');
-	$request->print(&show_grading_menu_form($symb));
 	return; 
     }
     my $iterator = $navmap->getIterator($map->map_start(),
@@ -4388,8 +4363,7 @@ sub displayPage {
 	'<input type="hidden" name="page"    value="'.$pageTitle.'" />'."\n".
 	'<input type="hidden" name="title"   value="'.$env{'form.title'}.'" />'."\n".
 	'<input type="hidden" name="symb"    value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
-	'<input type="hidden" name="overRideScore" value="no" />'."\n".
-	'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n";
+	'<input type="hidden" name="overRideScore" value="no" />'."\n";
 
     if (defined($env{'form.CODE'})) {
 	$studentTable.=
@@ -4491,7 +4465,6 @@ sub displayPage {
         '<input type="button" value="'.&mt('Save').'" '.
         'onclick="javascript:checkSubmitPage(this.form,'.$question.');" />'.
         '</form>'."\n";
-    $studentTable.=&show_grading_menu_form($symb);
     $request->print($studentTable);
 
     return '';
@@ -4629,7 +4602,6 @@ sub updateGradeByPage {
     my $usec=$classlist->{$env{'form.student'}}[5];
     if (!&canmodify($usec)) {
 	$request->print('<span class="LC_warning">'.&mt('Unable to modify requested student ([_1])',$env{'form.student'}).'</span>');
-	$request->print(&show_grading_menu_form($env{'form.symb'}));
 	return;
     }
     my $result='<h3><span class="LC_info">&nbsp;'.$env{'form.title'}.'</span></h3>';
@@ -4648,7 +4620,6 @@ sub updateGradeByPage {
     my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps
     if (!$map) {
 	$request->print('<span class="LC_warning">'.&mt('Unable to grade requested sequence ([_1]).',$resUrl).'</span>');
-	$request->print(&show_grading_menu_form($symb));
 	return; 
     }
     my $iterator = $navmap->getIterator($map->map_start(),
@@ -4774,7 +4745,6 @@ sub updateGradeByPage {
     }
 
     $studentTable.=&Apache::loncommon::end_data_table();
-    $studentTable.=&show_grading_menu_form($env{'form.symb'});
     my $grademsg=($changeflag == 0 ? &mt('No score was changed or updated.') :
 		  &mt('The scores were changed for [quant,_1,problem].',
 		  $changeflag));
@@ -4852,8 +4822,7 @@ the homework problem.
 
 sub defaultFormData {
     my ($symb)=@_;
-    return '<input type="hidden" name="symb"    value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
-     '<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />';
+    return '<input type="hidden" name="symb"    value="'.&Apache::lonenc::check_encrypt($symb).'" />';
 }
 
 
@@ -5148,7 +5117,6 @@ sub scantron_selectphase {
         return;
     }
     my $default_form_data=&defaultFormData($symb);
-    my $grading_menu_button=&show_grading_menu_form($symb);
     my $file_selector=&scantron_uploads($file2grade);
     my $format_selector=&scantron_scantab();
     my $CODE_selector=&scantron_CODElist();
@@ -5310,7 +5278,6 @@ sub scantron_selectphase {
               &Apache::loncommon::end_data_table_row()."\n".
               &Apache::loncommon::end_data_table()."\n".
               '</form><br />');
-    $r->print($grading_menu_button);
     return;
 }
 
@@ -6235,7 +6202,7 @@ sub scantron_do_warning {
 <input type="hidden" name="command" value="scantron_validate" />
 ');
     }
-    $r->print("</form><br />".&show_grading_menu_form($symb));
+    $r->print("</form><br />");
     return '';
 }
 
@@ -6383,7 +6350,7 @@ sub scantron_validate_file {
 	    $r->print(" ".&mt("this scanline saving it for later."));
 	}
     }
-    $r->print(" </form><br />".&show_grading_menu_form($symb));
+    $r->print(" </form><br />");
     return '';
 }
 
@@ -7646,7 +7613,6 @@ SCANTRONFORM
     if ($ssi_error) {
 	$r->print("</form>");
 	&ssi_print_error($r);
-	$r->print(&show_grading_menu_form($symb));
         &Apache::lonnet::remove_lock($lock);
 	return '';		# Dunno why the other returns return '' rather than just returning.
     }
@@ -7724,7 +7690,6 @@ SCANTRONFORM
             $ssi_error = 0; # So end of handler error message does not trigger.
             $r->print("</form>");
             &ssi_print_error($r);
-            $r->print(&show_grading_menu_form($symb));
             &Apache::lonnet::remove_lock($lock);
             return '';      # Why return ''?  Beats me.
         }
@@ -7752,7 +7717,6 @@ SCANTRONFORM
                     $ssi_error = 0; # So end of handler error message does not trigger.
                     $r->print("</form>");
                     &ssi_print_error($r);
-                    $r->print(&show_grading_menu_form($symb));
                     &Apache::lonnet::remove_lock($lock);
                     delete($completedstudents{$uname});
                     return '';
@@ -7808,7 +7772,6 @@ SCANTRONFORM
 #    $r->print("<p>took $lasttime</p>");
 
     $r->print("</form>");
-    $r->print(&show_grading_menu_form($symb));
     return '';
 }
 
@@ -7944,9 +7907,7 @@ sub scantron_upload_scantron_data_save {
 	!&Apache::lonnet::allowed('usc',
 			    $env{'form.domainid'}.'_'.$env{'form.courseid'})) {
 	$r->print(&mt("You are not allowed to upload bubblesheet data to the requested course.")."<br />");
-	if ($symb) {
-	    $r->print(&show_grading_menu_form($symb));
-	} else {
+	unless ($symb) {
 	    $r->print($doanotherupload);
 	}
 	return '';
@@ -7974,7 +7935,7 @@ sub scantron_upload_scantron_data_save {
 	}
     }
     if ($symb) {
-	$r->print(&scantron_selectphase($r,$uploadedfile));
+	$r->print(&scantron_selectphase($r,$uploadedfile,$symb));
     } else {
 	$r->print($doanotherupload);
     }
@@ -8087,7 +8048,6 @@ sub scantron_download_scantron_data {
 	    '.&mt('The requested file name was invalid.').'
         </p>
 ');
-	$r->print(&show_grading_menu_form($symb));
 	return;
     }
     my $orig='/uploaded/'.$cdom.'/'.$cname.'/scantron_orig_'.$file;
@@ -8110,14 +8070,12 @@ sub scantron_download_scantron_data {
 	      '<a href="'.$skipped.'">','</a>').'
     </p>
 ');
-    $r->print(&show_grading_menu_form($symb));
     return '';
 }
 
 sub checkscantron_results {
     my ($r,$symb) = @_;
     if (!$symb) {return '';}
-    my $grading_menu_button=&show_grading_menu_form($symb);
     my $cid = $env{'request.course.id'};
     my %lettdig = &letter_to_digits();
     my $numletts = scalar(keys(%lettdig));
@@ -8270,7 +8228,7 @@ sub checkscantron_results {
                  &Apache::loncommon::end_data_table()).'<br />'.
                  &mt('Differences can occur if submissions were modified using manual grading after a bubblesheet grading pass.').'<br />'.&mt('If unexpected discrepancies were detected, it is recommended that you inspect the original bubblesheets.');  
     }
-    $r->print('</form><br />'.$grading_menu_button);
+    $r->print('</form><br />');
     return;
 }
 
@@ -8412,16 +8370,11 @@ sub letter_to_digits {
 
 #-------------------------- Menu interface -------------------------
 #
-#--- Show a Grading Menu button - Calls the next routine ---
-sub show_grading_menu_form {
-    my ($symb)=@_;
-    my $result.='<br /><form action="/adm/grades" method="post">'."\n".
-	'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
-	'<input type="hidden" name="saveState"  value="'.$env{'form.saveState'}.'" />'."\n".
-	'<input type="hidden" name="command" value="gradingmenu" />'."\n".
-	'<input type="submit" name="submit" value="'.&mt('Grading Menu').'" />'."\n".
-	'</form>'."\n";
-    return $result;
+#--- Href with symb and command ---
+
+sub href_symb_cmd {
+    my ($symb,$cmd)=@_;
+    return '/adm/grades?symb='.&HTML::Entities::encode(&Apache::lonenc::check_encrypt($symb),'<>&"').'&command='.$cmd;
 }
 
 sub grading_menu {
@@ -8554,7 +8507,6 @@ sub submit_options_sequence {
             </div>
         </div>
   </form>';
-    $result .= &show_grading_menu_form($symb);
     return $result;
 }
 
@@ -8580,7 +8532,6 @@ sub submit_options_table {
             </div>
         </div>
   </form>';
-    $result .= &show_grading_menu_form($symb);
     return $result;
 }
 
@@ -8610,7 +8561,6 @@ sub submit_options {
 
 
   </form>';
-    $result .= &show_grading_menu_form($symb);
     return $result;
 }
 
@@ -8822,7 +8772,6 @@ ENDUPFORM
 <form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload">
 <input type="hidden" name="symb" value="$symb" />
 <input type="hidden" name="command" value="processclickerfile" />
-<input type="hidden" name="saveState"  value="$env{'form.saveState'}" />
 <input type="file" name="upfile" size="50" />
 <br /><label>$type: $selectform</label>
 <br /><label><input type="radio" name="gradingmechanism" value="attendance"$checked{'attendance'} onclick="sanitycheck()" />$attendance </label>
@@ -8840,7 +8789,6 @@ ENDUPFORM
 ENDUPFORM
     $result.='</td></tr></table>'."\n".
              '</td></tr></table><br /><br />'."\n";
-    $result.=&show_grading_menu_form($symb);
     return $result;
 }
 
@@ -8854,11 +8802,11 @@ sub process_clicker_file {
     my $result='';
     if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) {
 	$result.='<span class="LC_error">'.&mt('You need to specify a clicker ID for the correct answer').'</span>';
-	return $result.&show_grading_menu_form($symb);
+	return $result;
     }
     if (($env{'form.gradingmechanism'} eq 'given') && ($env{'form.givenanswer'}!~/\S/)) {
         $result.='<span class="LC_error">'.&mt('You need to specify the correct answer').'</span>';
-        return $result.&show_grading_menu_form($symb);
+        return $result;
     }
     my $foundgiven=0;
     if ($env{'form.gradingmechanism'} eq 'given') {
@@ -8905,7 +8853,7 @@ sub process_clicker_file {
         $result.="</p>\n";
 	if ($number==0) {
 	    $result.='<span class="LC_error">'.&mt('No IDs found to determine correct answer').'</span>';
-	    return $result.&show_grading_menu_form($symb);
+	    return $result;
 	}
     }
     if (length($env{'form.upfile'}) < 2) {
@@ -8913,7 +8861,7 @@ sub process_clicker_file {
 		     '<span class="LC_error">',
 		     '</span>',
 		     '<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>');
-        return $result.&show_grading_menu_form($symb);
+        return $result;
     }
 
 # Were able to get all the info needed, now analyze the file
@@ -8928,7 +8876,6 @@ sub process_clicker_file {
 <form method="post" action="/adm/grades" name="clickeranalysis">
 <input type="hidden" name="symb" value="$symb" />
 <input type="hidden" name="command" value="assignclickergrades" />
-<input type="hidden" name="saveState"  value="$env{'form.saveState'}" />
 <input type="hidden" name="gradingmechanism" value="$env{'form.gradingmechanism'}" />
 <input type="hidden" name="pcorrect" value="$env{'form.pcorrect'}" />
 <input type="hidden" name="pincorrect" value="$env{'form.pincorrect'}" />
@@ -8953,7 +8900,7 @@ ENDHEADER
              '<br />';
     if (($env{'form.gradingmechanism'} eq 'given') && ($number!=$foundgiven)) {
        $result.='<span class="LC_error">'.&mt('Number of given answers does not agree with number of questions in file.').'</span>';
-       return $result.&show_grading_menu_form($symb);
+       return $result;
     } 
 # Remember Question Titles
 # FIXME: Possibly need delimiter other than ":"
@@ -9015,7 +8962,7 @@ ENDHEADER
     }
     $result.='</form></td></tr></table>'."\n".
              '</td></tr></table><br /><br />'."\n";
-    return $result.&show_grading_menu_form($symb);
+    return $result;
 }
 
 sub iclicker_eval {
@@ -9185,7 +9132,7 @@ ENDHEADER
     $result.='<br />'.&mt('Successfully stored grades for [quant,_1,student].',$storecount).
              '</td></tr></table>'."\n".
              '</td></tr></table><br /><br />'."\n";
-    return $result.&show_grading_menu_form($symb);
+    return $result;
 }
 
 sub navmap_errormsg {
@@ -9196,11 +9143,13 @@ sub navmap_errormsg {
 }
 
 sub startpage {
-    my ($r,$symb,$crumbs,$onlyfolderflag) = @_;
-    unshift(@$crumbs,{href=>"/adm/grades?command=gradingmenu&symb=".&HTML::Entities::encode($symb,'<>&"'),text=>"Grading"});
+    my ($r,$symb,$crumbs,$onlyfolderflag,$nodisplayflag) = @_;
+    unshift(@$crumbs,{href=>&href_symb_cmd($symb,'gradingmenu'),text=>"Grading"});
     $r->print(&Apache::loncommon::start_page('Grading',undef,
                                           {'bread_crumbs' => $crumbs}));
-    $r->print(&Apache::lonhtmlcommon::resource_info_box($symb,$onlyfolderflag));
+    unless ($nodisplayflag) {
+       $r->print(&Apache::lonhtmlcommon::resource_info_box($symb,$onlyfolderflag));
+    }
 }
 
 sub handler {
@@ -9266,19 +9215,22 @@ sub handler {
             &startpage($request,$symb);
             $request->print(&submit_options($request,$symb));
         } elsif ($command eq 'table' && $perm{'vgr'}) {
-            &startpage($request,$symb);
+            &startpage($request,$symb,[{href=>"", text=>"Grading table"}]);
             $request->print(&submit_options_table($request,$symb));
         } elsif ($command eq 'all_for_one' && $perm{'vgr'}) {
             &startpage($request,$symb);
             $request->print(&submit_options_sequence($request,$symb));
 	} elsif ($command eq 'viewgrades' && $perm{'vgr'}) {
-            &startpage($request,$symb);
+            &startpage($request,$symb,[{href=>&href_symb_cmd($symb,"table"), text=>"Grading table"},{href=>'', text=>"Modify grades"}]);
 	    $request->print(&viewgrades($request,$symb));
 	} elsif ($command eq 'handgrade' && $perm{'mgr'}) {
             &startpage($request,$symb);
 	    $request->print(&processHandGrade($request,$symb));
 	} elsif ($command eq 'editgrades' && $perm{'mgr'}) {
-            &startpage($request,$symb);
+            &startpage($request,$symb,[{href=>&href_symb_cmd($symb,"table"), text=>"Grading table"},
+                                       {href=>&href_symb_cmd($symb,'viewgrades').'&group=all&section=all&Status=Active',
+                                                                             text=>"Modify grades"},
+                                       {href=>'', text=>"Store grades"}]);
 	    $request->print(&editgrades($request,$symb));
         } elsif ($command eq 'initialverifyreceipt' && $perm{'vgr'}) {
             &startpage($request,$symb);
@@ -9322,7 +9274,7 @@ sub handler {
 	    $request->print(&csvuploadassign($request,$symb));
 	} elsif ($command eq 'scantron_selectphase' && $perm{'mgr'}) {
             &startpage($request,$symb);
-	    $request->print(&scantron_selectphase($request,$symb));
+	    $request->print(&scantron_selectphase($request,undef,$symb));
  	} elsif ($command eq 'scantron_warning' && $perm{'mgr'}) {
             &startpage($request,$symb);
  	    $request->print(&scantron_do_warning($request,$symb));