--- loncom/homework/response.pm 2007/04/07 00:42:29 1.161 +++ loncom/homework/response.pm 2007/04/18 00:19:37 1.163 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.161 2007/04/07 00:42:29 albertel Exp $ +# $Id: response.pm,v 1.163 2007/04/18 00:19:37 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -447,6 +447,9 @@ sub end_customresponse { $result .= &Apache::response::answer_part('customresponse',$answer); $result .= &Apache::response::answer_footer('customresponse'); } + if ($target eq 'web') { + &setup_prior_tries_hash(\&format_prior_response_math); + } if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { &Apache::lonxml::increment_counter(&Apache::response::repetition()); @@ -459,6 +462,11 @@ sub end_customresponse { return $result; } +sub format_prior_response_custom { + my ($mode,$answer) =@_; + return ''. + &HTML::Entities::encode($answer,'"<>&').''; +} sub start_mathresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; @@ -536,6 +544,10 @@ sub end_mathresponse { } } } + if ($target eq 'web') { + &setup_prior_tries_hash(\&format_prior_response_math); + } + pop(@Apache::lonxml::namespace); pop(@Apache::response::custom_answer); pop(@Apache::response::custom_answer_type); @@ -544,6 +556,12 @@ sub end_mathresponse { return $result; } +sub format_prior_response_math { + my ($mode,$answer) =@_; + return ''. + &HTML::Entities::encode($answer,'"<>&').''; +} + sub implicit_multiplication { my ($expression)=@_; # Escape scientific notation, so 3e8 does not become 3*e*8 @@ -1095,6 +1113,33 @@ sub check_status { return 2; } +sub setup_prior_tries_hash { + my ($func,$data) = @_; + my $part = $Apache::inputtags::part; + my $id = $Apache::inputtags::response[-1]; + foreach my $i (1..$Apache::lonhomework::history{'version'}) { + my $sub_key = "$i:resource.$part.$id.submission"; + next if (!exists($Apache::lonhomework::history{$sub_key})); + my @other_data; + foreach my $datum (@{ $data }) { + if (ref($datum)) { + push(@other_data,$datum); + } else { + my $info_key = "$i:resource.$part.$id.$datum"; + push(@other_data,$Apache::lonhomework::history{$info_key}); + } + } + + my $output = + &$func('grade', + $Apache::lonhomework::history{$sub_key}, + \@other_data); + if (defined($output)) { + $Apache::inputtags::submission_display{$sub_key} = $output; + } + } +} + 1; __END__