version 1.18, 2020/09/29 19:29:51
|
version 1.23, 2024/12/31 19:28:29
|
Line 44 sub handler {
|
Line 44 sub handler {
|
return OK if $r->header_only; |
return OK if $r->header_only; |
|
|
my (%activities,$activity,$origurl,$origsymb); |
my (%activities,$activity,$origurl,$origsymb); |
map { $activities{$_} = 1; } ('boards','chat','com','blogs','groups','port','printout','docs','grades','passwd','search'); |
map { $activities{$_} = 1; } ('boards','chat','com','blogs','about','groups','port','printout','docs','grades','passwd','search','index','wishlist','annotate'); |
|
|
# determine what kind of blocking we want details for |
# determine what kind of blocking we want details for |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity','url','symb']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity','url','symb']); |
Line 54 sub handler {
|
Line 54 sub handler {
|
|
|
if (($activity eq 'docs') || ($activity eq 'printout') || |
if (($activity eq 'docs') || ($activity eq 'printout') || |
($activity eq 'grades') || ($activity eq 'passwd') || |
($activity eq 'grades') || ($activity eq 'passwd') || |
($activity eq 'search')) { |
($activity eq 'search') || ($activity eq 'wishlist') || |
|
($activity eq 'annotate') || ($activity eq 'index')) { |
$title = 'Blocking Status Information'; |
$title = 'Blocking Status Information'; |
if ($activity eq 'docs') { |
if ($activity eq 'docs') { |
$origurl = $env{'form.url'}; |
$origurl = $env{'form.url'}; |
Line 69 sub handler {
|
Line 70 sub handler {
|
} elsif (($activity eq 'docs') && ($origurl eq '') && ($origsymb eq '')) { |
} 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>'); |
$r->print('<p class="LC_error">'.&mt('Error: could not determine what content was blocked from access').'</p>'); |
} else { |
} 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()); |
$r->print(&Apache::loncommon::end_page()); |
Line 78 sub handler {
|
Line 80 sub handler {
|
} |
} |
|
|
sub blockpage { |
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 |
# 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. |
# we're trying to look at. This information is passed via query string. |
my ($uname, $udom); |
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'))) { |
(($activity eq 'passwd') && ($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))) { |
&Apache::loncommon::get_unprocessed_cgi( |
&Apache::loncommon::get_unprocessed_cgi( |
$ENV{'QUERY_STRING'}, ['udom', 'uname'] ); |
$ENV{'QUERY_STRING'}, ['udom', 'uname'] ); |
Line 96 sub blockpage {
|
Line 98 sub blockpage {
|
&mt('Information about the owner of the portfolio files you were trying to view was missing or invalid.'). |
&mt('Information about the owner of the portfolio files you were trying to view was missing or invalid.'). |
'</span><br />'. |
'</span><br />'. |
&mt('Without valid owner information, the reason why access is blocked can not be determined'); |
&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 { |
} else { |
return '<span class="LC_error">'. |
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.'). |
&mt('Information about the username and/or domain for which you were trying to reset a password was missing or invalid.'). |
Line 106 sub blockpage {
|
Line 113 sub blockpage {
|
} |
} |
|
|
# retrieve start/end of possible active blocking |
# retrieve start/end of possible active blocking |
my (%setters,$startblock,$endblock,$triggerblock); |
my (%setters,$startblock,$endblock,$triggerblock,$by_ip,$blockdom); |
|
|
if ($activity eq 'docs') { |
if ($activity eq 'docs') { |
my ($cdom,$cnum); |
my ($cdom,$cnum); |
Line 127 sub blockpage {
|
Line 134 sub blockpage {
|
} |
} |
if ($cancheck) { |
if ($cancheck) { |
($startblock,$endblock,$triggerblock) = |
($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 { |
} else { |
return '<p class="LC_info">'.&mt('Could not determine why access is blocked.').'</p>'; |
return '<p class="LC_info">'.&mt('Could not determine why access is blocked.').'</p>'; |
} |
} |
} else { |
} else { |
($startblock,$endblock,$triggerblock) = |
($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
&Apache::loncommon::blockcheck(\%setters,$activity,$uname,$udom,$origurl,undef,$origsymb,'blockingstatus'); |
&Apache::loncommon::blockcheck(\%setters,$activity,$clientip,$uname,$udom,$origurl,undef,$origsymb,'blockingstatus'); |
} |
} |
|
|
# nothing to do if there's no active blocking |
# nothing to do if there's no active blocking |
unless ($startblock && $endblock) { |
unless (($startblock && $endblock) || ($by_ip)) { |
if ($activity eq 'docs') { |
if ($activity eq 'docs') { |
return '<p class="LC_info">'.&mt('Content no longer blocked from access').'</p>'; |
return '<p class="LC_info">'.&mt('Content no longer blocked from access').'</p>'; |
} |
} |
Line 151 sub blockpage {
|
Line 158 sub blockpage {
|
chat => 'Chat Room', |
chat => 'Chat Room', |
com => 'This message', |
com => 'This message', |
blogs => 'Blogs', |
blogs => 'Blogs', |
|
about => 'User information pages', |
groups => 'Groups in this course', |
groups => 'Groups in this course', |
printout => 'Printout generation', |
printout => 'Printout generation', |
docs => 'Course Content', |
docs => 'Course Content', |
passwd => 'Changing of passwords', |
passwd => 'Changing of passwords', |
grades => 'Course Gradebook', |
grades => 'Course Gradebook', |
search => 'Content Search', |
search => 'Content Search', |
|
index => 'Content Index', |
|
wishlist => 'Stored Links', |
|
annotate => 'Annotations', |
); |
); |
|
|
if ($activity eq 'groups' || $activity eq 'boards') { |
if ($activity eq 'groups' || $activity eq 'boards') { |
Line 170 sub blockpage {
|
Line 181 sub blockpage {
|
|
|
my $description = $descs{$activity}; |
my $description = $descs{$activity}; |
if ($activity eq 'port') { |
if ($activity eq 'port') { |
$description = &get_portfolio_category($uname,$udom,\%setters); |
$description = &get_portfolio_category($uname,$udom,$by_ip,\%setters); |
} |
} |
if ($description eq '') { |
if ($description eq '') { |
$description = 'Communication'; |
$description = 'Communication'; |
} |
} |
|
|
my $showstart = Apache::lonlocal::locallocaltime($startblock); |
my ($showstart,$showend,$output); |
my $showend = Apache::lonlocal::locallocaltime($endblock); |
unless ($by_ip) { |
|
$showstart = Apache::lonlocal::locallocaltime($startblock); |
my $output; |
$showend = Apache::lonlocal::locallocaltime($endblock); |
|
} |
|
|
if ( ref($description) ne 'ARRAY' ) { |
if ( ref($description) ne 'ARRAY' ) { |
#default: $description is one of the above descriptions |
#default: $description is one of the above descriptions |
Line 189 sub blockpage {
|
Line 201 sub blockpage {
|
. ' access to selected '.$description.' is being blocked.' |
. ' access to selected '.$description.' is being blocked.' |
,$showstart, $showend); |
,$showstart, $showend); |
} elsif (($activity eq 'printout') || ($activity eq 'passwd') || |
} elsif (($activity eq 'printout') || ($activity eq 'passwd') || |
($activity eq 'grades') || ($activity eq 'search')) { |
($activity eq 'grades') || ($activity eq 'search') || |
$output = mt( $description |
($activity eq 'about') || ($activity eq 'wishlist') || |
. ' will be unavailable between [_1] and [_2] because' |
($activity eq 'annotate') || ($activity eq 'index')) { |
. ' this functionality is being blocked.' |
if ($by_ip) { |
,$showstart, $showend); |
$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 { |
} else { |
$output = mt( $description |
if ($by_ip) { |
. ' will be inaccessible between [_1] and [_2] because' |
$output = mt( $description |
. ' communication is being blocked.' |
. ' unavailable from your current IP address: [_1] ' |
,$showstart, $showend); |
. '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 { |
} else { |
# @$description is is the array returned from get_portfolio_category() |
# @$description is is the array returned from get_portfolio_category() |
# and contains the description (e.g. "Portfolio files belonging to [_1]" |
# and contains the description (e.g. "Portfolio files belonging to [_1]" |
# and the value for [_1] |
# and the value for [_1] |
$output = mt( $$description[0] |
if ($by_ip) { |
. ' will be inaccessible between [_2] and [_3] because' |
$output = mt( $$description[0] |
. ' communication is being blocked.' |
. ' are inaccessible from your current IP address: [_2] ' |
,$$description[1], $showstart, $showend); |
. '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>"; |
$output = "<p class=\"LC_info\">$output</p>"; |
Line 219 sub blockpage {
|
Line 254 sub blockpage {
|
&& $udom eq $env{'user.domain'} ) |
&& $udom eq $env{'user.domain'} ) |
|| Apache::lonnet::is_course($udom, $uname) ) # or portfolio of a course |
|| 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; |
return $output; |
Line 270 sub build_block_table {
|
Line 315 sub build_block_table {
|
} |
} |
|
|
sub get_portfolio_category { |
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'}) { |
if ($uname eq $env{'user.name'} && $udom eq $env{'user.domain'}) { |
# user's portolfio files |
# user's portolfio files |
Line 282 sub get_portfolio_category {
|
Line 327 sub get_portfolio_category {
|
|
|
my $coursedesc; |
my $coursedesc; |
|
|
foreach my $course (keys(%{$setters})) { |
if ($by_ip) { |
my %courseinfo = Apache::lonnet::coursedescription($course); |
my %courseinfo = Apache::lonnet::coursedescription($udom.'_'.$uname); |
$coursedesc = $courseinfo{'description'}; |
$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 { |
} else { |
# different user's portfolio files |
# different user's portfolio files |