--- loncom/homework/response.pm 2015/02/22 01:34:48 1.240
+++ loncom/homework/response.pm 2021/01/12 15:52:06 1.248
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# various response type definitons response definition
#
-# $Id: response.pm,v 1.240 2015/02/22 01:34:48 raeburn Exp $
+# $Id: response.pm,v 1.248 2021/01/12 15:52:06 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -265,10 +265,15 @@ sub mandatory_part_meta {
}
sub meta_part_order {
+ my ($type) = @_;
if (@Apache::inputtags::partlist) {
my @parts=@Apache::inputtags::partlist;
- shift(@parts);
+ unless ($type eq 'library') {
+ shift(@parts);
+ }
return ''.join(',',@parts).''."\n";
+ } elsif ($type eq 'library') {
+ return ''."\n";
} else {
return '0'."\n";
}
@@ -468,8 +473,8 @@ sub end_customresponse {
$error = $award;
$award = 'ERROR';
}
- if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' ||
- $award eq 'EXACT_ANS')) {
+ if (($award eq 'INCORRECT') || ($award eq 'APPROX_ANS') ||
+ ($award eq 'EXACT_ANS') || ($award eq 'ASSIGNED_SCORE')) {
if ($Apache::lonhomework::type eq 'survey') {
$award='SUBMITTED';
} elsif ($Apache::lonhomework::type eq 'surveycred') {
@@ -513,6 +518,9 @@ sub end_customresponse {
&Apache::lonhomework::set_bubble_lines();
}
}
+ if ($target eq 'web') {
+ &setup_prior_tries_hash(\&format_prior_response_math);
+ }
pop(@Apache::lonxml::namespace);
pop(@Apache::response::custom_answer);
pop(@Apache::response::custom_answer_type);
@@ -575,64 +583,6 @@ sub start_mathresponse {
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(<
-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");
-}
-
-
-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(<
- 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);
- }
-
-EQ_EDITOR_SCRIPT
- }
-}
-
sub end_mathresponse {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result;
@@ -687,15 +637,6 @@ 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::response::custom_answer);
@@ -1371,7 +1312,7 @@ sub submitted {
return 1;
}
# 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
return 0;
}
@@ -1407,10 +1348,12 @@ basically undef and 0 (both false) mean
and all true values mean that they can't do any more work
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 2 means they have exceed maximum number of tries
- a return of 3 means it after the answer date
+ a return of 2 means they have exceeded maximum number of tries
+ a return of 3 means it is after the answer date
=cut
@@ -1427,7 +1370,13 @@ sub check_status {
return 3;
}
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; }
my $maxtries=&Apache::lonnet::EXT("resource.$id.maxtries");
if ($maxtries eq '') { $maxtries=2; }