Diff for /loncom/homework/response.pm between versions 1.229 and 1.238

version 1.229, 2011/11/29 17:43:30 version 1.238, 2014/12/30 20:03:10
Line 56  use Apache::lonnet; Line 56  use Apache::lonnet;
 use Apache::inputtags();  use Apache::inputtags();
 use Apache::lonmaxima();  use Apache::lonmaxima();
 use Apache::lonr();  use Apache::lonr();
   use Apache::lontexconvert();
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse'));      &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse'));
Line 399  sub end_dataresponse { Line 400  sub end_dataresponse {
     $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}='SUBMITTED';      $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}='SUBMITTED';
  }   }
     } else {      } else {
  $result='Not Permitted to change values.'                  $result=&mt('Not Permitted to change values');
     }      }
  }   }
     }      }
Line 469  sub end_customresponse { Line 470  sub end_customresponse {
  $error = $award;   $error = $award;
  $award = 'ERROR';   $award = 'ERROR';
     }      }
               if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' ||
                    $award eq 'EXACT_ANS')) {
                   if ($Apache::lonhomework::type eq 'survey') {
                       $award='SUBMITTED';
                   } elsif ($Apache::lonhomework::type eq 'surveycred') {
                       $award='SUBMITTED_CREDIT';
                   } elsif ($Apache::lonhomework::type eq 'anonsurvey') {
                       $award='ANONYMOUS';
                   } elsif ($Apache::lonhomework::type eq 'anonsurveycred') {
                       $award='ANONYMOUS_CREDIT';
                   }
               }
     &Apache::response::handle_previous(\%previous,$award);      &Apache::response::handle_previous(\%previous,$award);
     $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=      $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
  $award;   $award;
Line 565  sub start_mathresponse { Line 578  sub start_mathresponse {
 }  }
   
 sub edit_mathresponse_button {  sub edit_mathresponse_button {
     my ($id,$field)=@_;      my ($partid,$id)=@_;
     my $button=&mt('Edit Answer');      my $field = 'HWVAL_'.$partid.'_'.$id;
 #    my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor');      my $btype = $env{'browser.type'};
     my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};      my $bversion = $env{'browser.version'};
     return(<<ENDFORMULABUTTON);      if (($btype eq 'explorer' && $bversion < 9) || ($btype eq 'safari' && $bversion < 3) ||
           ($btype eq 'mozilla' && $bversion < 3)) {
         # DragMath applet
         my $button=&mt('Edit Answer');
   #     my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor');
         my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
         return(<<ENDFORMULABUTTON);
 <script type="text/javascript" language="JavaScript">  <script type="text/javascript" language="JavaScript">
 function edit_${id}_${field} (textarea) {  function LC_mathedit_${field} (LCtextline) {
     thenumber = textarea;      thenumber = LCtextline;
     thedata = document.forms['lonhomework'].elements[textarea].value;      var thedata = '';
     newwin = window.open("/adm/dragmath/applet/MaximaPopup.html","","width=565,height=400,resizable");      if (document.getElementById(LCtextline)) {
           thedata = document.getElementById(LCtextline).value;
       }
       newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable");
 }  }
 </script>  </script>
 <a href="javascript:edit_${id}_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>  <a href="javascript:LC_mathedit_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>
 ENDFORMULABUTTON  ENDFORMULABUTTON
         
       } else {
           # LON-CAPA math equation editor
           my $mathjaxjs;
           unless (lc(&Apache::lontexconvert::tex_engine()) eq 'mathjax') {
               $mathjaxjs = <<"MATHJAX_SCRIPT";
   var mathjaxscript = document.createElement("script");
       mathjaxscript.type = "text/javascript";
       mathjaxscript.src = "/adm/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
       document.body.appendChild(mathjaxscript);
   MATHJAX_SCRIPT
           }
           return(<<EQ_EDITOR_SCRIPT);
   <script type="text/javascript">
     var LCmathField = document.getElementById('${field}');
     LCmathField.className += ' math'; // note the space
     var LCMATH_started;
     if (typeof LCMATH_started === 'undefined') {
       $mathjaxjs
       LCMATH_started = true;
       var script = document.createElement("script");
       script.type = "text/javascript";
       script.src = "/adm/LC_math_editor/LC_math_editor.min.js";
       document.body.appendChild(script);
       window.addEventListener('load', function(e) {
           LCMATH.initEditors();
       }, false);
     }
   </script>
   EQ_EDITOR_SCRIPT
       }
 }  }
   
 sub end_mathresponse {  sub end_mathresponse {
Line 614  sub end_mathresponse { Line 667  sub end_mathresponse {
  $error = $award;   $error = $award;
  $award = 'ERROR';   $award = 'ERROR';
     }      }
               if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' ||
                    $award eq 'EXACT_ANS')) {
                   if ($Apache::lonhomework::type eq 'survey') {
                       $award='SUBMITTED';
                   } elsif ($Apache::lonhomework::type eq 'surveycred') {
                       $award='SUBMITTED_CREDIT';
                   } elsif ($Apache::lonhomework::type eq 'anonsurvey') {
                       $award='ANONYMOUS';
                   } elsif ($Apache::lonhomework::type eq 'anonsurveycred') {
                       $award='ANONYMOUS_CREDIT';
                   }
               }
     &Apache::response::handle_previous(\%previous,$award);      &Apache::response::handle_previous(\%previous,$award);
     $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=      $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
  $award;   $award;
