[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
 }