[LON-CAPA-cvs] cvs: loncom /interface lonwhatsnew.pm
raeburn
raeburn@source.lon-capa.org
Sat, 20 Dec 2008 01:39:47 -0000
raeburn Sat Dec 20 01:39:47 2008 EDT
Modified files:
/loncom/interface lonwhatsnew.pm
Log:
- Check that navmap object could be created to avoid ISE when retrieving information for handgrading, bombs, version changes, problems above threshold and new discussion posts.
- For each of these items included for display, show a warning and a link to the roles page to re-select the course if no navmap object available.
Index: loncom/interface/lonwhatsnew.pm
diff -u loncom/interface/lonwhatsnew.pm:1.83 loncom/interface/lonwhatsnew.pm:1.84
--- loncom/interface/lonwhatsnew.pm:1.83 Fri Dec 12 15:48:05 2008
+++ loncom/interface/lonwhatsnew.pm Sat Dec 20 01:39:47 2008
@@ -1,5 +1,5 @@
#
-# $Id: lonwhatsnew.pm,v 1.83 2008/12/12 15:48:05 raeburn Exp $
+# $Id: lonwhatsnew.pm,v 1.84 2008/12/20 01:39:47 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -490,8 +490,9 @@
}
}
+ my $itemserror;
if ($needitems) {
- &getitems(\%unread,\%ungraded,\%bombed,\%triggered,\%changed,\@newdiscussions,\@tograde,\@bombs,\@warnings,\%threshold,$cdom,$crs,\%res_title,\%show,$starttime,$countunread);
+ $itemserror = &getitems(\%unread,\%ungraded,\%bombed,\%triggered,\%changed,\@newdiscussions,\@tograde,\@bombs,\@warnings,\%threshold,$cdom,$crs,\%res_title,\%show,$starttime,$countunread);
}
if ($show{'coursenormalmail'}) {
$msgcount = &getnormalmail(\@newmsgs);
@@ -533,7 +534,7 @@
if ($displayed == $halfway) {
$r->print('</td><td> </td><td class="LC_right_col" >');
}
- &display_launcher($r,$actionitem,$refpage,$checkallowed,\%show,\%headings,\%res_title,\@tograde,\%ungraded,\@bombs,\%bombed,\%changed,\@warnings,\%triggered,\@newdiscussions,\%unread,$msgcount,\@newmsgs,$critmsgcount,\@critmsgs,\%interval,$countunread,\%expired,$expirecount,\%activated,$activecount,$crstype);
+ &display_launcher($r,$actionitem,$refpage,$checkallowed,\%show,\%headings,\%res_title,\@tograde,\%ungraded,\@bombs,\%bombed,\%changed,\@warnings,\%triggered,\@newdiscussions,\%unread,$msgcount,\@newmsgs,$critmsgcount,\@critmsgs,\%interval,$countunread,\%expired,$expirecount,\%activated,$activecount,$crstype,$itemserror);
$displayed ++;
}
}
@@ -786,23 +787,23 @@
$tograde,$ungraded,$bombs,$bombed,$changed,$warnings,$triggered,
$newdiscussions,$unread,$msgcount,$newmsgs,$critmsgcount,$critmsgs,
$interval,$countunread,$expired,$expirecount,$activated,$activecount,
- $crstype) = @_;
+ $crstype,$itemserror) = @_;
if ($$checkallowed{$action}) {
&start_box($r,$show,$headings,$action,$refpage,$action);
if ($$show{$action}) {
if ($action eq 'handgrading') { # UNGRADED ITEMS
- &display_handgrade($r,$tograde,$ungraded);
+ &display_handgrade($r,$tograde,$ungraded,$itemserror);
} elsif ($action eq 'haserrors') { # BOMBS
- &display_haserrors($r,$bombs,$bombed,$res_title);
+ &display_haserrors($r,$bombs,$bombed,$res_title,$itemserror);
} elsif ($action eq 'versionchanges') { # VERSION CHANGES
- &display_versionchanges($r,$changed,$res_title,$interval->{'versions'});
+ &display_versionchanges($r,$changed,$res_title,$interval->{'versions'},$itemserror);
} elsif ($action eq 'abovethreshold') { # DEGDIFF/AV. TRIES TRIGGERS
&display_abovethreshold($r,$refpage,$warnings,$triggered,
- $res_title);
+ $res_title,$itemserror);
} elsif ($action eq 'coursediscussion') { # UNREAD COURSE DISCUSSION
&display_coursediscussion($r,$newdiscussions,$unread,
- $countunread,$res_title);
+ $countunread,$res_title,$itemserror);
} elsif ($action eq 'coursenormalmail') { # NORMAL MESSAGES
&display_coursenormalmail($r,$msgcount,$newmsgs);
} elsif ($action eq 'coursecritmail') { # CRITICAL MESSAGES
@@ -825,6 +826,10 @@
$tograde,$bombs,$warnings,$threshold,$cdom,$crs,$res_title,$show,
$starttime,$countunread) = @_;
my $navmap = Apache::lonnavmaps::navmap->new();
+ if (!defined($navmap)) {
+ my $itemserror = '<span class="LC_warning">'.&mt('An error occurred retrieving information about the course.').'<br />'.&mt('It is recommended that you [_1]re-select the course[_2].','<a href="/adm/roles">','</a>').'</span>';
+ return $itemserror;
+ }
# 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;});
@@ -883,6 +888,7 @@
}
}
+ return;
}
sub check_discussions {
@@ -1446,7 +1452,7 @@
}
sub display_handgrade {
- my ($r,$tograde,$ungraded) = @_;
+ my ($r,$tograde,$ungraded,$itemserror) = @_;
my %lt = &Apache::lonlocal::texthash(
'prna' => 'Problem Name',
'nmun' => 'Number ungraded',
@@ -1469,13 +1475,15 @@
}
$r->print('<tr'.$css_class.'><td><a href="'.$linkurl.'">'.$$ungraded{$res}{title}.'</a></td><td class="LC_right_item">'.$$ungraded{$res}{count}.'</td></tr>');
}
+ } elsif ($itemserror) {
+ $r->print('<tr class="LC_empty_row"><td>'.$itemserror.'</td></tr>');
} else {
$r->print('<tr class="LC_empty_row"><td>'.$lt{'nopr'}.'</td></tr>');
}
}
sub display_haserrors {
- my ($r,$bombs,$bombed,$res_title) = @_;
+ my ($r,$bombs,$bombed,$res_title,$itemserror) = @_;
my $bombnum = 0;
my %lt = &Apache::lonlocal::texthash(
reso => 'Resource',
@@ -1494,6 +1502,8 @@
'</td><td class="LC_right_item">'.
$$bombed{$bomb}{errorcount}.'</td></tr>');
}
+ } elsif ($itemserror) {
+ $r->print('<tr class="LC_empty_row"><td>'.$itemserror.'</td></tr>');
} else {
$r->print('<tr class="LC_empty_row"><td>'.$lt{'noer'}.'</td></tr>');
}
@@ -1501,7 +1511,7 @@
}
sub display_abovethreshold {
- my ($r,$refpage,$warnings,$triggered,$res_title) = @_;
+ my ($r,$refpage,$warnings,$triggered,$res_title,$itemserror) = @_;
my %lt = &Apache::lonlocal::texthash(
reso => 'Resource',
part => 'Part',
@@ -1557,13 +1567,15 @@
}
}
$r->print('<tr class="LC_info_row"><td colspan="7" class="LC_right_item"><br /><input type="submit" name="counters" value="'.$lt{'rese'}.'" /></td></tr></form>');
+ } elsif ($itemserror) {
+ $r->print('<tr class="LC_empty_row"><td>'.$itemserror.'</td></tr>');
} else {
$r->print('<tr class="LC_empty_row"><td>'.$lt{'nopr'}.'</td></tr>');
}
}
sub display_versionchanges {
- my ($r,$changed,$res_title,$interval) = @_;
+ my ($r,$changed,$res_title,$interval,$itemserror) = @_;
my %lt = &Apache::lonlocal::texthash(
'reso' => 'Resource',
'revd' => 'Last revised',
@@ -1590,6 +1602,8 @@
$$changed{$item}{'current'}.'</td><td>'.
$$changed{$item}{'version'}.'</td></tr>');
}
+ } elsif ($itemserror) {
+ $r->print('<tr class="LC_empty_row"><td>'.$itemserror.'</td></tr>');
} else {
$r->print('<tr class="LC_empty_row"><td>'
.&mt('No '.$interval).'</td></tr>');
@@ -1655,7 +1669,7 @@
}
sub display_coursediscussion {
- my ($r,$newdiscussions,$unread,$countunread,$res_title) = @_;
+ my ($r,$newdiscussions,$unread,$countunread,$res_title,$itemserror) = @_;
my $lctype = lc(&Apache::loncommon::course_type());
my %lt = &Apache::lonlocal::texthash(
'loca' => 'Location',
@@ -1703,6 +1717,8 @@
}
$r->print("</tr>\n");
}
+ } elsif ($itemserror) {
+ $r->print('<tr class="LC_empty_row"><td>'.$itemserror.'</td></tr>');
} else {
$r->print('<tr class="LC_empty_row"><td>'.$lt{'noun'}.'</td></tr>');
}