--- loncom/homework/caparesponse/caparesponse.pm 2001/03/21 18:25:14 1.29 +++ loncom/homework/caparesponse/caparesponse.pm 2001/07/19 21:26:22 1.35 @@ -6,17 +6,17 @@ use strict; use capa; sub BEGIN { - &Apache::lonxml::register('Apache::caparesponse',('caparesponse','numericalresponse')); + &Apache::lonxml::register('Apache::caparesponse',('caparesponse','numericalresponse','stringresponse')); } sub start_caparesponse { - my ($target,$token,$parstack,$parser,$safeeval)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $id = &Apache::response::start_response($parstack,$safeeval); return ''; } sub end_caparesponse { - my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result = ''; if ( $target eq 'grade' ) { if ( defined $ENV{'form.submitted'}) { @@ -44,7 +44,7 @@ sub end_caparesponse { } } } - } else { + } elsif ($target eq 'web') { #$result .= "The correct answer is ".&Apache::run::run("{$$parstack['-1'];".'return $answer}',$safeeval)."\n"; } #Apache::lonxml::debug("\n
\nreal end caparesponse
\n"); @@ -53,13 +53,38 @@ sub end_caparesponse { } sub start_numericalresponse { - my ($target,$token,$parstack,$parser,$safeeval)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $id = &Apache::response::start_response($parstack,$safeeval); - return ''; + my $result; + if ($target eq 'edit') { + $result.=&Apache::edit::tag_start($target,$token,&Apache::lonxml::description($token)); + $result.=&Apache::edit::text_arg('Answer:','answer',$token); + if ($token->[1] eq 'numericalresponse') { + $result.=&Apache::edit::text_arg('Unit:','unit',$token) + } else { + $result.=&Apache::edit::select_arg('Type:','type', + ['cs','ci','mc'],$token) + } + $result.=''; + } elsif ($target eq 'modified') { + my $constructtag; + if ($token->[1] eq 'numericalresponse') { + $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval, + 'answer','unit'); + } else { + $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval, + 'answer','type'); + } + if ($constructtag) { + $result = &Apache::edit::rebuild_tag($token); + $result.=&Apache::edit::handle_insert(); + } + } + return $result; } sub end_numericalresponse { - my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result = ''; if ( $target eq 'grade' ) { if ( defined $ENV{'form.submitted'}) { @@ -106,11 +131,21 @@ sub end_numericalresponse { chop $result; $result.=" $unit.

"; } + } elsif ($target eq 'edit') { + $result.=''.&Apache::edit::end_table; } &Apache::response::end_response; return $result; } +sub start_stringresponse { + return start_numericalresponse(@_); +} + +sub end_stringresponse { + return end_numericalresponse(@_); +} + 1; __END__