[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