--- loncom/homework/grades.pm	2013/06/28 22:40:04	1.693
+++ loncom/homework/grades.pm	2013/08/15 14:10:09	1.702
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.693 2013/06/28 22:40:04 raeburn Exp $
+# $Id: grades.pm,v 1.702 2013/08/15 14:10:09 kruse Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -736,7 +736,7 @@ sub most_similar {
 sub initialverifyreceipt {
    my ($request,$symb) = @_;
    &commonJSfunctions($request);
-   return '<form name="gradingMenu"><input type="submit" value="'.&mt('Verify Receipt Number.').'" />'.
+   return '<form name="gradingMenu" action=""><input type="submit" value="'.&mt('Verify Receipt Number.').'" />'.
         &Apache::lonnet::recprefix($env{'request.course.id'}).
         '-<input type="text" name="receipt" size="4" />'.
         '<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n".
@@ -908,17 +908,17 @@ LISTJAVASCRIPT
     $submission_options.=
         '<span class="LC_nobreak">'.
         '<label><input type="radio" name="lastSub" value="lastonly" /> '.
-        &mt('last submission only').' </label></span>'."\n".
+        &mt('last submission').' </label></span>'."\n".
         '<span class="LC_nobreak">'.
         '<label><input type="radio" name="lastSub" value="last" /> '.
-        &mt('last submission &amp; parts info').' </label></span>'."\n".
+        &mt('last submission with details').' </label></span>'."\n".
         '<span class="LC_nobreak">'.
         '<label><input type="radio" name="lastSub" value="datesub" checked="checked" /> '.
-        &mt('by dates and submissions').'</label></span>'."\n".
+        &mt('all submissions').'</label></span>'."\n".
         '<span class="LC_nobreak">'.
         '<label><input type="radio" name="lastSub" value="all" /> '.
-        &mt('all details').'</label></span>';
-    $gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('Submissions'))
+        &mt('all submissions with details').'</label></span>';
+    $gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('View Submissions'))
                   .$submission_options
                   .&Apache::lonhtmlcommon::row_closure();
 
