[LON-CAPA-cvs] cvs: loncom /interface lonnavmaps.pm
raeburn
raeburn at source.lon-capa.org
Fri Aug 8 11:49:19 EDT 2025
raeburn Fri Aug 8 15:49:19 2025 EDT
Modified files:
/loncom/interface lonnavmaps.pm
Log:
- For unprivileged users: for resources with closed discussion and for
which value in effect is "yes" for discusshide no speechbubble icon
shown if there is "unread" discussion.
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.577 loncom/interface/lonnavmaps.pm:1.578
--- loncom/interface/lonnavmaps.pm:1.577 Sat Jun 28 17:34:00 2025
+++ loncom/interface/lonnavmaps.pm Fri Aug 8 15:49:19 2025
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.577 2025/06/28 17:34:00 raeburn Exp $
+# $Id: lonnavmaps.pm,v 1.578 2025/08/08 15:49:19 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1209,7 +1209,7 @@
my $linkclose = "</a>";
my $location=&Apache::loncommon::lonhttpdurl("/adm/lonMisc");
- if ($resource->hasDiscussion()) {
+ if (($resource->hasDiscussion()) && ($resource->discussion_visible())) {
$discussionHTML = $linkopen .
'<img alt="'.&mt('New Discussion').'" src="'.$location.'/chat.gif" title="'.&mt('New Discussion').'"/>' .
$linkclose;
@@ -1697,7 +1697,7 @@
my $haveDisc = '';
my @allres=$navmap->retrieveResources();
foreach my $resource (@allres) {
- if ($resource->hasDiscussion()) {
+ if (($resource->hasDiscussion()) && ($resource->discussion_visible())) {
$haveDisc .= $resource->wrap_symb().':';
$totdisc ++;
}
@@ -1866,7 +1866,7 @@
my $filterFunc=
sub {
my ($res)=@_;
- if (!$res->hasDiscussion() &&
+ if ((!$res->hasDiscussion() || !$res->discussion_visible()) &&
!$res->getFeedback() &&
!$res->getErrors()) { return 0;}
return &$oldFilterFunc($res);
@@ -5409,6 +5409,25 @@
$self->{SECTION});
return $weight;
}
+sub discussion_visible {
+ my $self = shift();
+ return 1 if ($env{'request.role.adv'});
+ my $probstatus = $self->parmval('problemstatus');
+ my $discend = $self->parmval('discussend');
+ my $dischide = $self->parmval('discusshide');
+ if ((defined($discend)) && ($discend ne '')) {
+ unless (($discend >= time) || ((lc($dischide) eq 'no') || ($dischide eq ''))) {
+ return 0;
+ }
+ } elsif ((defined($probstatus)) &&
+ !($probstatus eq 'CAN_ANSWER' || $probstatus eq 'CANNOT_ANSWER'
+ || $probstatus eq 'OPEN')) {
+ unless ((lc($dischide) eq 'no') || ($dischide eq '')) {
+ return 0;
+ }
+ }
+ return 1;
+}
sub part_display {
my $self= shift(); my $partID = shift();
if (! defined($partID)) { $partID = '0'; }
More information about the LON-CAPA-cvs
mailing list