--- loncom/interface/lonnavmaps.pm 2012/07/09 18:30:46 1.444.2.4.2.1 +++ loncom/interface/lonnavmaps.pm 2011/10/07 15:10:12 1.444.2.6 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.444.2.4.2.1 2012/07/09 18:30:46 raeburn Exp $ +# $Id: lonnavmaps.pm,v 1.444.2.6 2011/10/07 15:10:12 raeburn Exp $ # # Copyright Michigan State University Board of Trustees @@ -808,14 +808,31 @@ sub timeToHumanString { # Less than an hour if ( $delta < $hour ) { - # If so, use minutes + # If so, use minutes; or minutes, seconds (if format requires) my $minutes = floor($delta / 60); + if (($format ne '') && ($format =~ /\%(T|S)/)) { + my $display; + if ($minutes == 1) { + $display = "${prefix}1 minute"; + } else { + $display = "$prefix$minutes minutes"; + } + my $seconds = $delta % $minute; + if ($seconds == 0) { + $display .= $tense; + } elsif ($seconds == 1) { + $display .= ", 1 second$tense"; + } else { + $display .= ", $seconds seconds$tense"; + } + return $display; + } if ($minutes == 1) { return "${prefix}1 minute$tense"; } return "$prefix$minutes minutes$tense"; } # Is it less than 24 hours away? If so, - # display hours + minutes + # display hours + minutes, (and + seconds, if format specified it) if ( $delta < $hour * 24) { my $hours = floor($delta / $hour); my $minutes = floor(($delta % $hour) / $minute); @@ -830,15 +847,30 @@ sub timeToHumanString { if ($minutes == 0) { $minuteString = ""; } + if (($format ne '') && ($format =~ /\%(T|S)/)) { + my $display = "$prefix$hourString$minuteString"; + my $seconds = $delta-(($hours * $hour)+($minutes * $minute)); + if ($seconds == 0) { + $display .= $tense; + } elsif ($seconds == 1) { + $display .= ", 1 second$tense"; + } else { + $display .= ", $seconds seconds$tense"; + } + return $display; + } return "$prefix$hourString$minuteString$tense"; } + # Date/time is more than 24 hours away + my $dt = DateTime->from_epoch(epoch => $time) ->set_time_zone(&Apache::lonlocal::gettimezone()); - # If there's a caller supplied format, use it. + # If there's a caller supplied format, use it, unless it only displays + # H:M:S or H:M. - if ($format ne '') { + if (($format ne '') && ($format ne '%T') && ($format ne '%R')) { my $timeStr = $dt->strftime($format); return $timeStr.' ('.$dt->time_zone_short_name().')'; } @@ -1132,7 +1164,7 @@ sub render_long_status { } if ($resource->kind() eq "res" && - ($resource->is_problem() || $resource->is_practice()) && + $resource->is_raw_problem() && !$firstDisplayed) { if ($color) {$result .= ""; } $result .= getDescription($resource, $part); @@ -3494,8 +3526,6 @@ sub new { $self->{NAV_MAP}->{RESOURCE_CACHE}->{$self->{ID}} = $self; $self->{RESOURCE_ERROR} = 0; - $self->{DUEDATE_CACHE} = undef; - # A hash that can be used by two-pass algorithms to store data # about this resource in. Not used by the resource object # directly. @@ -4073,9 +4103,6 @@ sub checkedin { # this should work exactly like the copy in lonhomework.pm sub duedate { (my $self, my $part) = @_; - if (defined ($self->{DUEDATE_CACHE}->{$part})) { - return $self->{DUEDATE_CACHE}->{$part}; - } my $date; my @interval=$self->parmval("interval", $part); my $due_date=$self->parmval("duedate", $part); @@ -4092,7 +4119,6 @@ sub duedate { } else { $date = $due_date; } - $self->{DUEDATE_CACHE}->{$part} = $date; return $date; } sub handgrade {