@@ -1702,7 +1702,7 @@ sub gradeBox {
     $wgt       = ($wgt > 0 ? $wgt : '1');
     my $score  = ($$record{'resource.'.$partid.'.awarded'} eq '' ?
 		  '' : &compute_points($$record{'resource.'.$partid.'.awarded'},$wgt));
-    my $result='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n";
+    my $data_WGT='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n";
     my $display_part= &get_display_part($partid,$symb);
     my %last_resets = &get_last_resets($symb,$env{'request.course.id'},
 				       [$partid]);
@@ -1710,7 +1710,7 @@ sub gradeBox {
     if ($last_resets{$partid}) {
         $aggtries = &get_num_tries($record,$last_resets{$partid},$partid);
     }
-    $result.=&Apache::loncommon::start_data_table_row();
+    my $result=&Apache::loncommon::start_data_table_row();
     my $ctr = 0;
     my $thisweight = 0;
     my $increment = &get_increment();
@@ -1747,8 +1747,9 @@ sub gradeBox {
 
 
     $result .= 
-	    '<td>'.$display_part.'</td><td>'.$radio.'</td><td>'.&mt('or').'</td><td>'.$line.'</td>';
+	    '<td>'.$data_WGT.$display_part.'</td><td>'.$radio.'</td><td>'.&mt('or').'</td><td>'.$line.'</td>';
     $result.=&Apache::loncommon::end_data_table_row();
+    $result.=&Apache::loncommon::start_data_table_row().'<td colspan="6">';
     $result.='<input type="hidden" name="stores'.$counter.'_'.$partid.'" value="" />'."\n".
 	'<input type="hidden" name="oldpts'.$counter.'_'.$partid.'" value="'.$score.'" />'."\n".
 	'<input type="hidden" name="solved'.$counter.'_'.$partid.'" value="'.
@@ -1759,6 +1760,7 @@ sub gradeBox {
         $aggtries.'" />'."\n";
     my $res_error;
     $result.=&handback_box($symb,$uname,$udom,$counter,$partid,$record,\$res_error);
+    $result.='</td>'.&Apache::loncommon::end_data_table_row();
     if ($res_error) {
         return &navmap_errormsg();
     }
@@ -2051,7 +2053,7 @@ sub submission {
 <br /><b>$lt{'keyw'}:</b>&nbsp;
 <a href="javascript:keywords(document.SCORE);" target="_self">$lt{'list'}</a>&nbsp; &nbsp;
 <a href="#" onmousedown="javascript:getSel(); return false"
- CLASS="page">$lt{'past'}</a>&nbsp; &nbsp;
+ class="page">$lt{'past'}</a>&nbsp; &nbsp;
 <a href="javascript:kwhighlight();" target="_self">$lt{'high'}</a><br /><br />
 KEYWORDS
 #
@@ -2137,137 +2139,146 @@ KEYWORDS
 	$result.=$sub_result;
     }
     $request->print($result."\n");
-
+    
     # print student answer/submission
     # Options are (1) Handgraded submission only
     #             (2) Last submission, includes submission that is not handgraded 
     #                  (for multi-response type part)
     #             (3) Last submission plus the parts info
     #             (4) The whole record for this student
-    if ($env{'form.lastSub'} =~ /^(lastonly|hdgrade)$/) {
-	my ($string,$timestamp)= &get_last_submission(\%record);
+    
+    my ($string,$timestamp)= &get_last_submission(\%record);
 	
-	my $lastsubonly;
+    my $lastsubonly;
 
-        if ($$timestamp eq '') {
-            $lastsubonly.='<div class="LC_grade_submissions_body">'.$$string[0].'</div>'; 
-        } else {
-            $lastsubonly =
-                '<div class="LC_grade_submissions_body">'
-               .'<b>'.&mt('Date Submitted:').'</b> '.$$timestamp."\n";
-
-	    my %seenparts;
-	    my @part_response_id = &flatten_responseType($responseType);
-	    foreach my $part (@part_response_id) {
-		next if ($env{'form.lastSub'} eq 'hdgrade' 
+    if ($$timestamp eq '') {
+        $lastsubonly.='<div class="LC_grade_submissions_body">'.$$string[0].'</div>'; 
+    } else {
+        $lastsubonly =
+            '<div class="LC_grade_submissions_body">'
+           .'<b>'.&mt('Date Submitted:').'</b> '.$$timestamp."\n";
+
+	my %seenparts;
+	my @part_response_id = &flatten_responseType($responseType);
+	foreach my $part (@part_response_id) {
+	    next if ($env{'form.lastSub'} eq 'hdgrade' 
 			 && $$handgrade{$$part[0].'_'.$$part[1]} ne 'yes');
 
-		my ($partid,$respid) = @{ $part };
-		my $display_part=&get_display_part($partid,$symb);
-		if ($env{"form.$uname:$udom:$partid:submitted_by"}) {
-		    if (exists($seenparts{$partid})) { next; }
-		    $seenparts{$partid}=1;
-		    my $submitby='<b>Part:</b> '.$display_part.
-			' <b>Collaborative submission by:</b> '.
-			'<a href="javascript:viewSubmitter(\''.
-			$env{"form.$uname:$udom:$partid:submitted_by"}.
-			'\');" target="_self">'.
-			$$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.'</a><br />';
-		    $request->print($submitby);
-		    next;
-		}
-		my $responsetype = $responseType->{$partid}->{$respid};
-		if (!exists($record{"resource.$partid.$respid.submission"})) {
-                    $lastsubonly.="\n".'<div class="LC_grade_submission_part">'.
-                        '<b>'.&mt('Part: [_1]',$display_part).'</b>'.
-                        ' <span class="LC_internal_info">'.
-                        '('.&mt('Response ID: [_1]',$respid).')'.
-                        '</span>&nbsp; &nbsp;'.
-			'<span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br /><br /></div>';
-		    next;
-		}
-		foreach my $submission (@$string) {
-		    my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/);
-		    if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; }
-		    my ($ressub,$hide,$subval) = split(/:/,$submission,3);
-		    # Similarity check
-		    my $similar='';
-                    my ($type,$trial,$rndseed);
-                    if ($hide eq 'rand') {
-                        $type = 'randomizetry';
-                        $trial = $record{"resource.$partid.tries"};
-                        $rndseed = $record{"resource.$partid.rndseed"};
-                    }
-		    if($env{'form.checkPlag'}){
-			my ($oname,$odom,$ocrsid,$oessay,$osim)=
-			    &most_similar($uname,$udom,$symb,$subval);
-			if ($osim) {
-			    $osim=int($osim*100.0);
-			    my %old_course_desc = 
-				&Apache::lonnet::coursedescription($ocrsid,
-								   {'one_time' => 1});
-
-                            if ($hide eq 'anon') {
-                                $similar='<hr /><span class="LC_warning">'.&mt("Essay was found to be similar to another essay submitted for this assignment.").'<br />'.
-                                         &mt('As the current submission is for an anonymous survey, no other details are available.').'</span><hr />';
-                            } else {
-			        $similar="<hr /><h3><span class=\"LC_warning\">".
-				    &mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])',
-				        $osim,
-				        &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')',
+	    my ($partid,$respid) = @{ $part };
+	    my $display_part=&get_display_part($partid,$symb);
+	    if ($env{"form.$uname:$udom:$partid:submitted_by"}) {
+		if (exists($seenparts{$partid})) { next; }
+		$seenparts{$partid}=1;
+                $request->print(
+                    '<b>'.&mt('Part: [_1]',$display_part).'</b>'.
+                    ' <b>'.&mt('Collaborative submission by: [_1]',
+                               '<a href="javascript:viewSubmitter(\''.
+                               $env{"form.$uname:$udom:$partid:submitted_by"}.
+                               '\');" target="_self">'.
+                               $$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.'</a>').
+                    '<br />');
+		next;
+		}
+	    my $responsetype = $responseType->{$partid}->{$respid};
+	    if (!exists($record{"resource.$partid.$respid.submission"})) {
+                $lastsubonly.="\n".'<div class="LC_grade_submission_part">'.
+                    '<b>'.&mt('Part: [_1]',$display_part).'</b>'.
+                    ' <span class="LC_internal_info">'.
+                    '('.&mt('Response ID: [_1]',$respid).')'.
+                    '</span>&nbsp; &nbsp;'.
+	       	    '<span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br /><br /></div>';
+		next;
+	    }
+	    foreach my $submission (@$string) {
+		my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/);
+		if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; }
+		my ($ressub,$hide,$subval) = split(/:/,$submission,3);
+		# Similarity check
+                my $similar='';
+                my ($type,$trial,$rndseed);
+                if ($hide eq 'rand') {
+                    $type = 'randomizetry';
+                    $trial = $record{"resource.$partid.tries"};
+                    $rndseed = $record{"resource.$partid.rndseed"};
+                }
+	        if ($env{'form.checkPlag'}) {
+    		    my ($oname,$odom,$ocrsid,$oessay,$osim)=
+		        &most_similar($uname,$udom,$symb,$subval);
+		    if ($osim) {
+			$osim=int($osim*100.0);
+			my %old_course_desc = 
+			    &Apache::lonnet::coursedescription($ocrsid,
+							{'one_time' => 1});
+
+                        if ($hide eq 'anon') {
+                            $similar='<hr /><span class="LC_warning">'.&mt("Essay was found to be similar to another essay submitted for this assignment.").'<br />'.
+                                     &mt('As the current submission is for an anonymous survey, no other details are available.').'</span><hr />';
+                        } else {
+			    $similar="<hr /><h3><span class=\"LC_warning\">".
+				&mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])',
+				    $osim,
+				    &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')',
 				        $old_course_desc{'description'},
 				        $old_course_desc{'num'},
 				        $old_course_desc{'domain'}).
 				    '</span></h3><blockquote><i>'.
 				    &keywords_highlight($oessay).
 				    '</i></blockquote><hr />';
-                            }
-			}
-		    }
-		    my $order=&get_order($partid,$respid,$symb,$uname,$udom,
-                                         undef,$type,$trial,$rndseed);
-		    if ($env{'form.lastSub'} eq 'lastonly' || 
-			($env{'form.lastSub'} eq 'hdgrade' && 
+                        }
+	            }
+		}
+		my $order=&get_order($partid,$respid,$symb,$uname,$udom,
+                                     undef,$type,$trial,$rndseed);
+                if ($env{'form.lastSub'} eq 'lastonly' || $env{'form.lastSub'} eq 'datesub' || $env{'form.lastSub'} =~ /^(last|all)$/ || ($env{'form.lastSub'} eq 'hdgrade' && 
 			 $$handgrade{$$part[0].'_'.$$part[1]} eq 'yes')) {
-			my $display_part=&get_display_part($partid,$symb);
-                        $lastsubonly.='<div class="LC_grade_submission_part">'.
-                            '<b>'.&mt('Part: [_1]',$display_part).'</b>'.
-                            ' <span class="LC_internal_info">'.
-                            '('.&mt('Response ID: [_1]',$respid).')'.
-                            '</span>&nbsp; &nbsp;';
-			my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record);
-			if (@$files) {
-                            if ($hide eq 'anon') {
-                                $lastsubonly.='<br />'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files}));
-                            } else {
-                                $lastsubonly.='<br /><span class="LC_warning">'.&mt('Like all files provided by users, this file may contain viruses').'</span><br />';
-                                foreach my $file (@$files) {
-                                    &Apache::lonnet::allowuploaded('/adm/grades',$file);
-                                    $lastsubonly.='<br /><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border="0" /> '.$file.'</a>';
-                                }
-                            }
-			    $lastsubonly.='<br />';
-			}
+		    my $display_part=&get_display_part($partid,$symb);
+                    $lastsubonly.='<div class="LC_grade_submission_part">'.
+                        '<b>'.&mt('Part: [_1]',$display_part).'</b>'.
+                        ' <span class="LC_internal_info">'.
+                        '('.&mt('Response ID: [_1]',$respid).')'.
+                        '</span>&nbsp; &nbsp;';
+		    my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record);
+                        
+		    if (@$files) {
                         if ($hide eq 'anon') {
-                            $lastsubonly.='<b>'.&mt('Anonymous Survey').'</b>'; 
+                            $lastsubonly.='<br />'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files}));
                         } else {
-			    $lastsubonly.='<b>'.&mt('Submitted Answer:').' </b>'.
-			        &cleanRecord($subval,$responsetype,$symb,$partid,
-					     $respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed);
+                            $lastsubonly.='<br /><br />'.'<b>'.&mt('Submitted Files:').'</b>'
+                                        .'<br /><span class="LC_warning">';
+                            if(@$files == 1) {
+                                $lastsubonly .= &mt('Like all files provided by users, this file may contain viruses!');
+                            } else {
+                                $lastsubonly .= &mt('Like all files provided by users, these files may contain viruses!');
+                            }
+                            $lastsubonly .= '</span>';                         
+                            foreach my $file (@$files) {
+                                &Apache::lonnet::allowuploaded('/adm/grades',$file);
+                                $lastsubonly.='<br /><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border="0" alt="" /> '.$file.'</a>';
+                            }
                         }
