--- loncom/homework/hint.pm 2002/10/29 06:02:20 1.31 +++ loncom/homework/hint.pm 2003/04/07 23:02:06 1.38 @@ -1,13 +1,13 @@ # The LearningOnline Network with CAPA # implements the tags that control the hints # -# $Id: hint.pm,v 1.31 2002/10/29 06:02:20 albertel Exp $ +# $Id: hint.pm,v 1.38 2003/04/07 23:02:06 albertel Exp $ # # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # -# LON-CAPA is free software; you can redistribute it and/or modify +# LON-CAPA me&aree software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. @@ -50,13 +50,17 @@ sub start_hintgroup { my $hinttries=&Apache::lonnet::EXT("resource.$id.hinttries"); if ( $hinttries eq '') { $hinttries = 1; } &Apache::lonxml::debug("found :$id:$numtries:$hinttries:"); - if ( $numtries < $hinttries ) { - $skiptoend='1'; + if ($Apache::lonhomework::type ne 'exam') { + if ( $numtries < $hinttries ) { + $skiptoend='1'; + } else { + $result='
'; + } } else { - if ($target eq 'web') {$result='
';} + &Apache::lonxml::startredirection; } if ($skiptoend) { - &Apache::lonxml::get_all_text("/hintgroup",$$parser[$#$parser]); + &Apache::lonxml::get_all_text("/hintgroup",$parser); } } elsif ($target eq 'tex') { $result .= '\keephidden{'; @@ -76,8 +80,12 @@ sub end_hintgroup { my $hinttries=&Apache::lonnet::EXT("resource.$id.hinttries"); if ( $hinttries eq '') { $hinttries = 1; } &Apache::lonxml::debug("found :$id:$numtries:$hinttries:"); - if ( $numtries >= $hinttries ) { - $result='
'; + if ($Apache::lonhomework::type ne 'exam') { + if ( $numtries >= $hinttries ) { + $result='
'; + } + } else { + &Apache::lonxml::endredirection; } } elsif ($target eq 'edit') { $result.=&Apache::edit::end_table(); @@ -98,8 +106,10 @@ sub start_numericalhint { $result.=&Apache::edit::text_arg('Name:','name',$token); $result.=&Apache::edit::text_arg('Answer:','answer',$token); if ($token->[1] eq 'numericalhint') { - $result.=&Apache::edit::text_arg('Unit:','unit',$token,5); - $result.=&Apache::edit::text_arg('Format:','format',$token,4); + $result.=&Apache::edit::text_arg('Unit:','unit',$token,5). + &Apache::loncommon::help_open_topic('Physical_Units'); + $result.=&Apache::edit::text_arg('Format:','format',$token,4). + &Apache::loncommon::help_open_topic('Numerical_Response_Format'); } elsif ($token->[1] eq 'stringhint') { $result.=&Apache::edit::select_arg('Type:','type',['cs','ci','mc'],$token); } elsif ($token->[1] eq 'formulahint') { @@ -123,6 +133,8 @@ sub start_numericalhint { $result = &Apache::edit::rebuild_tag($token); $result .= &Apache::edit::handle_insert(); } + } elsif ($target eq 'web') { + &Apache::response::reset_params(); } return $result; } @@ -131,6 +143,9 @@ sub end_numericalhint { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; if ($target eq 'web') { + if (!$Apache::lonxml::default_homework_loaded) { + &Apache::lonxml::default_homework_load($safeeval); + } $safeeval->share_from('capa',['&caparesponse_capa_check_answer']); my $name= &Apache::lonxml::get_param('name',$parstack,$safeeval); &Apache::response::setup_params('numericalhint'); @@ -157,7 +172,7 @@ sub end_numericalhint { if ($ad eq 'EXACT_ANS' || $ad eq 'APPROX_ANS') { push (@Apache::hint::which,$name); } $result=''; } elsif ($target eq 'meta') { - $result=&Apache::response::meta_package_write('numericalhint'); + $result=&Apache::response::meta_package_write($token->[1]); } elsif ($target eq 'edit') { $result.=''.&Apache::edit::end_table; } @@ -166,33 +181,19 @@ sub end_numericalhint { } sub start_stringhint { - my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - my $result; - if ($target eq 'meta') { - $result=&Apache::response::meta_package_write('stringhint'); - } else { - $result.=&start_numericalhint(@_); - } - return $result; + return &start_numericalhint(@_); } sub end_stringhint { - return end_numericalhint(@_); + return &end_numericalhint(@_); } sub start_formulahint { - my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - my $result; - if ($target eq 'meta') { - $result=&Apache::response::meta_package_write('formulahint'); - } else { - $result.=&start_numericalhint(@_); - } - return $result; + return &start_numericalhint(@_); } sub end_formulahint { - return end_numericalhint(@_); + return end_numericalhint(@_); } # a part shows if it is on, if no specific parts are on, then default shows @@ -211,10 +212,10 @@ sub start_hintpart { foreach $which (@Apache::hint::which) { if ($which eq $on) { $show = 1; last } } } if (!$show) { - &Apache::lonxml::get_all_text("/hintpart",$$parser[$#$parser]); + &Apache::lonxml::get_all_text("/hintpart",$parser); } } elsif ($target eq 'grade') { - &Apache::lonxml::get_all_text("/hintpart",$$parser[$#$parser]); + &Apache::lonxml::get_all_text("/hintpart",$parser); } elsif ($target eq 'edit') { $result.= &Apache::edit::tag_start($target,$token); $result.= &Apache::edit::text_arg('On:','on',$token);