--- loncom/homework/response.pm 2019/10/23 22:35:22 1.244.2.2 +++ loncom/homework/response.pm 2024/10/29 03:22:10 1.250 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.244.2.2 2019/10/23 22:35:22 raeburn Exp $ +# $Id: response.pm,v 1.250 2024/10/29 03:22:10 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') { @@ -766,7 +771,8 @@ sub start_responseparam { } } elsif ($target eq 'grade' || $target eq 'answer' || $target eq 'web' || $target eq 'tex' || $target eq 'analyze' ) { - if ($env{'request.state'} eq 'construct') { + if (($env{'request.state'} eq 'construct') || + ($env{'request.noversionuri'} =~ m{^\Q/res/adm/includes/templates/\E[^/]+\.problem$})) { my $name =&Apache::lonxml::get_param('name',$parstack,$safeeval); my $default=&Apache::lonxml::get_param('default',$parstack, $safeeval); @@ -797,7 +803,10 @@ sub reset_params { sub setup_params { my ($tag,$safeeval) = @_; - if ($env{'request.state'} eq 'construct') { return; } + if (($env{'request.state'} eq 'construct') || + ($env{'request.noversionuri'} =~ m{^\Q/res/adm/includes/templates/\E[^/]+\.problem$})) { + return; + } my %paramlist=(); foreach my $key (keys(%Apache::lonnet::packagetab)) { if ($key =~ /^\Q$tag\E/) { @@ -876,7 +885,7 @@ sub answer_part { if ($env{'form.answer_output_mode'} eq 'tex') { if (!$args->{'no_verbatim'}) { my $to_use='|'; - foreach my $value (32..126) { + foreach my $value (33..41,43..126) { my $char=pack('c',$value); if ($answer !~ /\Q$char\E/) { $to_use=$char; @@ -1344,7 +1353,7 @@ and all true values mean that they can't a return of undef means it is unattempted a return of 0 means it is both attempted and still has tries and - is wrong or is only partially correct, and retries + 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 exceeded maximum number of tries @@ -1365,7 +1374,7 @@ sub check_status { return 3; } my $status=&Apache::lonnet::EXT("user.resource.resource.$id.solved"); - if ($status =~ /^correct/) { + 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)) {