# The LON-CAPA response handler
#
# various response type definitons response definition
#
# YEAR=2000
# 9/14,9/19,11/21,11/22 Guy Albertelli
# 11/23,11/24,11/28 Gerd Kortemeyer
# 11/28,11/29,12/4,12/11,12/19,12/28 Guy Albertelli
# YEAR=2001
# 1/8,1/10,1/19,1/22,2/7,2/19,4/4,4/7,4/16,5/4,5/31,6/2,6/29 Guy Albertelli
# 7/10,7/13,8/3
# 8/4 Gerd Kortemeyer
# 8/5,8/6 Guy Albertelli
# 8/6 Scott Harrison
package Apache::response;
use strict;
# ======================================================================= BEGIN
sub BEGIN {
&Apache::lonxml::register('Apache::response',('responseparam',
'caparesponse',
'numericalresponse',
'stringresponse',
'radiobuttonresponse',
'optionresponse',
'imageresponse',
'essayresponse'));
}
# ======================================= Start response (return scalar string)
sub start_response {
my ($parstack,$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);
@Apache::inputtags::inputlist = ();
return $id;
}
# ================================================================ End response
sub end_response {
pop @Apache::inputtags::response;
@Apache::inputtags::inputlist = ();
return '';
}
# =========================================================== Set random number
# 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 '';
}
# ================================= write meta parameter (return scalar string)
sub meta_parameter_write {
my ($name,$type,$default,$display) = @_;
return '
\nsimple caparesponse\n";
return &Apache::caparesponse::start_caparesponse($target,$token,$tagstack,
$parstack,$parser,
$safeeval,$style);
}
# ================================ Start string response (return scalar string)
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);
}
# ============================= Start numerical response (return scalar string)
sub start_numericalresponse {
require Apache::caparesponse;
import Apache::caparesponse;
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_;
return &Apache::caparesponse::start_numericalresponse
($target,$token,$tagstack,$parstack,$parser,$safeeval,$style);
}
# ========================== Start radio button response (return scalar string)
sub start_radiobuttonresponse {
require Apache::radiobuttonresponse;
import Apache::radiobuttonresponse;
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_;
return &Apache::radiobuttonresponse::start_radiobuttonresponse(
$target,$token,$tagstack,$parstack,$parser,$safeeval,$style);
}
# ================================ Start option response (return scalar string)
sub start_optionresponse {
require Apache::optionresponse;
import Apache::optionresponse;
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_;
return &Apache::optionresponse::start_optionresponse(
$target,$token,$tagstack,$parstack,$parser,$safeeval,$style);
}
# ================================= Start image response (return scalar string)
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);
}
# ================================= Start essay response (return scalar string)
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);
}
# ================================= Start param response (return scalar string)
sub start_responseparam {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
if ($target eq 'grade' || $target eq 'web') {
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:");
if ($value eq '' || $value eq 'con_lost') {
&Apache::lonxml::debug("defaulting");
$Apache::inputtags::params{$name}=$default;
} else {
&Apache::lonxml::debug("using value");
$Apache::inputtags::params{$name}=$value;
}
return '';
} elsif ($target eq 'meta') {
return &meta_parameter_write($token->[2]->{'name'},
$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 '';
}
}
# ========================================================== End response param
sub end_responseparam {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
if ($target eq 'edit') { return ('','no'); }
return '';
}
1;
__END__
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.