--- loncom/homework/response.pm 2001/01/22 19:58:09 1.20 +++ loncom/homework/response.pm 2001/08/07 12:14:42 1.39 @@ -2,19 +2,19 @@ # various response type definitons response definition # 11/23,11/24,11/28 Gerd Kortemeyer +# Guy Albertelli +# 08/04,08/07 Gerd Kortemeyer package Apache::response; use strict; sub BEGIN { - &Apache::lonxml::register('Apache::response',('responseparam','caparesponse','numericalresponse','radiobuttonresponse','optionresponse')); + &Apache::lonxml::register('Apache::response',('responseparam','caparesponse','numericalresponse','stringresponse','radiobuttonresponse','optionresponse','imageresponse','essayresponse')); } sub start_response { my ($parstack,$safeeval)=@_; - my $args =''; - if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; } - my $id = &Apache::run::run("{$args;".'return $id}',$safeeval); + my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); if ($id eq '') { $id = $Apache::lonxml::curdepth; } push (@Apache::inputtags::response,$id); push (@Apache::inputtags::responselist,$id); @@ -28,6 +28,23 @@ sub end_response { return ''; } +# used by response to set the non-safe space random number generator to something +# that is stable and unique based on the part number and response number +sub setrandomnumber { + my $rndseed=&Apache::lonnet::rndseed(); + &Apache::lonxml::debug("randseed $rndseed"); +# $rndseed=unpack("%32i",$rndseed); + $rndseed=$rndseed + +(&Apache::lonnet::numval($Apache::inputtags::part) << 10); + if (defined($Apache::inputtags::response['-1'])) { + $rndseed=$rndseed + +&Apache::lonnet::numval($Apache::inputtags::response['-1']); + } + srand($rndseed); + &Apache::lonxml::debug("randseed $rndseed"); + return ''; +} + sub meta_parameter_write { my ($name,$type,$default,$display)=@_; return '' + ."\n"; +} + sub meta_stores_write { my ($name,$type,$display)=@_; return '\nsimple caparesponse\n"; + return &Apache::caparesponse::start_caparesponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } -sub start_caparesponse { +sub start_stringresponse { + require Apache::caparesponse; + import Apache::caparesponse; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return &Apache::caparesponse::start_stringresponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); +} + +sub start_numericalresponse { require Apache::caparesponse; import Apache::caparesponse; - my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; -# print "\n
\nsimple caparesponse\n"; - Apache::caparesponse::start_caparesponse($target,$token,$parstack,$parser,$safeeval,$style);; - return ""; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return &Apache::caparesponse::start_numericalresponse + ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } sub start_radiobuttonresponse { require Apache::radiobuttonresponse; import Apache::radiobuttonresponse; - my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; - Apache::radiobuttonresponse::start_radiobuttonresponse($target,$token,$parstack,$parser,$safeeval,$style);; - return ""; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return &Apache::radiobuttonresponse::start_radiobuttonresponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } sub start_optionresponse { require Apache::optionresponse; import Apache::optionresponse; - my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; - Apache::optionresponse::start_optionresponse($target,$token,$parstack,$parser,$safeeval,$style);; - return ""; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return &Apache::optionresponse::start_optionresponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); +} + +sub start_imageresponse { + require Apache::imageresponse; + import Apache::imageresponse; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return &Apache::imageresponse::start_imageresponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); +} + +sub start_essayresponse { + require Apache::essayresponse; + import Apache::essayresponse; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + return &Apache::essayresponse::start_essayresponse($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); } sub start_responseparam { - my ($target,$token,$parstack,$parser,$safeeval)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; if ($target eq 'grade' || $target eq 'web') { - my $args=''; - if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; } - my $default = &Apache::run::run("{$args;".'return $default}',$safeeval); - my $name = &Apache::run::run("{$args;".'return $name}',$safeeval); + my $default= &Apache::lonxml::get_param('default',$parstack,$safeeval); + my $name= &Apache::lonxml::get_param('name',$parstack,$safeeval); &Apache::lonxml::debug("looking for resource.$Apache::inputtags::part.$name"); my $value = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.$name"); &Apache::lonxml::debug("$name has value :$value: and default :$default:"); @@ -140,12 +204,35 @@ sub start_responseparam { $token->[2]->{'type'}, $token->[2]->{'default'}, $token->[2]->{'description'}); + } elsif ($target eq 'edit') { + my $result.=&Apache::edit::tag_start($target,$token,&Apache::lonxml::description($token)); + $result.=&Apache::edit::text_arg('Name:','name',$token). + &Apache::edit::text_arg('Type:','type',$token). + &Apache::edit::text_arg('Description:','description',$token). + &Apache::edit::text_arg('Default:','default',$token). + ""; + $result.=&Apache::edit::end_table; + return $result; + } elsif ($target eq 'modified') { + my $result; + my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval, + 'name','type','description', + 'default'); + if ($constructtag) { + $result = &Apache::edit::rebuild_tag($token); + $result.=&Apache::edit::handle_insert(); + } + return $result; + } else { return ''; } } sub end_responseparam { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; + if ($target eq 'edit') { return ('','no'); } + return ''; } 1; 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.