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

version 1.243, 2015/03/09 16:19:54 version 1.244.2.3, 2021/01/12 15:57:18
Line 468  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 513  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 575  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 $eqneditor = 'lcmath';  
     if ($env{'browser.type'} eq 'safari') {  
         if ($env{'browser.os'} eq 'mac') {  
             my ($prefix,$version) = ($env{'browser.version'} =~ /^(\d*)(\d{3})\./);  
             if ($env{'browser.mobile'}) {  
                 if (($version < 531) || (($prefix eq '') && ($version < 533))) {  
                     $eqneditor = '';  
                 }  
             } elsif ($version < 533) {  
                 $eqneditor = 'dragmath';  
             }  
         } elsif ($env{'browser.os'} eq 'win') {  
             if ($env{'browser.version'} < 533) {  
                 $eqneditor = 'dragmath';  
             }  
         }  
     } elsif ($env{'browser.type'} eq 'explorer') {  
         if ($env{'browser.version'} < 9) {  
             $eqneditor = 'dragmath';  
         }  
     } elsif ($env{'browser.type'} eq 'mozilla') {  
         if ($env{'browser.version'} < 5) {  
             $eqneditor = 'dragmath';  
         } else {  
             if ($env{'browser.info'} =~ /^firefox\-([\d\.]+)/) {  
                 my $firefox = $1;  
                 if ($firefox < 4) {  
                     $eqneditor = 'dragmath';  
                 }  
             }  
         }  
     } elsif ($env{'browser.type'} eq 'chrome') {  
         if ($env{'browser.version'} < 5) {  
             $eqneditor = 'dragmath';  
         }  
     } elsif ($env{'browser.type'} eq 'opera') {  
         if ($env{'browser.version'} < 12) {  
             $eqneditor = 'dragmath';  
         }  
     }  
     if ($eqneditor eq 'lcmath') {  
         if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) {  
             if (exists($env{'course.'.$env{'request.course.id'}.'.uselcmath'})) {  
                 if ($env{'course.'.$env{'request.course.id'}.'.uselcmath'} eq '0') {  
                     $eqneditor = 'dragmath';  
                 }  
             } else {  
                 my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});  
                 if ($domdefs{'uselcmath'} eq '0') {  
                     $eqneditor = 'dragmath';  
                 }  
             }  
         } else {  
             my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});  
             if ($domdefs{'uselcmath'} eq '0') {  
                 $eqneditor = 'dragmath';  
             }  
         }  
     }  
     if ($eqneditor eq 'dragmath') {  
         # 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  
     } elsif ($eqneditor eq 'lcmath') {  
         # 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 742  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 1426  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 1462  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 1482  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.243  
changed lines
  Added in v.1.244.2.3


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