Diff for /loncom/homework/functionplotresponse.pm between versions 1.23 and 1.24

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' };
         }          }
   
 #  #

Removed from v.1.23  
changed lines
  Added in v.1.24


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>