Diff for /loncom/homework/response.pm between versions 1.239 and 1.244.2.3

version 1.239, 2015/02/20 22:14:49 version 1.244.2.3, 2021/01/12 15:57:18
Line 181  sub setrandomnumber { Line 181  sub setrandomnumber {
     } else {      } else {
  ($rndmod,$rndmod2)=&Apache::lonnet::digest("$id1,$id2");   ($rndmod,$rndmod2)=&Apache::lonnet::digest("$id1,$id2");
     }      }
     $Apache::lonhomework::results{'resource.'.$id1.'.rawrndseed'}=$rndseed;  
     if ($rndseed =~/([,:])/) {      if ($rndseed =~/([,:])/) {
  my $char=$1;   my $char=$1;
  use integer;   use integer;
Line 198  sub setrandomnumber { Line 197  sub setrandomnumber {
  }   }
     }      }
     &Apache::lonxml::debug("randseed $rndmod $rndseed");      &Apache::lonxml::debug("randseed $rndmod $rndseed");
     $Apache::lonhomework::results{'resource.'.$id1.'.rndseed'}=$rndseed;  
     &Apache::lonnet::setup_random_from_rndseed($rndseed);      &Apache::lonnet::setup_random_from_rndseed($rndseed);
     return '';      return '';
 }  }
Line 470  sub end_customresponse { Line 468  sub end_customresponse {
  $error = $award;   $error = $award;
  $award = 'ERROR';   $award = 'ERROR';
     }      }
             if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' ||              if (($award eq 'INCORRECT') || ($award eq 'APPROX_ANS') ||
                  $award eq 'EXACT_ANS')) {                  ($award eq 'EXACT_ANS') || ($award eq 'ASSIGNED_SCORE')) {
                 if ($Apache::lonhomework::type eq 'survey') {                  if ($Apache::lonhomework::type eq 'survey') {
                     $award='SUBMITTED';                      $award='SUBMITTED';
                 } elsif ($Apache::lonhomework::type eq 'surveycred') {                  } elsif ($Apache::lonhomework::type eq 'surveycred') {
Line 515  sub end_customresponse { Line 513  sub end_customresponse {
     &Apache::lonhomework::set_bubble_lines();      &Apache::lonhomework::set_bubble_lines();
  }   }
     }      }
       if ($target eq 'web') {
           &setup_prior_tries_hash(\&format_prior_response_math);
       }
     pop(@Apache::lonxml::namespace);      pop(@Apache::lonxml::namespace);
     pop(@Apache::response::custom_answer);      pop(@Apache::response::custom_answer);
     pop(@Apache::response::custom_answer_type);      pop(@Apache::response::custom_answer_type);
Line 577  sub start_mathresponse { Line 578  sub start_mathresponse {
     return $result;      return $result;
 }  }
   
 sub edit_mathresponse_button {  
     my ($partid,$id)=@_;  
     my $field = 'HWVAL_'.$partid.'_'.$id;  
     my $btype = $env{'browser.type'};  
     my $bversion = $env{'browser.version'};  
     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">  
 function LC_mathedit_${field} (LCtextline) {  
     thenumber = LCtextline;  
     var thedata = '';  
     if (document.getElementById(LCtextline)) {  
         thedata = document.getElementById(LCtextline).value;  
     }  
     newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable");  
 }  
 </script>  
 <a href="javascript:LC_mathedit_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>  
 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  
   LCmathField.setAttribute('data-implicit_operators', 'true');  
   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 {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
Line 689  sub end_mathresponse { Line 632  sub end_mathresponse {
     }      }
  }   }
     }      }
     if ($target eq 'web') {  
  &setup_prior_tries_hash(\&format_prior_response_math);  
         my $partid = $Apache::inputtags::part;  
         my $id = $Apache::inputtags::response[-1];  
         if (($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')  
            && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) {  
             $result.=&edit_mathresponse_button($partid,$id);  
         }  
     }  
   
     pop(@Apache::lonxml::namespace);      pop(@Apache::lonxml::namespace);
     pop(@Apache::response::custom_answer);      pop(@Apache::response::custom_answer);
Line 1373  sub submitted { Line 1307  sub submitted {
  return 1;   return 1;
     }      }
     # Submit All button on a .page was pressed      # Submit All button on a .page was pressed
     if (defined($env{'form.all_submit'})) { return 1; }      if ($env{'form.all_submit'}) { return 1; }
     # otherwise no submission occurred      # otherwise no submission occurred
     return 0;      return 0;
 }  }
Line 1409  basically undef and 0 (both false) mean Line 1343  basically undef and 0 (both false) mean
 and all true values mean that they can't do any more work  and all true values mean that they can't do any more work
   
  a return of undef means it is unattempted   a return of undef means it is unattempted
  a return of 0 means it is attmpted and wrong but still has tries   a return of 0 means it is both attempted and still has tries and
                         is wrong or is only partially correct, and retries
                         are allowed.
  a return of 1 means it is marked correct   a return of 1 means it is marked correct
  a return of 2 means they have exceed maximum number of tries   a return of 2 means they have exceeded maximum number of tries
  a return of 3 means it after the answer date   a return of 3 means it is after the answer date
   
 =cut  =cut
   
Line 1429  sub check_status { Line 1365  sub check_status {
         return 3;          return 3;
     }      }
     my $status=&Apache::lonnet::EXT("user.resource.resource.$id.solved");      my $status=&Apache::lonnet::EXT("user.resource.resource.$id.solved");
     if ($status =~ /^correct/) { return 1; }      if ($status =~ /^correct/) {
           my $awarded=&Apache::lonnet::EXT("user.resource.resource.$id.awarded");
           my $retrypartial=&Apache::lonnet::EXT("resource.$id.retrypartial");
           unless (($retrypartial =~ /^1|on|yes$/) && ($awarded <1))  {
               return 1;
           }
       }
     if (!$status) { return undef; }      if (!$status) { return undef; }
     my $maxtries=&Apache::lonnet::EXT("resource.$id.maxtries");      my $maxtries=&Apache::lonnet::EXT("resource.$id.maxtries");
     if ($maxtries eq '') { $maxtries=2; }      if ($maxtries eq '') { $maxtries=2; }

Removed from v.1.239  
changed lines
  Added in v.1.244.2.3


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