[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