--- loncom/homework/response.pm 2020/06/03 18:48:34 1.244.4.1
+++ loncom/homework/response.pm 2018/06/06 18:39:55 1.246
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# various response type definitons response definition
#
-# $Id: response.pm,v 1.244.4.1 2020/06/03 18:48:34 raeburn Exp $
+# $Id: response.pm,v 1.246 2018/06/06 18:39:55 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";
}
@@ -1307,7 +1312,7 @@ sub submitted {
return 1;
}
# Submit All button on a .page was pressed
- if ($env{'form.all_submit'}) { return 1; }
+ if (defined($env{'form.all_submit'})) { return 1; }
# otherwise no submission occurred
return 0;
}
@@ -1343,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
@@ -1363,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; }