Diff for /loncom/homework/hint.pm between versions 1.72 and 1.76

version 1.72, 2008/10/24 16:22:54 version 1.76, 2009/06/28 19:40:41
Line 26 Line 26
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
   
   
   
 package Apache::hinttags;   package Apache::hinttags; 
   
 use strict;  use strict;
Line 33  use Apache::lonnet(); Line 35  use Apache::lonnet();
 use capa;  use capa;
 use Apache::caparesponse();  use Apache::caparesponse();
 use Apache::lonmaxima();  use Apache::lonmaxima();
   use Apache::lonr();
   use Apache::chemresponse();
 use Apache::response();  use Apache::response();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Storable qw(dclone);  use Storable qw(dclone);
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::hinttags',('hintgroup','hintpart','numericalhint','stringhint','formulahint','optionhint','radiobuttonhint','mathhint','customhint'));      &Apache::lonxml::register('Apache::hinttags',('hintgroup','hintpart','numericalhint','stringhint','formulahint','optionhint','radiobuttonhint','mathhint','customhint','reactionhint','organichint'));
 }  }
   
   
Line 242  sub start_mathhint { Line 246  sub start_mathhint {
         $result.=&Apache::edit::text_arg('Name:','name',$token);          $result.=&Apache::edit::text_arg('Name:','name',$token);
         $result.=&Apache::edit::select_arg('Algebra System:',          $result.=&Apache::edit::select_arg('Algebra System:',
                                            'cas',                                             'cas',
                                            ['maxima'],                                             ['maxima','R'],
                                            $token);                                             $token);
         $result.=&Apache::edit::text_arg('Argument Array:',          $result.=&Apache::edit::text_arg('Argument Array:',
                                          'args',$token);                                           'args',$token);
Line 280  sub end_mathhint { Line 284  sub end_mathhint {
     my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)];      my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)];
     $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer[-1],$response,$args);      $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer[-1],$response,$args);
  }   }
           if ($cas eq 'R') {
               my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)];
               $award=&Apache::lonr::r_run($Apache::response::custom_answer[-1],$response,$args);
           }
         if ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS') {          if ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS') {
             push (@Apache::hint::which,$name);              push (@Apache::hint::which,$name);
         }          }