-			if ($similar) {$lastsubonly.="<br /><br />$similar\n";}
-			$lastsubonly.='</div>';
-		    }
+			$lastsubonly.='<br />';
+                    }
+                    if ($hide eq 'anon') {
+                        $lastsubonly.='<br /><b>'.&mt('Anonymous Survey').'</b>'; 
+                    } else {
+             	        $lastsubonly.='<br /><b>'.&mt('Submitted Answer:').' </b>'.
+			    &cleanRecord($subval,$responsetype,$symb,$partid,
+					 $respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed);
+                    }
+	            if ($similar) {$lastsubonly.="<br /><br />$similar\n";}
+		    $lastsubonly.='</div>';
 		}
-	    }
-	    $lastsubonly.='</div>'."\n"; # End: LC_grade_submissions_body
+            }
 	}
-	$request->print($lastsubonly);
-   } elsif ($env{'form.lastSub'} eq 'datesub') {
+	$lastsubonly.='</div>'."\n"; # End: LC_grade_submissions_body
+    }
+    $request->print($lastsubonly);
+    if ($env{'form.lastSub'} eq 'datesub') {
         my ($parts,$handgrade,$responseType) = &response_type($symb,\$res_error);
 	$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom));
-    } elsif ($env{'form.lastSub'} =~ /^(last|all)$/) {
-	$request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom,
+    } 
+    if ($env{'form.lastSub'} =~ /^(last|all)$/) {
+        $request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom,
 								 $env{'request.course.id'},
 								 $last,'.submission',
 								 'Apache::grades::keywords_highlight'));
