--- loncom/homework/hint.pm 2003/06/24 20:41:56 1.45 +++ loncom/homework/hint.pm 2004/03/12 21:06:19 1.49 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # implements the tags that control the hints # -# $Id: hint.pm,v 1.45 2003/06/24 20:41:56 albertel Exp $ +# $Id: hint.pm,v 1.49 2004/03/12 21:06:19 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -48,9 +48,15 @@ sub start_hintgroup { my $numtries=$Apache::lonhomework::history{"resource.$id.tries"}; if ( $numtries eq '') { $numtries = 0; } my $hinttries=&Apache::lonnet::EXT("resource.$id.hinttries"); + if ($ENV{'request.state'} eq 'construct' && + defined($Apache::inputtags::params{'hinttries'})) { + $hinttries=$Apache::inputtags::params{'hinttries'}; + } + if ( $hinttries eq '') { $hinttries = 1; } &Apache::lonxml::debug("found :$id:$numtries:$hinttries:"); - if ( $numtries < $hinttries ) { + my $gradestatus=$Apache::lonhomework::history{"resource.$id.solved"}; + if ( $numtries < $hinttries || $gradestatus =~ /^correct/) { &Apache::lonxml::get_all_text("/hintgroup",$parser); } &Apache::lonxml::startredirection; @@ -144,7 +150,7 @@ sub end_numericalhint { } $safeeval->share_from('capa',['&caparesponse_capa_check_answer']); my $name= &Apache::lonxml::get_param('name',$parstack,$safeeval); - &Apache::response::setup_params('numericalhint'); + &Apache::response::setup_params('numericalhint',$safeeval); my $partid=$Apache::inputtags::part; my $id=$Apache::inputtags::response['-1']; #id submissions occured under @@ -157,20 +163,20 @@ sub end_numericalhint { $$parstack[$#$parstack]; #need to get all possible parms foreach my $key (keys(%Apache::inputtags::params)) { - $expression.= ';my $'. #' + $expression.= ';my $__LC__'. #' $key.'="'.$Apache::inputtags::params{$key}.'"'; } if ($$tagstack[-1] eq 'formulahint') { - $expression.=';my $type="fml";'; + $expression.=';my $__LC__type="fml";'; } elsif ($$tagstack[-1] eq 'numericalhint') { - $expression.=';my $type="float";'; + $expression.=';my $__LC__type="float";'; } $expression.="');"; my @answer=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval); &Apache::lonxml::debug('answer is'.join(':',@answer)); @{$safeeval->varglob('CAPARESPONSE_CHECK_LIST_answer')}=@answer; - $result = &Apache::run::run($expression,$safeeval); + ($result,my @msgs) = &Apache::run::run($expression,$safeeval); &Apache::lonxml::debug("$expression:result:$result:$Apache::lonxml::curdepth"); my ($awards) = split /:/ , $result; my ($ad) = &Apache::inputtags::finalizeawards(split /,/ , $awards);