Line 629  sub end_mathresponse { Line 694  sub end_mathresponse {
         my $id = $Apache::inputtags::response[-1];          my $id = $Apache::inputtags::response[-1];
         if (($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')          if (($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')
            && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) {             && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) {
             $result.=&edit_mathresponse_button($id,"HWVAL_$id");              $result.=&edit_mathresponse_button($partid,$id);
         }          }
     }      }
   
Line 839  sub answer_header { Line 904  sub answer_header {
  if ($Apache::lonhomework::type eq 'exam') {   if ($Apache::lonhomework::type eq 'exam') {
     $bit = ($Apache::lonxml::counter+$increment).') ';      $bit = ($Apache::lonxml::counter+$increment).') ';
  } else {   } else {
     $bit .= ' Answer for Part: \verb|'.              $bit .= ' '.&mt('Answer for Part: [_1]',
  $Apache::inputtags::part.'| ';                                  '\verb|'.$Apache::inputtags::part.'|').' ';
  }   }
  push(@answer_bits,$bit);   push(@answer_bits,$bit);
     } else {      } else {
Line 1135  sub scored_response { Line 1200  sub scored_response {
 sub whichorder {  sub whichorder {
     my ($max,$randomize,$showall,$hash,$rndseed)=@_;      my ($max,$randomize,$showall,$hash,$rndseed)=@_;
     #&Apache::lonxml::debug("man $max randomize $randomize");      #&Apache::lonxml::debug("man $max randomize $randomize");
     if (!defined(@{ $$hash{'names'} })) { return; }      my @names;
     my @names = @{ $$hash{'names'} };      if (ref($hash->{'names'}) eq 'ARRAY') {
           @names = @{$hash->{'names'}};
       }
       return if (!@names);
     my @whichopt =();      my @whichopt =();
     my (%top,@toplist,%bottom,@bottomlist);      my (%top,@toplist,%bottom,@bottomlist);
     if (!($showall || ($randomize eq 'no'))) {      if (!($showall || ($randomize eq 'no'))) {
Line 1189  sub show_answer { Line 1257  sub show_answer {
     my $status = $Apache::inputtags::status[-1];      my $status = $Apache::inputtags::status[-1];
     my $canshow = 0;      my $canshow = 0;
     if ($award =~ /^correct/) {      if ($award =~ /^correct/) {
         if ((&Apache::inputtags::grading_is_nonlenient($part)) ||          if (($Apache::lonhomework::history{"resource.$part.awarded"} >= 1) ||
             ($Apache::lonhomework::history{"resource.$part.awarded"} == 1)) {              (&Apache::lonnet::EXT("resource.$part.retrypartial") !~/^1|on|yes$/)) {
             $canshow = 1;              $canshow = 1;
         }             }   
     }      }
Line 1223  sub check_if_computed { Line 1291  sub check_if_computed {
   
 sub pick_foil_for_concept {  sub pick_foil_for_concept {
     my ($target,$attrs,$hinthash,$parstack,$safeeval)=@_;      my ($target,$attrs,$hinthash,$parstack,$safeeval)=@_;
     if (not defined(@{ $Apache::response::conceptgroup{'names'} })) { return; }      my @names;
     my @names = @{ $Apache::response::conceptgroup{'names'} };      if (ref($Apache::response::conceptgroup{'names'}) eq 'ARRAY') {
           @names = @{ $Apache::response::conceptgroup{'names'} };
       }
       return if (!@names);
     my $pick=int(&Math::Random::random_uniform() * ($#names+1));      my $pick=int(&Math::Random::random_uniform() * ($#names+1));
     my $name=$names[$pick];      my $name=$names[$pick];
     push @{ $Apache::response::foilgroup{'names'} }, $name;      push @{ $Apache::response::foilgroup{'names'} }, $name;
Line 1349  sub check_status { Line 1420  sub check_status {
     if (!defined($id)) { $id=$Apache::inputtags::part; }      if (!defined($id)) { $id=$Apache::inputtags::part; }
     my $curtime=&Apache::lonnet::EXT('system.time');      my $curtime=&Apache::lonnet::EXT('system.time');
     my $opendate=&Apache::lonnet::EXT("resource.$id.opendate");      my $opendate=&Apache::lonnet::EXT("resource.$id.opendate");
     my $duedate=&Apache::lonnet::EXT("resource.$id.duedate");      my $duedate=&Apache::lonhomework::due_date($id);
     my $answerdate=&Apache::lonnet::EXT("resource.$id.answerdate");      my $answerdate=&Apache::lonnet::EXT("resource.$id.answerdate");
     if ( $opendate && $curtime > $opendate &&      if ( $opendate && $curtime > $opendate &&
          $duedate && $curtime > $duedate &&           $duedate && $curtime > $duedate &&

Removed from v.1.229  
changed lines
  Added in v.1.238


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