--- loncom/interface/lonwhatsnew.pm 2005/06/07 22:05:11 1.19
+++ loncom/interface/lonwhatsnew.pm 2005/10/10 13:36:35 1.32
@@ -1,5 +1,5 @@
#
-# $Id: lonwhatsnew.pm,v 1.19 2005/06/07 22:05:11 albertel Exp $
+# $Id: lonwhatsnew.pm,v 1.32 2005/10/10 13:36:35 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,6 +38,7 @@ use Apache::lonnavmaps();
use Apache::lonuserstate;
use Apache::Constants qw(:common :http);
use Time::Local;
+use GDBM_File;
#----------------------------
# handler
@@ -178,9 +179,9 @@ sub display_actions_box() {
}
my %threshold = (
- av_attempts => 0,
- degdiff => 0.01,
- numstudents => 0,
+ av_attempts => 2,
+ degdiff => 0.5,
+ numstudents => 2,
);
my $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain);
@@ -190,10 +191,12 @@ sub display_actions_box() {
$r->print('
You are accessing an invalid course.
');
return;
}
-
- my ($furl,$ferr)=
- &Apache::lonuserstate::readmap($cdom.'/'.$crs);
- $r->print('Go to first resource
Change your preferences to suppress display of this screen when accessing courses as Course Coordinator in the future.
');
+ if (tie(my %bighash,'GDBM_File',$env{'request.course.fn'}.'.db',
+ &GDBM_READER(),0640)) {
+ my $furl=$bighash{'first_url'};
+ $r->print('Go to first resource
Change your preferences to suppress display of this screen when accessing courses as Course Coordinator in the future.
');
+ untie(%bighash);
+ }
my $result;
@@ -205,6 +208,7 @@ sub display_actions_box() {
if ($result) {
$r->print($result.'
');
}
+ $r->rflush();
&get_curr_thresholds(\%threshold,$cdom,$crs);
&getitems(\%unread,\%ungraded,\%bombed,\%triggered,\@newdiscussions,\@tograde,\@bombs,\@warnings,$rowColor1,$rowColor2,\%threshold,$cdom,$crs,%res_title);
@@ -264,7 +268,7 @@ END
@bombs = sort { &cmp_title($a,$b,\%res_title) } @bombs;
foreach my $bomb (@bombs) {
if ($bombnum %2 == 1) {
- $rowColor = $rowColor1;
+ $rowColor = $rowColor1;
} else {
$rowColor = $rowColor2;
}
@@ -386,7 +390,7 @@ END
} else {
$rowColor = $rowColor2;
}
- $r->print(''.$mailcount.'. | '.$msg->{'shortsub'}.' | '.$msg->{'from'}.'@'.$msg->{'fromdom'}.' | '.$msg->{'sendtime'}.' |
');
+ $r->print(''.$mailcount.'. | '.$msg->{'shortsub'}.' | '.$msg->{'from'}.'@'.$msg->{'fromdom'}.' | '.$msg->{'sendtime'}.' |
');
$rowNum ++;
$mailcount ++;
}
@@ -418,7 +422,7 @@ END
} else {
$rowColor = $rowColor2;
}
- $r->print(''.$mailcount.'. | '.$msg->{'shortsub'}.' | '.$msg->{'from'}.'@'.$msg->{'fromdom'}.' | '.$msg->{'sendtime'}.' |
');
+ $r->print(''.$mailcount.'. | '.$msg->{'shortsub'}.' | '.$msg->{'from'}.'@'.$msg->{'fromdom'}.' | '.$msg->{'sendtime'}.' |
');
$rowNum ++;
$mailcount ++;
}
@@ -504,7 +508,8 @@ sub display_config_box() {
sub getitems {
my ($unread,$ungraded,$bombed,$triggered,$newdiscussions,$tograde,$bombs,$warnings,$rowColor1,$rowColor2,$threshold,$cdom,$crs,$res_title) = @_;
my $navmap = Apache::lonnavmaps::navmap->new();
- my @allres=$navmap->retrieveResources();
+ # force retrieve Resource to seed the part id cache we'll need it later
+ my @allres=$navmap->retrieveResources(undef,sub {if ($_[0]->is_problem) { $_[0]->parts();} return 1;});
my %discussiontime = &Apache::lonnet::dump('discussiontimes',$cdom,$crs);
my %lastread = &Apache::lonnet::dump('nohist_'.$env{'request.course.id'}.
'_discuss',$env{'user.domain'},$env{'user.name'},'lastread');
@@ -532,7 +537,7 @@ sub getitems {
$$res_title{$symb} = $title;
my $ressymb = $resource->wrap_symb();
# Check for unread discussion postings
- if (defined($discussiontime{$ressymb})) {
+ if ($resource->hasDiscussion()) {
push(@discussions,$ressymb);
my $prevread = 0;
my $unreadcount = 0;
@@ -561,41 +566,42 @@ sub getitems {
if ($resource->is_problem()) {
my $ctr = 0;
my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my ($partlist,$handgrade,$responseType) =
- &Apache::grades::response_type($url,$symb);
+ my $partlist=$resource->parts();
my $handgradeable;
- foreach my $value (values(%{$handgrade})) {
- if ($value eq 'yes') { $handgradeable=1; last; }
+ foreach my $part (@$partlist) {
+ if ($resource->handgrade($part) eq 'yes') {
+ $handgradeable=1; last;
+ }
+ }
+ if ($handgradeable) {
+ foreach my $student (keys(%$classlist)) {
+ my ($uname,$udom) = split(/:/,$student);
+ my %status=&Apache::grades::student_gradeStatus($url,$symb,$udom,$uname,$partlist);
+ my $submitted = 0;
+ my $ungraded = 0;
+ foreach (keys(%status)) {
+ $submitted = 1 if ($status{$_} ne 'nothing');
+ $ungraded = 1 if ($status{$_} =~ /^ungraded/);
+ my ($foo,$partid,$foo1) = split(/\./,$_);
+ if ($status{'resource.'.$partid.'.submitted_by'} ne '') {
+ $submitted = 0;
+ }
+ }
+ next if (!$submitted || !$ungraded);
+ $ctr ++;
+ }
+ if ($ctr) {
+ $$ungraded{$symb}{count} = $ctr;
+ $$ungraded{$symb}{title} = $title;
+ push(@{$tograde}, $symb);
+ }
}
- next if (!$handgradeable);
-
- foreach my $student (keys(%$classlist)) {
- my ($uname,$udom) = split(/:/,$student);
- my %status=&Apache::grades::student_gradeStatus($url,$symb,$udom,$uname,$partlist);
- my $submitted = 0;
- my $ungraded = 0;
- foreach (keys(%status)) {
- $submitted = 1 if ($status{$_} ne 'nothing');
- $ungraded = 1 if ($status{$_} =~ /^ungraded/);
- my ($foo,$partid,$foo1) = split(/\./,$_);
- if ($status{'resource.'.$partid.'.submitted_by'} ne '') {
- $submitted = 0;
- }
- }
- next if (!$submitted || !$ungraded);
- $ctr ++;
- }
- if ($ctr) {
- $$ungraded{$symb}{count} = $ctr;
- $$ungraded{$symb}{title} = $title;
- push(@{$tograde}, $symb);
- }
}
# Check for bombs
if ($resource->getErrors()) {
my $errors = $resource->getErrors();
- $errors =~ s/^,//;
+ $errors =~ s/^,//;
my @bombs = split(/,/, $errors);
my $errorcount = scalar(@bombs);
my $errorlink = '