version 1.23, 2010/11/06 14:37:24
|
version 1.24, 2010/11/06 16:12:39
|
Line 344 sub end_backgroundplot {
|
Line 344 sub end_backgroundplot {
|
sub start_splinerule { |
sub start_splinerule { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result=''; |
my $result=''; |
my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1]; |
my $label=&Apache::lonxml::get_param('index',$parstack,$safeeval); |
if ($target eq 'edit') { |
$Apache::functionplotresponse::counter++; |
$result=&Apache::edit::tag_start($target,$token,'Spline Evaluation Rule'). |
if ($label=~/\W/) { |
&Apache::edit::end_row(); |
&Apache::lonxml::warning(&mt('Spline Rule indices should only contain alphanumeric characters.')); |
|
} |
|
$label=~s/\W//gs; |
|
unless ($label) { |
|
$label='R'.$Apache::functionplotresponse::counter; |
|
} else { |
|
$label='R'.$label; |
|
} |
|
if ($Apache::functionplotresponse::splineorder{$label}) { |
|
&Apache::lonxml::error(&mt('Spline Rule indices must be unique.')); |
|
} |
|
|
|
|
|
if ($target eq 'grade') { |
|
# Simply remember - in order - for later |
|
my $beginninglabel=&Apache::lonxml::get_param('beginninglabel',$parstack,$safeeval); |
|
my $endinglabel=&Apache::lonxml::get_param('endinglabel',$parstack,$safeeval); |
|
if (($beginninglabel=~/\W/) || ($endinglabel=~/W/)) { |
|
&Apache::lonxml::warning(&mt('Spline Rule labels must be alphanumeric.')); |
|
} |
|
$beginninglabel=~s/\W//gs; |
|
$endinglabel=~s/\W//gs; |
|
my $relationship=&Apache::lonxml::get_param('relationship',$parstack,$safeeval); |
|
$relationship=~s/\W//gs; |
|
$relationship=lc($relationship); |
|
unless ($relationship=~/^(eq|ge|gt|le|lt|ne)$/) { |
|
&Apache::lonxml::warning(&mt('Spline Rule relationship not defined.')); |
|
$relationship='eq'; |
|
} |
|
my $derivative=&Apache::lonxml::get_param('derivative',$parstack,$safeeval); |
|
unless (($derivative==0) || ($derivative==1) || ($derivative==2)) { |
|
&Apache::lonxml::warning(&mt('Spline Rule derivative not defined.')); |
|
$derivative=0; |
|
} |
|
push(@Apache::functionplotresponse::splinerules,join(':',( |
|
$label, |
|
$derivative, |
|
&Apache::lonxml::get_param('beginningvalue',$parstack,$safeeval), |
|
$beginninglabel, |
|
&Apache::lonxml::get_param('endingvalue',$parstack,$safeeval), |
|
$endinglabel, |
|
$relationship, |
|
&Apache::lonxml::get_param('value',$parstack,$safeeval) |
|
))); |
|
} elsif ($target eq 'edit') { |
|
$result=&Apache::edit::tag_start($target,$token,'Spline Evaluation Rule'). |
|
&Apache::edit::end_row(); |
} |
} |
return $result; |
return $result; |
} |
} |
Line 657 sub start_functionplotresponse {
|
Line 703 sub start_functionplotresponse {
|
undef %Apache::functionplotresponse::previous; |
undef %Apache::functionplotresponse::previous; |
$Apache::functionplotresponse::inputfields=''; |
$Apache::functionplotresponse::inputfields=''; |
$Apache::functionplotresponse::counter=0; |
$Apache::functionplotresponse::counter=0; |
|
# Remember rules |
|
undef @Apache::functionplotresponse::splinerules; |
# Part and ID |
# Part and ID |
my $partid=$Apache::inputtags::part; |
my $partid=$Apache::inputtags::part; |
my $id=&Apache::response::start_response($parstack,$safeeval); |
my $id=&Apache::response::start_response($parstack,$safeeval); |
Line 729 sub start_functionplotresponse {
|
Line 777 sub start_functionplotresponse {
|
return $result; |
return $result; |
} |
} |
|
|
|
sub splinerulecheck { |
|
my ($rule)=@_; |
|
return 0; |
|
} |
|
|
|
|
sub end_functionplotresponse { |
sub end_functionplotresponse { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
&Apache::response::end_response; |
&Apache::response::end_response; |
Line 758 sub end_functionplotresponse {
|
Line 812 sub end_functionplotresponse {
|
$xmin=(defined($xmin)?$xmin:-10); |
$xmin=(defined($xmin)?$xmin:-10); |
my $xmax=&Apache::lonxml::get_param('xmax',$parstack,$safeeval); |
my $xmax=&Apache::lonxml::get_param('xmax',$parstack,$safeeval); |
$xmax=(defined($xmax)?$xmax:10); |
$xmax=(defined($xmax)?$xmax:10); |
my $ad; |
my $ad=''; |
if (&populate_arrays($internalid,$xmin,$xmax) eq 'no_func') { |
if (&populate_arrays($internalid,$xmin,$xmax) eq 'no_func') { |
$ad='NOT_FUNCTION'; |
$ad='NOT_FUNCTION'; |
} else { |
} else { |
$ad='INCORRECT'; |
# We have a function that we can actually grade, go through the spline rules. |
|
undef %Apache::functionplotresponse::splinerulelabels; |
|
foreach my $rule (@Apache::functionplotresponse::splinerules) { |
|
unless (&splinerulecheck($rule)) { |
|
$ad='INCORRECT'; |
|
last; |
|
} |
|
} |
|
# If it's not wrong, it's correct |
|
unless ($ad) { $ad='EXACT_ANS' }; |
} |
} |
|
|
# |
# |