--- loncom/homework/optionresponse.pm	2012/12/18 16:30:23	1.189
+++ loncom/homework/optionresponse.pm	2014/11/27 17:37:09	1.194
@@ -1,7 +1,7 @@
 # LearningOnline Network with CAPA
 # option list style responses
 #
-# $Id: optionresponse.pm,v 1.189 2012/12/18 16:30:23 raeburn Exp $
+# $Id: optionresponse.pm,v 1.194 2014/11/27 17:37:09 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -64,7 +64,7 @@ sub start_optionresponse {
 				     $token,'4').
         &Apache::edit::select_arg('Randomize Foil Order:','randomize',
 				  ['yes','no'],$token).
-        &Apache::edit::select_arg(&mt('Display of options when printed'),'TeXlayout',
+        &Apache::edit::select_arg('Display of options when printed','TeXlayout',
 				  [['horizontal','Normal list'],
 				   ['vertical','Listed in a vertical column']],$token).
         &Apache::edit::end_row().&Apache::edit::start_spanning_row();
@@ -120,17 +120,22 @@ sub start_foilgroup {
     }
     my $insertlist=&Apache::edit::insertlist($target,$token);
     $result.=&Apache::edit::start_table($token);
+    my %lt = &Apache::lonlocal::texthash(
+        sel => 'Select Options',
+        add => 'Add new Option:',
+        del => 'Delete an Option:',
+    );
     $result.= (<<ENDTABLE);
-      <tr><td>Select Options</td>
+      <tr><td>$lt{'sel'}</td>
         <td>
-	  Add new Option: <input type="text" name="$Apache::lonxml::curdepth.options" />
+	  $lt{'add'} <input type="text" name="$Apache::lonxml::curdepth.options" />
         </td>
-        <td>Delete an Option:
+        <td>$lt{'del'}
 	  <select name="$Apache::lonxml::curdepth.deleteopt">$optionlist</select>
         </td>
 ENDTABLE
     $result.= '<td>'.&Apache::edit::checked_arg('Print options:','texoptions',
-					 [ ['nochoice','Don\'t show option list'] ]
+					 [ ['nochoice',"Don't show option list"] ]
 					 ,$token).'</td>';
     $result.= '<td><label>'.&mt('Two-option checkboxes for:').
               '<select name="checkboxvalue_'.$Apache::lonxml::curdepth.'">';
@@ -141,9 +146,12 @@ ENDTABLE
        }
        $result.='>'.$option.'</option>';
     }
-    $result.='</select></label>';
+    $result.='</select></label> ';
     $result.=&Apache::edit::checked_arg('Checkbox options:','checkboxoptions',
-                                         [ ['nochoice','Don\'t show option list'] ]
+                                         [ ['nochoice',"Don't show option list"] ]
+                                         ,$token).' '.
+             &Apache::edit::checked_arg('','noprompt',
+                                         [ ['nochoice','Omit "Select all that are ... "' ] ]
                                          ,$token).'</td>';
     $result.= &Apache::edit::end_row();
     $result.= &Apache::edit::start_spanning_row();
@@ -168,7 +176,8 @@ ENDTABLE
       $optchanged=1;
     }
     my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval,
-						 'texoptions','checkboxvalue','checkboxoptions');
+						 'texoptions','checkboxvalue','checkboxoptions',
+                                                 'noprompt');
     if ($optchanged || $rebuildtag ) {
       $result = "<foilgroup options=\"(";
       foreach my $option (@options) {
@@ -180,7 +189,8 @@ ENDTABLE
       $result.=')" ';
       $result .= 'texoptions="'.$token->[2]{'texoptions'}.'" ';
       $result .= 'checkboxoptions="'.$token->[2]{'checkboxoptions'}.'" ';
-      $result .= 'checkboxvalue="'.$token->[2]{'checkboxvalue'}.'"';
+      $result .= 'checkboxvalue="'.$token->[2]{'checkboxvalue'}.'" ';
+      $result .= 'noprompt="'.$token->[2]{'noprompt'}.'"';
       $result .= '>';
     } # else nothing changed so just use the default mechanism
   }
@@ -210,7 +220,7 @@ sub end_foilgroup {
 					     -2,0);
     my $checkboxvalue=&Apache::lonxml::get_param('checkboxvalue',$parstack,$safeeval);
     my $checkboxchoices=(&Apache::lonxml::get_param('checkboxoptions',$parstack,$safeeval) ne 'nochoice');
-    my $noprompt       =&Apache::lonxml::get_param('noprompt', $parstack, $safeeval);
+    my $noprompt=&Apache::lonxml::get_param('noprompt', $parstack, $safeeval);
 
     if ($target eq 'tex' && $tex_option_switch eq 'nochoice') {@opt=();}
     &Apache::lonxml::debug("Options are $#opt");
@@ -523,8 +533,15 @@ sub displayfoils {
     foreach $name (@whichopt) {
 	my $text=$Apache::response::foilgroup{$name.'.text'};
         my $lastresp;
-        unless ((($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) && (defined($env{'form.grade_symb'}))) {
+        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'}))) {
             $lastresp = $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')) {
+                $lastresp = $Apache::lonhomework::history{"resource.$part.$id.submission"};
+            }
         }
 	my %lastresponse=&Apache::lonnet::str2hash($lastresp);
 	my $lastopt=$lastresponse{$name};
@@ -563,14 +580,25 @@ sub displayfoils {
         }
     }
     unless ($newvariation) {
-        %lastresponse=&Apache::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"});
+        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::lonnet::str2hash($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::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"});
+            }
+        }
     }
     my $internal_counter=$Apache::lonxml::counter;
     my $checkboxopt=&check_box_opt($target,$checkboxvalue,@opt);
     if ($checkboxopt && (!$no_tfprompt)) {
        $result.='<br />'.
                 ($checkboxchoices?&mt('Choices: ').'<b>'.$opt[0].','.$opt[1].'</b>. ':'').
-                 &mt('Select all that are <b>[_1]</b>.',$checkboxopt);
+                 &mt('Select all that are [_1].','<b>'.$checkboxopt.'</b>');
     }
     foreach $name (@whichopt) {
       my $text=$Apache::response::foilgroup{$name.'.text'};