Diff for /loncom/homework/response.pm between versions 1.146 and 1.155

version 1.146, 2006/08/01 14:41:46 version 1.155, 2006/12/15 21:10:13
Line 30  package Apache::response; Line 30  package Apache::response;
 use strict;  use strict;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::lonmaxima();
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse'));      &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse'));
Line 306  sub handle_previous { Line 307  sub handle_previous {
 }  }
   
 sub view_or_modify {  sub view_or_modify {
     my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();      my ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser();
     my $myself=0;      my $myself=0;
     if ( ($name eq $env{'user.name'}) && ($domain eq $env{'user.domain'}) ) {      if ( ($name eq $env{'user.name'}) && ($domain eq $env{'user.domain'}) ) {
  $myself=1;   $myself=1;
Line 340  sub end_dataresponse { Line 341  sub end_dataresponse {
     if ( $target eq 'web' ) {      if ( $target eq 'web' ) {
     } elsif ($target eq 'grade' ) {      } elsif ($target eq 'grade' ) {
  if ( defined $env{'form.submitted'}) {   if ( defined $env{'form.submitted'}) {
     my ($symb,$courseid,$domain,$name)=&Apache::lonxml::whichuser();      my ($symb,$courseid,$domain,$name)=&Apache::lonnet::whichuser();
     my $allowed=&Apache::lonnet::allowed('mgr',$courseid);      my $allowed=&Apache::lonnet::allowed('mgr',$courseid);
     if ($allowed) {      if ($allowed) {
  &Apache::response::setup_params('dataresponse',$safeeval);   &Apache::response::setup_params('dataresponse',$safeeval);
Line 373  sub start_customresponse { Line 374  sub start_customresponse {
   if (  &Apache::response::show_answer() ) {    if (  &Apache::response::show_answer() ) {
     my $answer = &Apache::lonxml::get_param('answerdisplay',$parstack,      my $answer = &Apache::lonxml::get_param('answerdisplay',$parstack,
    $safeeval);     $safeeval);
     $Apache::inputtags::answertxt{$id}=$answer;      $Apache::inputtags::answertxt{$id}=[$answer];
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::tag_start($target,$token);   $result.=&Apache::edit::tag_start($target,$token);
Line 464  sub start_mathresponse { Line 465  sub start_mathresponse {
   if (  &Apache::response::show_answer() ) {    if (  &Apache::response::show_answer() ) {
     my $answer = &Apache::lonxml::get_param('answerdisplay',$parstack,      my $answer = &Apache::lonxml::get_param('answerdisplay',$parstack,
    $safeeval);     $safeeval);
     $Apache::inputtags::answertxt{$id}=$answer;      $Apache::inputtags::answertxt{$id}=[$answer];
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::tag_start($target,$token);   $result.=&Apache::edit::tag_start($target,$token);
  $result.=&Apache::edit::text_arg('String to display for answer:',   $result.=&Apache::edit::text_arg('String to display for answer:',
  'answerdisplay',$token);   'answerdisplay',$token);
    $result.=&Apache::edit::select_arg('Algebra System:',
      'cas',
      ['maxima'],
      $token);
    $result.=&Apache::edit::text_arg('Argument Array:',
    'args',$token);
  $result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();   $result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $constructtag;   my $constructtag;
  $constructtag=&Apache::edit::get_new_args($token,$parstack,   $constructtag=&Apache::edit::get_new_args($token,$parstack,
   $safeeval,'answerdisplay');    $safeeval,'answerdisplay','cas','args');
  if ($constructtag) {   if ($constructtag) {
     $result = &Apache::edit::rebuild_tag($token);      $result = &Apache::edit::rebuild_tag($token);
     $result.=&Apache::edit::handle_insert();      $result.=&Apache::edit::handle_insert();
Line 494  sub end_mathresponse { Line 501  sub end_mathresponse {
     my $id=$Apache::inputtags::response[-1];      my $id=$Apache::inputtags::response[-1];
     if ( $target eq 'grade' && &Apache::response::submitted() ) {      if ( $target eq 'grade' && &Apache::response::submitted() ) {
  my $response = &Apache::response::getresponse();   my $response = &Apache::response::getresponse();
  if ( $response =~ /[^\s]/ &&    if ( $response =~ /[^\s]/ ) {
      $Apache::response::custom_answer_type eq 'loncapa/perl') {  
     if (!$Apache::lonxml::default_homework_loaded) {      if (!$Apache::lonxml::default_homework_loaded) {
  &Apache::lonxml::default_homework_load($safeeval);   &Apache::lonxml::default_homework_load($safeeval);
     }      }
Line 504  sub end_mathresponse { Line 510  sub end_mathresponse {
     $Apache::lonhomework::results{"resource.$part.$id.submission"}=      $Apache::lonhomework::results{"resource.$part.$id.submission"}=
  $response;   $response;
     my $error;      my $error;
     ${$safeeval->varglob('LONCAPA::mathresponse_submission')}=      my $award;
  $response;      my $cas = &Apache::lonxml::get_param('cas',$parstack,$safeeval);
                   if ($cas eq 'maxima') {
     my $award = &Apache::run::run('{ my $submission=$LONCAPA::mathresponse_submission;'.$Apache::response::custom_answer.'}',$safeeval);                  my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)];
                   $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer,$response,$args);
               }
     if (!&Apache::inputtags::valid_award($award)) {      if (!&Apache::inputtags::valid_award($award)) {
  $error = $award;   $error = $award;
  $award = 'ERROR';   $award = 'ERROR';
Line 686  sub setup_params { Line 694  sub setup_params {
   
 {  {
     my @answer_bits;      my @answer_bits;
       my $need_row_start;
   
 sub answer_header {  sub answer_header {
     my ($type,$increment) = @_;      my ($type,$increment,$rows) = @_;
     my $result;      my $result;
     if ($env{'form.answer_output_mode'} eq 'tex') {      if ($env{'form.answer_output_mode'} eq 'tex') {
  undef(@answer_bits);   undef(@answer_bits);
Line 701  sub answer_header { Line 710  sub answer_header {
  }   }
  push(@answer_bits,$bit);   push(@answer_bits,$bit);
     } else {      } else {
    my $td = '<td '.(defined($rows)?'rowspan="'.$rows.'"':'').'>';
  $result  = '<table border="1"><tr>';   $result  = '<table border="1"><tr>';
  if ($Apache::lonhomework::type eq 'exam') {   if ($Apache::lonhomework::type eq 'exam') {
     $result .= '<td>'.($Apache::lonxml::counter+$increment). ')</td>';      $result .= $td.($Apache::lonxml::counter+$increment). ')</td>';
  } else {   } else {
     $result .= '<td>Answer for Part:'.$Apache::inputtags::part.'</td>';      $result .= $td.&mt('Answer for Part: [_1]',
          $Apache::inputtags::part).'</td>';
  }   }
  $result .= "\n";   $result .= "\n";
    $need_row_start = 0;
       }
       return $result;
   }
   
   sub next_answer {
       my ($type) = @_;
       my $result;
       if ($env{'form.answer_output_mode'} eq 'tex') {
    # FIXME ... need to do something with tex mode
       } else {
    $result .= "</tr>";
    $need_row_start = 1;
     }      }
     return $result;      return $result;
 }  }
   
 sub answer_part {  sub answer_part {
     my ($type,$answer) = @_;      my ($type,$answer,$args) = @_;
     my $result;      my $result;
     if ($env{'form.answer_output_mode'} eq 'tex') {      if ($env{'form.answer_output_mode'} eq 'tex') {
  my $to_use='|';   if (!$args->{'no_verbatim'}) {
  foreach my $value (32..126) {      my $to_use='|';
     my $char=pack('c',$value);      foreach my $value (32..126) {
     if ($answer !~ /\Q$char\E/) {   my $char=pack('c',$value);
  $to_use=$char;   if ($answer !~ /\Q$char\E/) {
  last;      $to_use=$char;
       last;
    }
       }
       if ($answer ne '') {
    $answer = '\verb'.$to_use.$answer.$to_use;
     }      }
  }   }
  if ($answer ne '') {   if ($answer ne '') {
     push(@answer_bits,'\verb'.$to_use.$answer.$to_use);      push(@answer_bits,$answer);
  }   }
     } else {      } else {
  $result = '<td>'.$answer.'</td>';   if ($need_row_start) {
       $result .= '<tr>';
       $need_row_start = 0;
    }
    $result .= '<td>'.$answer.'</td>';
     }      }
     return $result;      return $result;
 }  }
Line 751  sub answer_footer { Line 784  sub answer_footer {
   
 sub showallfoils {  sub showallfoils {
     if (defined($env{'form.showallfoils'})) {      if (defined($env{'form.showallfoils'})) {
  my ($symb)=&Apache::lonxml::whichuser();   my ($symb)=&Apache::lonnet::whichuser();
  if (($env{'request.state'} eq 'construct') ||    if (($env{'request.state'} eq 'construct') || 
     ($env{'user.adv'} && $symb eq '')      ||      ($env{'user.adv'} && $symb eq '')      ||
             ($Apache::lonhomework::viewgrades) ) {              ($Apache::lonhomework::viewgrades) ) {
Line 973  sub submitted { Line 1006  sub submitted {
 }  }
   
 sub add_to_gradingqueue {  sub add_to_gradingqueue {
     my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();      my ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser();
     if (   $courseid eq ''      if (   $courseid eq ''
  || $symb eq ''   || $symb eq ''
  || $env{'request.state'} eq 'construct'   || $env{'request.state'} eq 'construct'

Removed from v.1.146  
changed lines
  Added in v.1.155


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