@@ -2300,10 +2311,10 @@ KEYWORDS
 	    '<input type="hidden" name="newmsg'.$counter.'" value="" />'."\n";
 	$result.='&nbsp;<a href="javascript:msgCenter(document.SCORE,'.$counter.
 	    ',\''.$msgfor.'\');" target="_self">'.
-	    &mt('Compose message to student').(scalar(@$col_fullnames) >= 1 ? 's' : '').'</a><label> ('.
+	    &mt('Compose message to student'.(scalar(@$col_fullnames) >= 1 ? 's' : '')).'</a><label> ('.
 	    &mt('incl. grades').' <input type="checkbox" name="withgrades'.$counter.'" /></label>)'.
-	    '<img src="'.$request->dir_config('lonIconsURL').
-	    '/mailbkgrd.gif" width="14" height="10" name="mailicon'.$counter.'" />'."\n".
+	    ' <img src="'.$request->dir_config('lonIconsURL').
+	    '/mailbkgrd.gif" width="14" height="10" alt="" name="mailicon'.$counter.'" />'."\n".
 	    '<br />&nbsp;('.
 	    &mt('Message will be sent when you click on Save &amp; Next below.').")\n";
 	$result.='</div></div>';
@@ -3584,9 +3595,10 @@ sub viewgrades {
 	    $partid.'" size="4" '.'onchange="javascript:writePoint(\''.
 		$partid.'\','.$weight{$partid}.',\'textval\')" /> /'.
 	    $weight{$partid}.' '.&mt('(problem weight)').'</td>'."\n";
-	$line.= '<td><b>'.&mt('Grade Status').':</b><select name="SELVAL_'.$partid.'"'.
-	    'onchange="javascript:writeRadText(\''.$partid.'\','.
-		$weight{$partid}.')"> '.
+        $line.= '<td><b>'.&mt('Grade Status').':</b>'.
+            '<select name="SELVAL_'.$partid.'" '.
+            'onchange="javascript:writeRadText(\''.$partid.'\','.
+                $weight{$partid}.')"> '.
 	    '<option selected="selected"> </option>'.
 	    '<option value="excused">'.&mt('excused').'</option>'.
 	    '<option value="reset status">'.&mt('reset status').'</option>'.
@@ -3635,8 +3647,8 @@ sub viewgrades {
 	my $display_part=&get_display_part($partid,$symb);
 	if ($display =~ /^Partial Credit Factor/) {
 	    $result.='<th>'.
-		&mt('Score Part: [_1]<br /> (weight = [_2])',
-		    $display_part,$weight{$partid}).'</th>'."\n";
+		&mt('Score Part: [_1][_2](weight = [_3])',
+		    $display_part,'<br />',$weight{$partid}).'</th>'."\n";
 	    next;
 	    
 	} else {
@@ -4444,48 +4456,68 @@ LISTJAVASCRIPT
     my ($curpage) =&Apache::lonnet::decode_symb($symb); 
 #    my ($curpage,$mapId) =&Apache::lonnet::decode_symb($symb); 
 #    my $type=($curpage =~ /\.(page|sequence)/);
-    my $select = '<select name="selectpage">'."\n";
+
+    # Collection of hidden fields
     my $ctr=0;
     foreach (@$titles) {
-	my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/);
-	$select.='<option value="'.$ctr.'" '.
-	    ($$symbx{$_} =~ /$curpage$/ ? 'selected="selected"' : '').
-	    '>'.$showtitle.'</option>'."\n";
-	$ctr++;
+        my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/);
+        $result.='<input type="hidden" name="page'.$ctr.'" value="'.$$symbx{$_}.'" />'."\n";
+        $result.='<input type="hidden" name="title'.$ctr.'" value="'.$showtitle.'" />'."\n";
+        $ctr++;
     }
-    $select.= '</select>';
-    $result.='&nbsp;<b>'.&mt('Problems from').':</b> '.$select."<br />\n";
+    $result.='<input type="hidden" name="page" />'."\n".
+        '<input type="hidden" name="title" />'."\n";
+
+    $result.=&build_section_inputs();
+    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";
 
+    # Show grading options
+    $result.=&Apache::lonhtmlcommon::start_pick_box();
+    my $select = '<select name="selectpage">'."\n";
     $ctr=0;
     foreach (@$titles) {
 	my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/);
-	$result.='<input type="hidden" name="page'.$ctr.'" value="'.$$symbx{$_}.'" />'."\n";
-	$result.='<input type="hidden" name="title'.$ctr.'" value="'.$showtitle.'" />'."\n";
+	$select.='<option value="'.$ctr.'"'.
+	    ($$symbx{$_} =~ /$curpage$/ ? ' selected="selected"' : '').
+	    '>'.$showtitle.'</option>'."\n";
 	$ctr++;
     }
