--- loncom/interface/lonquickgrades.pm 2003/06/25 19:01:23 1.19
+++ loncom/interface/lonquickgrades.pm 2004/12/11 23:33:05 1.33
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Quick Student Grades Display
#
-#
+# $Id: lonquickgrades.pm,v 1.33 2004/12/11 23:33:05 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,6 +32,8 @@ package Apache::lonquickgrades;
use strict;
use Apache::Constants qw(:common :http);
use POSIX;
+use Apache::loncommon;
+use Apache::lonlocal;
sub handler {
my $r = shift;
@@ -46,9 +48,9 @@ sub real_handler {
# Handle header-only request
if ($r->header_only) {
if ($ENV{'browser.mathml'}) {
- $r->content_type('text/xml');
+ &Apache::loncommon::content_type($r,'text/xml');
} else {
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
}
$r->send_http_header;
return OK;
@@ -56,19 +58,20 @@ sub real_handler {
# Send header, don't cache this page
if ($ENV{'browser.mathml'}) {
- $r->content_type('text/xml');
+ &Apache::loncommon::content_type($r, 'text/xml');
} else {
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r, 'text/html');
}
&Apache::loncommon::no_cache($r);
$r->send_http_header;
- my $showPoints = $ENV{'course.'.$ENV{'request.course.id'}.'.grading'} eq 'standard';
+ my $showPoints =
+ $ENV{'course.'.$ENV{'request.course.id'}.'.grading'} eq 'standard';
+ my $notshowSPRSlink =
+ $ENV{'course.'.$ENV{'request.course.id'}.'.grading'} eq 'external';
# Create the nav map
- my $navmap = Apache::lonnavmaps::navmap->new(
- $ENV{"request.course.fn"}.".db",
- $ENV{"request.course.fn"}."_parms.db", 1, 0, 1);
+ my $navmap = Apache::lonnavmaps::navmap->new();
if (!defined($navmap)) {
my $requrl = $r->uri;
@@ -81,28 +84,21 @@ sub real_handler {
my $res = $navmap->firstResource(); # temp resource to access constants
# Header
- my $title = $showPoints ? "Quick Points Display" : "Quick Completed Problems Display";
+ my $title = $showPoints ? "Points Display" : "Completed Problems Display";
$r->print(&Apache::loncommon::bodytag($title, '', ''));
- if ($showPoints) {
- $r->print(<
This may take a few moments to display.
"); + $r->print("This may take a few moments to display."); $r->rflush(); - $navmap->init(); - # End navmap using boilerplate my $iterator = $navmap->getIterator(undef, undef, undef, 1); @@ -123,8 +119,9 @@ HEADER # equally for both cases. my $totalParts = 0; my $totalPossible = 0; my $totalRight = 0; + my $totalAttempted = 0; my $now = time(); - my $topLevelParts = 0; my $topLevelRight = 0; + my $topLevelParts = 0; my $topLevelRight = 0; my $topLevelAttempted = 0; # Pre-run: Count parts correct while ( $depth > 0 ) { @@ -137,31 +134,52 @@ HEADER my $parts = $curRes->parts(); my $partsRight = 0; my $partsCount = 0; + my $partsAttempted = 0; my $stack = $iterator->getStack(); for my $part (@{$parts}) { + my $completionStatus = $curRes->getCompletionStatus($part); + my $dateStatus = $curRes->getDateStatus($part); + + if ($completionStatus == $curRes->EXCUSED()) { + next; + } if ($showPoints) { - my $score = $curRes->weight($part) * $curRes->awarded($part); + my $score = 0; + # If we're not telling status and the answer date isn't passed yet, + # it's an "attempted" point + if ($curRes->problemstatus($part) eq 'no' && + ($dateStatus != $curRes->ANSWER_OPEN)) { + my $status = $curRes->simpleStatus($part); + if ($status == $curRes->ATTEMPTED) { + $partsAttempted += $curRes->weight($part); + $totalAttempted += $partsAttempted; + } + } else { + $score = $curRes->weight($part) * $curRes->awarded($part); + } $partsRight += $score; $totalRight += $score; $partsCount += $curRes->weight($part); if ($curRes->opendate($part) < $now) { - $totalPossible += $curRes->weight(); + $totalPossible += $curRes->weight($part); } $totalParts += $curRes->weight($part); } else { - my $status = $curRes->getCompletionStatus($part); + my $status = $curRes->simpleStatus($part); my $thisright = 0; $partsCount++; - if ($status == $curRes->CORRECT || - $status == $curRes->CORRECT_BY_OVERRIDE || - $status == $curRes->EXCUSED || - $status == $curRes->ANSWER_SUBMITTED) { + if ($status == $curRes->CORRECT ) { $partsRight++; $totalRight++; $thisright = 1; } + + if ($status == $curRes->ATTEMPTED) { + $partsAttempted++; + $totalAttempted++; + } my $dateStatus = $curRes->getDateStatus($part); $totalParts++; @@ -174,7 +192,7 @@ HEADER if ($depth == 1) { # in top-level only $topLevelParts += $partsCount; $topLevelRight += $partsRight; - $r->print($curRes->compTitle() . 'Sequence | '); - $r->print('Done / Total | ||||||||
' . + &mt('Folder') . ' | '); + $title = &mt($showPoints ? "Points Scored" : "Done"); + if ($totalAttempted) { + $title .= " / " . &mt("Attempted"); + } + $r->print("$title / " + . &mt('Total') . " | |
$thisIndent | $thisIndent | \n");
+ } else {
+ $r->print("$thisIndent | \n");
+ }
}
}
@@ -238,7 +269,7 @@ HEADER
my $ratio = $topLevelRight / $topLevelParts;
my $color = mixColors(\@start, \@end, $ratio);
$r->print("
"); - $r->print("Problems Not Contained In A Folder | "); + $r->print(&mt("Problems Not Contained In A Folder")." | "); $r->print("$topLevelRight / $topLevelParts |
Total $title: $totalRight "); - $r->print("Max Possible To Date $maxHelpLink: $totalPossible "); + $r->print(&mt("Max Possible To Date")." $maxHelpLink: $totalPossible "); $title = $showPoints ? "Points" : "Parts"; - $r->print("Total $title In Course: $totalParts |