Line 460  sub end_stringhint { Line 468  sub end_stringhint {
     return $result;      return $result;
 }  }
   
   # reactionhint
   
   sub start_reactionhint {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
       #do everything in end, so intervening <responseparams> work
       &Apache::response::start_hintresponse($parstack,$safeeval);
       my $result;
       if ($target eq 'edit') {
           $result.=&Apache::edit::tag_start($target,$token);
           $result.=&Apache::edit::text_arg('Name:','name',$token);
           $result.=&Apache::edit::text_arg('Answer:','answer',$token);
           $result.=&Apache::edit::end_row();
           $result.=&Apache::edit::start_spanning_row();
       } elsif ($target eq 'modified') {
           my $constructtag;
           $constructtag=&Apache::edit::get_new_args($token,$parstack,
                                                     $safeeval,'name','answer',
                                                     );
           $result  = &Apache::edit::rebuild_tag($token);
       } elsif ($target eq 'web') {
           &Apache::response::reset_params();
       }
       return $result;
   }
   
   sub end_reactionhint {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
       my $result;
       if ($target eq 'web') {
           if (!$Apache::lonxml::default_homework_loaded) {
               &Apache::lonxml::default_homework_load($safeeval);
           }
           my $hint_name= &Apache::lonxml::get_param('name',$parstack,$safeeval);
           &Apache::response::setup_params('reactionhint',$safeeval);
           my $partid=$Apache::inputtags::part;
           my $id=$Apache::inputtags::hint[-1];
           #id submissions occurred under
           my $submitid=$Apache::inputtags::response[-1];
           my $response = $Apache::lonhomework::history{
                               "resource.$partid.$submitid.submission"};
           &Apache::lonxml::debug("hintgroup is using $response<br />\n");
           my $answer=&Apache::lonxml::get_param('answer',$parstack,
                                                     $safeeval);
           &Apache::lonxml::debug("current $response");
           &Apache::lonxml::debug("current $answer");
           if (&Apache::chemresponse::chem_standard_order($response) eq 
               &Apache::chemresponse::chem_standard_order($answer)) {
               push(@Apache::hint::which,$hint_name);
           }
           $result='';
       } elsif ($target eq 'meta') {
           $result=&Apache::response::meta_package_write($token->[1]);
       } elsif ($target eq 'edit') {
           $result.=&Apache::edit::end_row().&Apache::edit::end_table();
       }
       &Apache::response::end_hintresponse();
       return $result;
   }
   
   # organichint
   
   sub start_organichint {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
       #do everything in end, so intervening <responseparams> work
       &Apache::response::start_hintresponse($parstack,$safeeval);
       my $result;
       if ($target eq 'edit') {
           $result.=&Apache::edit::tag_start($target,$token);
           $result.=&Apache::edit::text_arg('Name:','name',$token);
           $result.=&Apache::edit::text_arg('Answer:','answer',$token);
           $result.=&Apache::edit::end_row();
           $result.=&Apache::edit::start_spanning_row();
       } elsif ($target eq 'modified') {
           my $constructtag;
           $constructtag=&Apache::edit::get_new_args($token,$parstack,
                                                     $safeeval,'name','answer',
                                                     );
           $result  = &Apache::edit::rebuild_tag($token);
       } elsif ($target eq 'web') {
           &Apache::response::reset_params();
       }
       return $result;
   }
   
   sub end_organichint {
       my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
       my $result;
       if ($target eq 'web') {
           if (!$Apache::lonxml::default_homework_loaded) {
               &Apache::lonxml::default_homework_load($safeeval);
           }
           my $hint_name= &Apache::lonxml::get_param('name',$parstack,$safeeval);
           &Apache::response::setup_params('organichint',$safeeval);
           my $partid=$Apache::inputtags::part;
           my $id=$Apache::inputtags::hint[-1];
           #id submissions occurred under
           my $submitid=$Apache::inputtags::response[-1];
           my $response = $Apache::lonhomework::history{
                               "resource.$partid.$submitid.submission"};
           &Apache::lonxml::debug("hintgroup is using $response<br />\n");
           my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);
           my %previous = &Apache::response::check_for_previous($response,$partid,$id);
           foreach my $answer (@answers) {
               &Apache::lonxml::debug("submitted a $response for $answer<br \>\n");
               if ($response eq $answer) {
                  push(@Apache::hint::which,$hint_name);
                  last;
               }
           }
           $result='';
       } elsif ($target eq 'meta') {
           $result=&Apache::response::meta_package_write($token->[1]);
       } elsif ($target eq 'edit') {
           $result.=&Apache::edit::end_row().&Apache::edit::end_table();
       }
       &Apache::response::end_hintresponse();
       return $result;
   }
   
   
 # a part shows if it is on, if no specific parts are on, then default shows  # a part shows if it is on, if no specific parts are on, then default shows
 sub start_hintpart {  sub start_hintpart {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
Line 649  sub end_radiobuttonhint { Line 777  sub end_radiobuttonhint {
 }  }
 1;  1;
 __END__  __END__
   
   
   =head1 NAME
   
   Apache::hinttags
   
   =head1 SYNOPSIS
   
   This handler coordinates the delivery of hints to students working on LON-CAPA problems and assignments.
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   =head1 SUBROUTINES
   
   =over
   
   =item start_hintgroup()
   
   =item end_hintgroup()
   
   =item start_numericalhint()
   
   =item end_numericalhint()
   
   =item start_formulahint()
   
   =item end_formulahint()
   
   =item start_mathhint()
   
   =item end_mathhint()
   
   =item start_customhint()
   
   =item end_customhint()
   
   =item start_stringhint()
   
   =item end_stringhint()
   
   =item start_hintpart()
   
   =item end_hintpart()
   
   =item start_optionhint()
   
   =item end_optionhint()
   
   =item start_radiobuttonhint()
   
   =item end_radiobuttonhint()
   
   =back
   
   =cut

Removed from v.1.72  
changed lines
  Added in v.1.76


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
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.