-    $result.='<input type="hidden" name="page" />'."\n".
-	'<input type="hidden" name="title" />'."\n";
+    $select.= '</select>';
 
-    my $options =
-	'<label><input type="radio" name="vProb" value="no" checked="checked" /> '.&mt('no').' </label>'."\n".
-	'<label><input type="radio" name="vProb" value="yes" /> '.&mt('yes').' </label>'."<br />\n";
-    $result.='&nbsp;<b>'.&mt('View Problem Text').': </b>'.$options;
-
-    $options =
-	'<label><input type="radio" name="lastSub" value="none" /> '.&mt('none').' </label>'."\n".
-	'<label><input type="radio" name="lastSub" value="datesub" checked="checked" /> '.&mt('by dates and submissions').'</label>'."\n".
-	'<label><input type="radio" name="lastSub" value="all" /> '.&mt('all details').' </label>'."\n";
-    $result.='&nbsp;<b>'.&mt('Submissions').': </b>'.$options;
+    $result.=
+        &Apache::lonhtmlcommon::row_title(&mt('Problems from'))
+       .$select
+       .&Apache::lonhtmlcommon::row_closure();
+
+    $result.=
+        &Apache::lonhtmlcommon::row_title(&mt('View Problem Text'))
+       .'<label><input type="radio" name="vProb" value="no"'
+           .' checked="checked" /> '.&mt('no').' </label>'."\n"
+       .'<label><input type="radio" name="vProb" value="yes" />'
+           .&mt('yes').'</label>'."\n"
+       .&Apache::lonhtmlcommon::row_closure();
+
+    $result.=
+        &Apache::lonhtmlcommon::row_title(&mt('View Submissions'))
+       .'<label><input type="radio" name="lastSub" value="none" /> '
+           .&mt('none').' </label>'."\n"
+       .'<label><input type="radio" name="lastSub" value="datesub"'
+           .' checked="checked" /> '.&mt('all submissions').'</label>'."\n"
+       .'<label><input type="radio" name="lastSub" value="all" /> '
+           .&mt('all submissions with details').' </label>'
+       .&Apache::lonhtmlcommon::row_closure();
     
