[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonblockingstatus.pm

raeburn raeburn at source.lon-capa.org
Sun Dec 12 23:05:24 EST 2021


raeburn		Mon Dec 13 04:05:24 2021 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/interface	lonblockingstatus.pm 
  Log:
  - For 2.11
    Backport 1.15 (part), 1.16, 1.19, 1.20, 1.21
  
  
-------------- next part --------------
Index: loncom/interface/lonblockingstatus.pm
diff -u loncom/interface/lonblockingstatus.pm:1.14.2.4 loncom/interface/lonblockingstatus.pm:1.14.2.5
--- loncom/interface/lonblockingstatus.pm:1.14.2.4	Tue Sep 29 19:55:00 2020
+++ loncom/interface/lonblockingstatus.pm	Mon Dec 13 04:05:24 2021
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # displays the blocking status table
 #
-# $Id: lonblockingstatus.pm,v 1.14.2.4 2020/09/29 19:55:00 raeburn Exp $
+# $Id: lonblockingstatus.pm,v 1.14.2.5 2021/12/13 04:05:24 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -44,7 +44,7 @@
     return OK if $r->header_only;
 
     my (%activities,$activity,$origurl,$origsymb);
-    map { $activities{$_} = 1; } ('boards','chat','com','blogs','groups','port','printout','docs','passwd');
+    map { $activities{$_} = 1; } ('boards','chat','com','blogs','about','groups','port','printout','docs','grades','passwd','search');
 
     # determine what kind of blocking we want details for
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity','url','symb']);
@@ -53,7 +53,8 @@
     my $title = 'Communication Blocking Status Information';
 
     if (($activity eq 'docs') || ($activity eq 'printout') ||
-        ($activity eq 'passwd')) {
+        ($activity eq 'grades') || ($activity eq 'passwd') ||
+        ($activity eq 'search')) {
         $title = 'Blocking Status Information';
         if ($activity eq 'docs') {
             $origurl = $env{'form.url'};
@@ -68,7 +69,8 @@
     } elsif (($activity eq 'docs') && ($origurl eq '') && ($origsymb eq '')) {
         $r->print('<p class="LC_error">'.&mt('Error: could not determine what content was blocked from access').'</p>');
     } else {
-        $r->print(&blockpage($activity,$origurl,$origsymb));
+        my $clientip = &Apache::lonnet::get_requestor_ip($r);
+        $r->print(&blockpage($activity,$origurl,$origsymb,$clientip));
     }
 
     $r->print(&Apache::loncommon::end_page());
@@ -77,13 +79,13 @@
 }
 
 sub blockpage {
-    my ($activity,$origurl,$origsymb) = @_;
+    my ($activity,$origurl,$origsymb,$clientip) = @_;
 
     # in case of a portfolio block we need to determine the owner of the files
     # we're trying to look at. This information is passed via query string.
     my ($uname, $udom);
 
-    if (($activity eq 'port') ||
+    if (($activity eq 'port') || ($activity eq 'about') ||
         (($activity eq 'passwd') && ($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))) {
         &Apache::loncommon::get_unprocessed_cgi(
             $ENV{'QUERY_STRING'}, ['udom', 'uname'] );
@@ -95,6 +97,11 @@
                        &mt('Information about the owner of the portfolio files you were trying to view was missing or invalid.').
                        '</span><br />'.
                        &mt('Without valid owner information, the reason why access is blocked can not be determined');
+            } elsif ($activity eq 'about') {
+                return '<span class="LC_error">'.
+                       &mt('The username and/or domain for the User Information page you were trying to view was missing or invalid.').
+                       '</span><br />'.
+                       &mt('Without valid information, the reason why access is blocked can not be determined');
             } else {
                 return '<span class="LC_error">'.
                        &mt('Information about the username and/or domain for which you were trying to reset a password was missing or invalid.').
@@ -105,7 +112,7 @@
     }
 
     # retrieve start/end of possible active blocking
-    my (%setters,$startblock,$endblock,$triggerblock);
+    my (%setters,$startblock,$endblock,$triggerblock,$by_ip,$blockdom);
 
     if ($activity eq 'docs') {
         my ($cdom,$cnum);
@@ -126,17 +133,17 @@
         }
         if ($cancheck) {
             ($startblock,$endblock,$triggerblock) =
-                &Apache::loncommon::blockcheck(\%setters,$activity,$cnum,$cdom,$origurl,1,$origsymb,'blockingstatus');
+                &Apache::loncommon::blockcheck(\%setters,$activity,$clientip,$cnum,$cdom,$origurl,1,$origsymb,'blockingstatus');
         } else {
             return '<p class="LC_info">'.&mt('Could not determine why access is blocked.').'</p>';
         }
     } else {
-        ($startblock,$endblock,$triggerblock) =
-            &Apache::loncommon::blockcheck(\%setters,$activity,$uname,$udom,$origurl,undef,$origsymb,'blockingstatus');
+        ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) =
+            &Apache::loncommon::blockcheck(\%setters,$activity,$clientip,$uname,$udom,$origurl,undef,$origsymb,'blockingstatus');
     }
 
     # nothing to do if there's no active blocking
-    unless ($startblock && $endblock) {
+    unless (($startblock && $endblock) || ($by_ip)) {
         if ($activity eq 'docs') {
             return '<p class="LC_info">'.&mt('Content no longer blocked from access').'</p>';
         }
@@ -150,10 +157,13 @@
                    chat       => 'Chat Room',
                    com        => 'This message',
                    blogs      => 'Blogs',
+                   about      => 'User information pages',
                    groups     => 'Groups in this course',
                    printout   => 'Printout generation',
                    docs       => 'Course Content',
                    passwd     => 'Changing of passwords',
+                   grades     => 'Course Gradebook',
+                   search     => 'Content Search',
                 );
 
     if ($activity eq 'groups' || $activity eq 'boards') {
@@ -161,21 +171,23 @@
             $descs{'boards'} = 'Discussion posts in this community';
             $descs{'groups'} = 'Groups in this community';
             $descs{'docs'} = 'Community Content';
+            $descs{'grades'} = 'Community Gradebook';  
         }
     }
 
     my $description = $descs{$activity};
     if ($activity eq 'port') {
-        $description = &get_portfolio_category($uname,$udom,\%setters);
+        $description = &get_portfolio_category($uname,$udom,$by_ip,\%setters);
     }
     if ($description eq '') {
         $description = 'Communication';
     }
 
-    my $showstart = Apache::lonlocal::locallocaltime($startblock);
-    my $showend   = Apache::lonlocal::locallocaltime($endblock);
-
-    my $output;
+    my ($showstart,$showend,$output);
+    unless ($by_ip) {
+        $showstart = Apache::lonlocal::locallocaltime($startblock);
+        $showend   = Apache::lonlocal::locallocaltime($endblock);
+    }
 
     if ( ref($description) ne 'ARRAY' ) {
         #default: $description is one of the above descriptions
@@ -184,25 +196,48 @@
                          . ' view will be unavailable between [_1] and [_2] because'
                          . ' access to selected '.$description.' is being blocked.'
                          ,$showstart, $showend);
-        } elsif (($activity eq 'printout') || ($activity eq 'passwd')) {
-            $output = mt( $description
-                          . ' will be unavailable between [_1] and [_2] because'
-                          . ' this functionality is being blocked.'
-                          ,$showstart, $showend);
+        } elsif (($activity eq 'printout') || ($activity eq 'passwd') ||
+                 ($activity eq 'grades') || ($activity eq 'search') ||
+                 ($activity eq 'about')) {
+            if ($by_ip) {
+                $output = mt( $description
+                              . ' unavailable from your current IP address: [_1] '
+                              . 'because this functionality is being blocked for certain IP address(es).'
+                              ,$clientip);
+            } else {
+                $output = mt( $description
+                              . ' will be unavailable between [_1] and [_2] because'
+                              . ' this functionality is being blocked.'
+                              ,$showstart, $showend);
+            }
         } else {
-            $output = mt( $description
-                          . ' will be inaccessible between [_1] and [_2] because'
-                          . ' communication is being blocked.'
-                          ,$showstart, $showend);
+            if ($by_ip) {
+                $output = mt( $description
+                              . ' unavailable from your current IP address: [_1] '
+                              . 'because communication is being blocked for certain IP address(es).'
+                              ,$clientip);
+            } else {
+                $output = mt( $description
+                              . ' will be inaccessible between [_1] and [_2] because'
+                              . ' communication is being blocked.'
+                              ,$showstart, $showend);
+            }
         }
     } else {
         # @$description is is the array returned from get_portfolio_category()
         # and contains the description (e.g. "Portfolio files belonging to [_1]"
         # and the value for [_1]
-        $output = mt( $$description[0]
-                      . ' will be inaccessible between [_2] and [_3] because'
-                      . ' communication is being blocked.'
-                     ,$$description[1], $showstart, $showend);
+        if ($by_ip) {
+            $output = mt( $$description[0]
+                          . ' are inaccessible from your current IP address: [_2] '
+                          . 'because communication is being blocked for certain IP address(es).'
+                          , $$description[1], $clientip);
+        } else {
+            $output = mt( $$description[0]
+                          . ' will be inaccessible between [_2] and [_3] because'
+                          . ' communication is being blocked.'
+                          ,$$description[1], $showstart, $showend);
+        }
     }
 
     $output = "<p class=\"LC_info\">$output</p>";
