--- loncom/interface/lonnavmaps.pm 2002/10/14 16:43:58 1.77
+++ loncom/interface/lonnavmaps.pm 2002/10/14 18:41:02 1.80
@@ -2,7 +2,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.77 2002/10/14 16:43:58 bowersj2 Exp $
+# $Id: lonnavmaps.pm,v 1.80 2002/10/14 18:41:02 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -823,7 +823,7 @@ sub new_handle {
# Initialize the nav map
my $navmap = Apache::lonnavmaps::navmap->new(
$ENV{"request.course.fn"}.".db",
- $ENV{"request.course.fn"}."_parms.db", 1);
+ $ENV{"request.course.fn"}."_parms.db", 1, 1);
if (!defined($navmap)) {
@@ -977,6 +977,7 @@ sub new_handle {
my $now = time();
my $in24Hours = $now + 24 * 60 * 60;
my $depth = 1;
+ my $displayedHereMarker = 0;
# We know the first thing is a BEGIN_MAP (see "$self->{STARTED}"
# code in iterator->next), so ignore the first one
@@ -1155,6 +1156,14 @@ sub new_handle {
$curRes->duedate() > time()) {
$color = $hurryUpColor;
}
+ # Special case: If this is the last try, and there is
+ # more then one available, give a bit of urgency
+ my $tries = $curRes->tries($part);
+ my $maxtries = $curRes->maxtries($part);
+ if ($tries && $maxtries && $maxtries > 1 &&
+ $maxtries - $tries == 1) {
+ $color = $hurryUpColor;
+ }
if ($color ne "") {
$colorizer = "bgcolor=\"$color\"";
}
@@ -1178,9 +1187,10 @@ sub new_handle {
my $curMarkerEnd = "";
# Is this the current resource?
- if ($curRes->src() eq $currenturl) {
+ if ($curRes->src() eq $currenturl && !$displayedHereMarker) {
$curMarkerBegin = '> ';
$curMarkerEnd = ' <';
+ $displayedHereMarker = 1;
}
if ($curRes->is_problem() && $part ne "0" && !$condensed) {
@@ -1330,7 +1340,7 @@ sub getDescription {
return "Open " . timeToHumanString($res->opendate($part));
}
if ($status == $res->OPEN) {
- if ($res->duedate()) {
+ if ($res->duedate($part)) {
return "Due " . timeToHumanString($res->duedate($part));
} else {
return "Open, no due date";
@@ -1352,9 +1362,15 @@ sub getDescription {
return "Not yet graded.";
}
if ($status == $res->TRIES_LEFT) {
- my $tries = $res->tries();
- my $maxtries = $res->maxtries();
- my $triesString = "($tries of $maxtries tries used)";
+ my $tries = $res->tries($part);
+ my $maxtries = $res->maxtries($part);
+ my $triesString = "";
+ if ($tries && $maxtries) {
+ $triesString = "($tries of $maxtries tries used)";
+ if ($maxtries > 1 && $maxtries - $tries == 1) {
+ $triesString = "$triesString";
+ }
+ }
if ($res->duedate()) {
return "Due " . timeToHumanString($res->duedate($part)) .
" $triesString";
@@ -2828,7 +2844,7 @@ sub status {
# If it's WRONG...
if ($completionStatus == INCORRECT || $completionStatus == INCORRECT_BY_OVERRIDE) {
# and there are TRIES LEFT:
- if ($self->tries() < $self->maxtries()) {
+ if ($self->tries($part) < $self->maxtries($part) || !$self->maxtries($part)) {
return TRIES_LEFT;
}
return INCORRECT; # otherwise, return orange; student can't fix this