--- loncom/homework/response.pm 2011/11/29 13:24:38 1.228
+++ loncom/homework/response.pm 2013/12/28 23:16:02 1.234
@@ -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.234 2013/12/28 23:16:02 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -469,6 +469,18 @@ sub end_customresponse {
$error = $award;
$award = 'ERROR';
}
+ if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' ||
+ $award eq 'EXACT_ANS')) {
+ if ($Apache::lonhomework::type eq 'survey') {
+ $award='SUBMITTED';
+ } elsif ($Apache::lonhomework::type eq 'surveycred') {
+ $award='SUBMITTED_CREDIT';
+ } elsif ($Apache::lonhomework::type eq 'anonsurvey') {
+ $award='ANONYMOUS';
+ } elsif ($Apache::lonhomework::type eq 'anonsurveycred') {
+ $award='ANONYMOUS_CREDIT';
+ }
+ }
&Apache::response::handle_previous(\%previous,$award);
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
$award;
@@ -491,7 +503,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 +524,9 @@ sub end_customresponse {
sub format_prior_response_custom {
my ($mode,$answer) =@_;
+ if (ref($answer) eq 'ARRAY') {
+ $answer = '('.join(', ', @{ $answer }).')';
+ }
return ''.
&HTML::Entities::encode($answer,'"<>&').'';
}
@@ -571,7 +586,7 @@ sub edit_mathresponse_button {
function edit_${id}_${field} (textarea) {
thenumber = textarea;
thedata = document.forms['lonhomework'].elements[textarea].value;
- newwin = window.open("/adm/dragmath/applet/MaximaPopup.html","","width=565,height=400,resizable");
+ newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable");
}
@@ -611,6 +626,18 @@ sub end_mathresponse {
$error = $award;
$award = 'ERROR';
}
+ if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' ||
+ $award eq 'EXACT_ANS')) {
+ if ($Apache::lonhomework::type eq 'survey') {
+ $award='SUBMITTED';
+ } elsif ($Apache::lonhomework::type eq 'surveycred') {
+ $award='SUBMITTED_CREDIT';
+ } elsif ($Apache::lonhomework::type eq 'anonsurvey') {
+ $award='ANONYMOUS';
+ } elsif ($Apache::lonhomework::type eq 'anonsurveycred') {
+ $award='ANONYMOUS_CREDIT';
+ }
+ }
&Apache::response::handle_previous(\%previous,$award);
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
$award;
@@ -1132,8 +1159,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 +1216,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 +1250,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;