--- loncom/interface/lonquickgrades.pm 2002/11/22 20:39:14 1.6 +++ loncom/interface/lonquickgrades.pm 2002/12/06 19:29:28 1.9 @@ -68,6 +68,12 @@ sub real_handler { $ENV{"request.course.fn"}.".db", $ENV{"request.course.fn"}."_parms.db", 1, 0); + if (!defined($navmap)) { + my $requrl = $r->uri; + $ENV{'user.error.msg'} = "$requrl:bre:0:0:Navamp initialization failed."; + return HTTP_NOT_ACCEPTABLE; + } + # Keep this hash in sync with %statusIconMap in lonnavmaps; they # should match color/icon my $res = $navmap->firstResource(); # temp resource to access constants @@ -82,6 +88,12 @@ sub real_handler { $r->print(&Apache::loncommon::bodytag('Quick Score Display','', '')); + $r->print(<This screen shows how many problems (or problem parts) you have completed, and +how many you have not yet done. You can also look at a detailed +score sheet.

+HEADER + $navmap->init(); # End navmap using boilerplate @@ -107,7 +119,7 @@ sub real_handler { if ($curRes == $iterator->BEGIN_MAP()) {$depth++;} if ($curRes == $iterator->END_MAP()) { $depth--; } - if (ref($curRes) && $curRes->is_problem()) + if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout) { # Get number of correct, incorrect parts my $parts = $curRes->parts(); @@ -147,11 +159,11 @@ sub real_handler { } $iterator = $navmap->getIterator(undef, undef, undef, 1); - my $depth = 1; + $depth = 1; $iterator->next(); # ignore first BEGIN_MAP - my $curRes = $iterator->next(); + $curRes = $iterator->next(); - my @start = (255, 255, 0); + my @start = (255, 255, 192); my @end = (0, 192, 0); my $indentString = '     '; @@ -229,15 +241,16 @@ sub mixColors { my $end = shift; my $ratio = shift; + my ($a,$b); my $final = ""; - my $a = $start->[0]; my $b = $end->[0]; + $a = $start->[0]; $b = $end->[0]; my $mix1 = POSIX::floor((1-$ratio)*$a + $ratio*$b); - my $a = $start->[1]; my $b = $end->[1]; + $a = $start->[1]; $b = $end->[1]; my $mix2 = POSIX::floor((1-$ratio)*$a + $ratio*$b); - my $a = $start->[2]; my $b = $end->[2]; + $a = $start->[2]; $b = $end->[2]; my $mix3 = POSIX::floor((1-$ratio)*$a + $ratio*$b); - my $final = sprintf "%2x%2x%2x", $mix1, $mix2, $mix3; + $final = sprintf "%2x%2x%2x", $mix1, $mix2, $mix3; return "#" . $final; }