--- loncom/homework/rankresponse.pm	2012/10/12 12:45:46	1.68
+++ loncom/homework/rankresponse.pm	2016/01/22 22:42:51	1.73
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # rank style response
 #
-# $Id: rankresponse.pm,v 1.68 2012/10/12 12:45:46 raeburn Exp $
+# $Id: rankresponse.pm,v 1.73 2016/01/22 22:42:51 damieng Exp $
 # Copyright Michigan State University Board of Trustees
 #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
@@ -51,7 +51,8 @@ sub start_rankresponse {
 	$result=&Apache::response::meta_package_write('rankresponse');
     } elsif ($target eq 'edit' ) {
 	$result.=&Apache::edit::start_table($token)
-           .'<tr><td>'.&Apache::lonxml::description($token).'</td>'
+           .'<tr><td>'.&Apache::loncommon::insert_folding_button()
+           .&Apache::lonxml::description($token).'</td>'
            .'<td><span class="LC_nobreak">'.&mt('Delete?').' '
            .&Apache::edit::deletelist($target,$token)
            .'</span></td>'
@@ -335,8 +336,11 @@ sub format_prior_answer {
     my %grading     =&Apache::lonnet::str2hash($other_data->[1]);
     my $output;
     foreach my $name (@{ $foil_order }) {
-	next if (!defined($lastresponse{$name}));
-	$output .= '<tr><td>'.$lastresponse{$name}.'</td></tr>';
+        if (defined($lastresponse{$name})) {
+            $output .= '<tr><td>'.&HTML::Entities::encode($lastresponse{$name},'<>&"').'</td></tr>';
+        } else {
+            $output .= '<tr><td>&nbsp;</td></tr>';
+        }
     }
     return if (!defined($output));
     $output =
@@ -358,7 +362,7 @@ sub displayfoils {
 	    my $text=$Apache::response::foilgroup{$name.'.text'};
 	    my $value=shift(@correctorder);
 	    if ($target eq 'web') {
-		$result.='<br /><b>'.$value.':</b> '.$text;
+		$result.='<div class="LC_rankfoil"><b>'.$value.':</b> '.$text.'</div>';
 	    } else {
 		$result.=' \strut\\\\\strut '.$value.':'.$text;
 	    }
@@ -377,8 +381,17 @@ sub displayfoils {
                 $newvariation = 1;
             }
         }
-        unless (((($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) && (defined($env{'form.grade_symb'}))) || $newvariation) {
-            $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"};
+        unless ($newvariation) {
+            if ((($env{'form.grade_username'} eq '') && ($env{'form.grade_domain'} eq '')) ||
+                (($env{'form.grade_username'} eq $env{'user.name'}) &&
+                 ($env{'form.grade_domain'} eq $env{'user.domain'}))) {
+                $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"};
+            } else {
+                unless (($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') ||
+                        ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) {
+                    $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"};
+                }
+            }
         }
 	my %lastresponse=&Apache::lonnet::str2hash($lastresponse); 
 	my @alp = splice @alphabet, 0, $#whichopt + 1;
@@ -431,15 +444,17 @@ sub displayfoils {
 	    }
 	    my $text=$Apache::response::foilgroup{$name.'.text'};
 	    if ($target ne 'tex') {
+                $result .= '<div class="LC_rankfoil">';
 		if ($Apache::lonhomework::type ne 'exam') {
-		    $result.='<br />'.$optionlist.$text."\n";
+		    $result.=$optionlist.$text."\n";
 		} else {
-		    $result.='<br />'.$text."\n";
+		    $result.=$text."\n";
 		}
 		if ($Apache::lonhomework::type eq 'exam') {
 		    my @values=(1..scalar(@whichopt));
 		    $result.=&Apache::optionresponse::webbubbles(\@values,\@whichopt,$temp,$lastopt);
 		}
+                $result .= '</div>';
 	    } else {
 		if ($Apache::lonhomework::type eq 'exam') {
                     my $itemlabel;