--- loncom/homework/response.pm	2011/11/29 13:24:38	1.228
+++ loncom/homework/response.pm	2012/12/18 18:26:41	1.232
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.228 2011/11/29 13:24:38 raeburn Exp $
+# $Id: response.pm,v 1.232 2012/12/18 18:26:41 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -491,7 +491,7 @@ sub end_customresponse {
 	$result .= &Apache::response::answer_footer('customresponse');
     }
     if ($target eq 'web') {
-	&setup_prior_tries_hash(\&format_prior_response_math);
+	&setup_prior_tries_hash(\&format_prior_response_custom);
     }
     if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || 
 	$target eq 'tex' || $target eq 'analyze') {
@@ -512,6 +512,9 @@ sub end_customresponse {
 
 sub format_prior_response_custom {
     my ($mode,$answer) =@_;
+    if (ref($answer) eq 'ARRAY') {
+        $answer = '('.join(', ', @{ $answer }).')';
+    }
     return '<span class="LC_prior_custom">'.
 	    &HTML::Entities::encode($answer,'"<>&').'</span>';
 }
@@ -1132,8 +1135,11 @@ sub scored_response {
 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'))) {
@@ -1186,8 +1192,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;
         }   
     }
@@ -1220,8 +1226,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;