--- loncom/homework/response.pm	2011/11/29 17:43:30	1.229
+++ loncom/homework/response.pm	2012/10/12 12:45:46	1.231
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.229 2011/11/29 17:43:30 raeburn Exp $
+# $Id: response.pm,v 1.231 2012/10/12 12:45:46 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1136,7 +1136,11 @@ sub whichorder {
     my ($max,$randomize,$showall,$hash,$rndseed)=@_;
     #&Apache::lonxml::debug("man $max randomize $randomize");
     if (!defined(@{ $$hash{'names'} })) { return; }
-    my @names = @{ $$hash{'names'} };
+    my @names;
+    if (ref($hash->{'names'}) eq 'ARRAY') {
+        @names = @{$hash->{'names'}};
+    }
+    return if (!@names);
     my @whichopt =();
     my (%top,@toplist,%bottom,@bottomlist);
     if (!($showall || ($randomize eq 'no'))) {
@@ -1189,8 +1193,8 @@ sub show_answer {
     my $status = $Apache::inputtags::status[-1];
     my $canshow = 0;
     if ($award =~ /^correct/) {
-        if ((&Apache::inputtags::grading_is_nonlenient($part)) ||
-            ($Apache::lonhomework::history{"resource.$part.awarded"} == 1)) {
+        if (($Apache::lonhomework::history{"resource.$part.awarded"} >= 1) ||
+            (&Apache::lonnet::EXT("resource.$part.retrypartial") !~/^1|on|yes$/)) {
             $canshow = 1;
         }   
     }
@@ -1223,8 +1227,11 @@ sub check_if_computed {
 
 sub pick_foil_for_concept {
     my ($target,$attrs,$hinthash,$parstack,$safeeval)=@_;
-    if (not defined(@{ $Apache::response::conceptgroup{'names'} })) { return; }
-    my @names = @{ $Apache::response::conceptgroup{'names'} };
+    my @names;
+    if (ref($Apache::response::conceptgroup{'names'}) eq 'ARRAY') {
+        @names = @{ $Apache::response::conceptgroup{'names'} };
+    }
+    return if (!@names);
     my $pick=int(&Math::Random::random_uniform() * ($#names+1));
     my $name=$names[$pick];
     push @{ $Apache::response::foilgroup{'names'} }, $name;