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

version 1.237, 2014/09/24 18:14:27 version 1.244.2.3, 2021/01/12 15:57:18
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 180  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 197  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 469  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 514  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 576  sub start_mathresponse { Line 578  sub start_mathresponse {
     return $result;      return $result;
 }  }
   
 sub edit_mathresponse_button {  
     my ($id,$field)=@_;  
     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 edit_${id}_${field} (textarea) {  
     thenumber = textarea;  
     thedata = document.forms['lonhomework'].elements[textarea].value;  
     newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable");  
 }  
 </script>  
 <a href="javascript:edit_${id}_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>  
 ENDFORMULABUTTON  
         
     } else {  
       # LON-CAPA math equation editor  
       return(<<EQ_EDITOR_SCRIPT);  
 <script type="text/javascript">  
   var field = document.getElementById('${field}');  
   field.className += ' math'; // note the space  
   var LCMATH_started;  
   if (typeof LCMATH_started === 'undefined') {  
     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 673  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($id,"HWVAL_$id");  
         }  
     }  
   
     pop(@Apache::lonxml::namespace);      pop(@Apache::lonxml::namespace);
     pop(@Apache::response::custom_answer);      pop(@Apache::response::custom_answer);
Line 1357  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 1393  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 1413  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.237  
changed lines
  Added in v.1.244.2.3


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