-    $result.=&build_section_inputs();
-    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).'" />'."<br />\n";
-
-    $result.='&nbsp;<b>'.&mt('Use CODE').': </b> <input type="text" name="CODE" value="" /> <br />'."\n";
+    $result.=
+        &Apache::lonhtmlcommon::row_title(&mt('Use CODE'))
+       .'<input type="text" name="CODE" value="" />'
+       .&Apache::lonhtmlcommon::row_closure(1)
+       .&Apache::lonhtmlcommon::end_pick_box();
 
-    $result.='&nbsp;<input type="button" '.
+    # Show list of students to select for grading
+    $result.='<br /><input type="button" '.
              'onclick="javascript:checkPickOne(this.form);" value="'.&mt('Next').' &rarr;" /><br />'."\n";
 
     $request->print($result);
@@ -4630,7 +4662,7 @@ sub displayPage {
         '</span>'."\n".
 	&Apache::loncommon::start_data_table().
 	&Apache::loncommon::start_data_table_header_row().
-	'<th align="center">&nbsp;Prob.&nbsp;</th>'.
+	'<th>'.&mt('Prob.').'</th>'.
 	'<th>&nbsp;'.($env{'form.vProb'} eq 'no' ? &mt('Title') : &mt('Problem Text')).'/'.&mt('Grade').'</th>'.
 	&Apache::loncommon::end_data_table_header_row();
 
@@ -5513,7 +5545,7 @@ sub scantron_selectphase {
 
     &Apache::lonpickcode::code_list($r,2);
 
-    $r->print('<br /><form method="post" name="checkscantron">'.
+    $r->print('<br /><form method="post" name="checkscantron" action="">'.
              $default_form_data."\n".
              &Apache::loncommon::start_data_table('LC_scantron_action')."\n".
              &Apache::loncommon::start_data_table_header_row()."\n".
@@ -9779,7 +9811,7 @@ ENDHEADER
              &mt('Found [_1] registered and [_2] unregistered clickers.',$student_count,$unknown_count);
     if (($env{'form.gradingmechanism'} ne 'attendance') && ($env{'form.gradingmechanism'} ne 'given')) {
        if ($correct_count==0) {
-          $errormsg.="Found no correct answers answers for grading!";
+          $errormsg.="Found no correct answers for grading!";
        } elsif ($correct_count>1) {
           $result.='<br /><span class="LC_warning">'.&mt("Found [_1] entries for grading!",$correct_count).'</span>';
        }
@@ -9951,7 +9983,7 @@ sub assign_clicker_grades {
        if ($user) {
           if ($users{$user}) {
              $result.='<br /><span class="LC_warning">'.
-                      &mt("More than one entry found for <tt>[_1]</tt>!",$user).
+                      &mt('More than one entry found for [_1]!','<tt>'.$user.'</tt>').
                       '</span><br />';
           }
           $users{$user}=1;