@@ -214,7 +249,17 @@
             && $udom  eq $env{'user.domain'} ) 
         || Apache::lonnet::is_course($udom, $uname) ) # or portfolio of a course
     {
-        $output .= &build_block_table(\%setters);
+        if ($by_ip) {
+            my $showdom = &Apache::lonnet::domain($blockdom);
+            if ($showdom eq '') {
+                $showdom = $blockdom
+            }
+            $output .= '<br />'.
+                       &mt('This restriction was set by an administrator in the [_1] LON-CAPA domain.'
+                          ,$showdom);
+        } else {
+            $output .= &build_block_table(\%setters);
+        }
     }
 
     return $output;
@@ -265,7 +310,7 @@
 }
 
 sub get_portfolio_category {
-    my ($uname, $udom, $setters) = @_;
+    my ($uname, $udom, $by_ip, $setters) = @_;
 
     if ($uname eq $env{'user.name'} && $udom eq $env{'user.domain'}) {
         # user's portolfio files
@@ -277,12 +322,17 @@
 
         my $coursedesc;
 
-        foreach my $course (keys(%{$setters})) {
-            my %courseinfo = Apache::lonnet::coursedescription($course);
+        if ($by_ip) {
+            my %courseinfo = Apache::lonnet::coursedescription($udom.'_'.$uname);
             $coursedesc    = $courseinfo{'description'};
+        } else {
+            foreach my $course (keys(%{$setters})) {
+                my %courseinfo = Apache::lonnet::coursedescription($course);
+                $coursedesc    = $courseinfo{'description'};
+            }
         }
 
-        return ["Group portfolio in the course '[_1]'", $coursedesc];
+        return ["Group portfolio files in the course '[_1]'", $coursedesc];
         
     } else {
         # different user's portfolio files


More information about the LON-CAPA-cvs mailing list