[LON-CAPA-cvs] cvs: loncom /homework lonhomework.pm /interface lonnavmaps.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Mon, 15 May 2006 19:29:18 -0000
albertel Mon May 15 15:29:18 2006 EDT
Modified files:
/loncom/interface lonnavmaps.pm
/loncom/homework lonhomework.pm
Log:
- BUG#4758 due date should beat interval
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.381 loncom/interface/lonnavmaps.pm:1.382
--- loncom/interface/lonnavmaps.pm:1.381 Thu May 11 19:51:36 2006
+++ loncom/interface/lonnavmaps.pm Mon May 15 15:29:03 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.381 2006/05/11 23:51:36 albertel Exp $
+# $Id: lonnavmaps.pm,v 1.382 2006/05/15 19:29:03 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -4029,14 +4029,24 @@
if (!defined($part)) { $part = '0'; }
return $self->{NAV_MAP}->{STUDENT_DATA}->{$self->symb()}->{'resource.'.$part.'.awarded'};
}
+# this should work exactly like the copy in lonhomework.pm
sub duedate {
(my $self, my $part) = @_;
+ my $date;
my $interval=$self->parmval("interval", $part);
- if ($interval) {
+ my $due_date=$self->parmval("duedate", $part);
+ if (defined($interval)) {
my $first_access=&Apache::lonnet::get_first_access('map',$self->symb);
- if ($first_access) { return ($first_access+$interval); }
+ if (defined($first_access)) {
+ $interval = $first_access+$interval;
+ $date = ($interval < $due_date)? $interval : $due_date;
+ } else {
+ $date = $due_date;
+ }
+ } else {
+ $date = $due_date;
}
- return $self->parmval("duedate", $part);
+ return $date;
}
sub handgrade {
(my $self, my $part) = @_;
Index: loncom/homework/lonhomework.pm
diff -u loncom/homework/lonhomework.pm:1.246 loncom/homework/lonhomework.pm:1.247
--- loncom/homework/lonhomework.pm:1.246 Thu May 11 23:46:54 2006
+++ loncom/homework/lonhomework.pm Mon May 15 15:29:17 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.246 2006/05/12 03:46:54 albertel Exp $
+# $Id: lonhomework.pm,v 1.247 2006/05/15 19:29:17 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -383,7 +383,12 @@
foreach my $temp ("opendate","duedate","answerdate") {
$lastdate = $date;
- $date = &Apache::lonnet::EXT("resource.$id.$temp");
+ if ($temp eq 'duedate') {
+ $date = &due_date($id);
+ } else {
+ $date = &Apache::lonnet::EXT("resource.$id.$temp");
+ }
+
my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type");
if ($thistype =~ /^(con_lost|no_such_host)/ ||
$date =~ /^(con_lost|no_such_host)/) {
@@ -451,18 +456,12 @@
&Apache::lonxml::debug("looking for accesstime $first_access");
if (!$first_access) {
$status='NOT_YET_VIEWED';
- $datemsg=&seconds_to_human_length($interval);
- } else {
- my $newdate=localtime($first_access+$interval);
- if (time > ($first_access+$interval)) {
- $status='CLOSED';
- $datemsg = &mt("was due on")." $newdate".&mt(", and answers will be available on")." $date";
- } else {
- $datemsg = &mt("is due at")." $newdate";
- }
+ my $due_date = &due_date($id);
+ $datemsg=&seconds_to_human_length($due_date-time);
}
}
}
+
#if (($status ne 'CLOSED') && ($Apache::lonhomework::type eq 'exam') &&
# (!$Apache::lonhomework::history{"resource.0.outtoken"})) {
# return ('UNCHECKEDOUT','needs to be checked out');
@@ -478,17 +477,24 @@
return ($status,$datemsg);
}
-
+# this should work exactly like the copy in lonnavmaps.pm
sub due_date {
my ($part_id,$symb)=@_;
my $date;
my $interval= &Apache::lonnet::EXT("resource.$part_id.interval",$symb);
- if ($interval) {
+ &Apache::lonxml::debug("looking for interval $part_id $symb $interval");
+ my $due_date= &Apache::lonnet::EXT("resource.$part_id.duedate",$symb);
+ &Apache::lonxml::debug("looking for due_date $part_id $symb $due_date");
+ if (defined($interval)) {
my $first_access=&Apache::lonnet::get_first_access('map',$symb);
- if ($first_access) { $date = $first_access+$interval; }
- }
- if (!defined($date)) {
- $date = &Apache::lonnet::EXT("resource.$part_id.duedate",$symb);
+ if (defined($first_access)) {
+ $interval = $first_access+$interval;
+ $date = ($interval < $due_date)? $interval : $due_date;
+ } else {
+ $date = $due_date;
+ }
+ } else {
+ $date = $due_date;
}
return $date
}