[LON-CAPA-cvs] cvs: loncom /homework grades.pm
raeburn
raeburn at source.lon-capa.org
Sun Feb 12 16:01:30 EST 2023
raeburn Sun Feb 12 21:01:30 2023 EDT
Modified files:
/loncom/homework grades.pm
Log:
- Bug 6966
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.791 loncom/homework/grades.pm:1.792
--- loncom/homework/grades.pm:1.791 Thu Feb 9 19:27:18 2023
+++ loncom/homework/grades.pm Sun Feb 12 21:01:30 2023
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.791 2023/02/09 19:27:18 raeburn Exp $
+# $Id: grades.pm,v 1.792 2023/02/12 21:01:30 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2206,7 +2206,7 @@
my ($uname,$udom,$fullname) = split(/:/,$student);
my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},
$udom,$uname);
- my ($string,$timestamp)= &get_last_submission(\%record);
+ my ($string)= &get_last_submission(\%record);
foreach my $submission (@$string) {
my ($partid,$respid) =
($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/);
@@ -2558,20 +2558,33 @@
# (3) All transactions (by date)
# (4) The whole record (with detailed information for all transactions)
- my ($string,$timestamp)= &get_last_submission(\%record,$is_tool);
+ my ($string,$timestamp,$lastgradetime,$lastsubmittime) =
+ &get_last_submission(\%record,$is_tool);
my $lastsubonly;
- if ($$timestamp eq '') {
- $lastsubonly.='<div class="LC_grade_submissions_body">'.$$string[0].'</div>';
+ if ($timestamp eq '') {
+ $lastsubonly.='<div class="LC_grade_submissions_body">'.$string->[0].'</div>';
} elsif ($is_tool) {
$lastsubonly =
'<div class="LC_grade_submissions_body">'
- .'<b>'.&mt('Date Grade Passed Back:').'</b> '.$$timestamp."</div>\n";
+ .'<b>'.&mt('Date Grade Passed Back:').'</b> '.$timestamp."</div>\n";
} else {
+ my ($shownsubmdate,$showngradedate);
+ if ($lastsubmittime && $lastgradetime) {
+ $shownsubmdate = &Apache::lonlocal::locallocaltime($lastsubmittime);
+ if ($lastgradetime > $lastsubmittime) {
+ $showngradedate = &Apache::lonlocal::locallocaltime($lastgradetime);
+ }
+ } else {
+ $shownsubmdate = $timestamp;
+ }
$lastsubonly =
'<div class="LC_grade_submissions_body">'
- .'<b>'.&mt('Date Submitted:').'</b> '.$$timestamp."\n";
+ .'<b>'.&mt('Date Submitted:').'</b> '.$shownsubmdate."\n";
+ if ($showngradedate) {
+ $lastsubonly .= '<br /><b>'.&mt('Date Graded:').'</b> '.$showngradedate."\n";
+ }
my %seenparts;
my @part_response_id = &flatten_responseType($responseType);
@@ -2903,14 +2916,42 @@
#--- Retrieve the last submission for all the parts
sub get_last_submission {
my ($returnhash,$is_tool)=@_;
- my (@string,$timestamp,%lasthidden);
+ my (@string,$timestamp,$lastgradetime,$lastsubmittime);
if ($$returnhash{'version'}) {
my %lasthash=();
- my ($version);
+ my %prevsolved=();
+ my %solved=();
+ my $version;
for ($version=1;$version<=$$returnhash{'version'};$version++) {
+ my %handgraded = ();
foreach my $key (sort(split(/\:/,
$$returnhash{$version.':keys'}))) {
$lasthash{$key}=$$returnhash{$version.':'.$key};
+ if ($key =~ /\.([^.]+)\.regrader$/) {
+ $handgraded{$1} = 1;
+ } elsif ($key =~ /\.portfiles$/) {
+ if (($$returnhash{$version.':'.$key} ne '') &&
+ ($$returnhash{$version.':'.$key} !~ /\.\d+\.\w+$/)) {
+ $lastsubmittime = $$returnhash{$version.':timestamp'};
+ }
+ } elsif ($key =~ /\.submission$/) {
+ if ($$returnhash{$version.':'.$key} ne '') {
+ $lastsubmittime = $$returnhash{$version.':timestamp'};
+ }
+ } elsif ($key =~ /\.([^.]+)\.solved$/) {
+ $prevsolved{$1} = $solved{$1};
+ $solved{$1} = $lasthash{$key};
+ }
+ }
+ foreach my $partid (keys(%handgraded)) {
+ if (($prevsolved{$partid} eq 'ungraded_attempted') &&
+ (($solved{$partid} eq 'incorrect_by_override') ||
+ ($solved{$partid} eq 'correct_by_override'))) {
+ $lastgradetime = $$returnhash{$version.':timestamp'};
+ }
+ if ($solved{$partid} ne '') {
+ $prevsolved{$partid} = $solved{$partid};
+ }
}
$timestamp =
&Apache::lonlocal::locallocaltime($$returnhash{$version.':timestamp'});
@@ -2977,7 +3018,7 @@
$string[0] =
'<span class="LC_warning">'.$msg.'</span>';
}
- return (\@string,\$timestamp);
+ return (\@string,$timestamp,$lastgradetime,$lastsubmittime);
}
#--- High light keywords, with style choosen by user.
More information about the LON-CAPA-cvs
mailing list