version 1.7, 2010/02/19 10:20:03
|
version 1.14, 2020/01/23 23:48:12
|
Line 33 use Apache::Constants qw(:common);
|
Line 33 use Apache::Constants qw(:common);
|
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonlocal; |
use Apache::lonlocal; |
|
use LONCAPA qw(:DEFAULT :match); |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
Apache::loncommon::no_cache($r); |
&Apache::loncommon::no_cache($r); |
Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
|
|
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
|
|
$r->print( Apache::loncommon::start_page( |
my (%activities,$activity,$origurl); |
'Communication Blocking Status Information', |
map { $activities{$_} = 1; } ('boards','chat','com','blogs','groups','port','printout','docs','passwd'); |
undef, {'only_body' => 1})); |
|
|
|
$r->print(blockpage()); |
# determine what kind of blocking we want details for |
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity','url']); |
|
$activity = $env{'form.activity'}; |
|
|
|
my $title = 'Communication Blocking Status Information'; |
|
|
|
if (($activity eq 'docs') || ($activity eq 'printout')) { |
|
$title = 'Blocking Status Information'; |
|
$origurl = $env{'form.url'}; |
|
} |
|
$r->print(&Apache::loncommon::start_page($title,undef, |
|
{'only_body' => 1})); |
|
|
|
if (($activity eq '') || (!$activities{$activity})) { |
|
$r->print('<span class="LC_error">'.&mt('Error: unknown activity type blocked').'</span>'); |
|
} else { |
|
$r->print(&blockpage($activity,$origurl)); |
|
} |
|
|
$r->print(Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
|
|
return OK; |
return OK; |
} |
} |
|
|
|
|
sub blockpage { |
sub blockpage { |
|
my ($activity,$origurl) = @_; |
# determine what kind of blocking we want details for |
|
Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity']); |
|
my $activity = $env{'form.activity'}; |
|
|
|
if ($activity !~ /^[a-z]+$/) { return 'Error'; } |
|
|
|
|
|
# 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') || |
Apache::loncommon::get_unprocessed_cgi( |
(($activity eq 'passwd') && ($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))) { |
|
&Apache::loncommon::get_unprocessed_cgi( |
$ENV{'QUERY_STRING'}, ['udom', 'uname'] ); |
$ENV{'QUERY_STRING'}, ['udom', 'uname'] ); |
|
|
($uname, $udom) = ($env{'form.uname'}, $env{'form.udom'}); |
($uname, $udom) = ($env{'form.uname'}, $env{'form.udom'}); |
#TODO sanitize input: $uname, $udom |
if (($uname !~ /^$match_username$/) || ($udom !~ /^$match_domain$/)) { |
|
if ($activity eq 'port') { |
|
return '<span class="LC_error">'. |
|
&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'); |
|
} 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.'). |
|
'</span><br />'. |
|
&mt('Without valid information, the reason why access is blocked can not be determined'); |
|
} |
|
} |
} |
} |
|
|
|
|
# retrieve start/end of possible active blocking |
# retrieve start/end of possible active blocking |
my %setters; |
my %setters; |
my ($startblock, $endblock) = Apache::loncommon::blockcheck( |
my ($startblock,$endblock,$triggerblock) = |
\%setters, $activity, $uname, $udom); |
&Apache::loncommon::blockcheck(\%setters,$activity,$uname,$udom,$origurl); |
|
|
# nothing to do if there's no active blocking |
# nothing to do if there's no active blocking |
unless ($startblock && $endblock) { return ''; } |
unless ($startblock && $endblock) { return ''; } |
|
|
# lookup $activity -> description |
# lookup $activity -> description |
#possible activity #corresponding description |
#possible activity #corresponding description |
my $description = |
my %descs = ( |
$activity eq 'boards' ? 'Discussion posts in this course' |
boards => 'Discussion posts in this course', |
: $activity eq 'chat' ? 'Chat Room' |
chat => 'Chat Room', |
: $activity eq 'msgdisplay' ? 'This message' |
com => 'This message', |
: $activity eq 'blogs' ? 'Blogs' |
blogs => 'Blogs', |
: $activity eq 'groups' ? 'Groups in this course' |
groups => 'Groups in this course', |
: $activity eq 'port' ? get_portfolio_category( |
printout => 'Printout generation', |
$uname, $udom, \%setters) |
docs => 'Course Content', |
: 'Communication'; |
passwd => 'Changing of passwords', |
|
); |
|
|
|
if ($activity eq 'groups' || $activity eq 'boards') { |
|
if (&Apache::loncommon::course_type() eq 'Community') { |
|
$descs{'boards'} = 'Discussion posts in this community', |
|
$descs{'groups'} = 'Groups in this community', |
|
$descs{'docs'} = 'Community Content', |
|
} |
|
} |
|
|
|
my $description = $descs{$activity}; |
|
if ($activity eq 'port') { |
|
$description = &get_portfolio_category($uname,$udom,\%setters); |
|
} |
|
if ($description eq '') { |
|
$description = 'Communication'; |
|
} |
|
|
my $showstart = Apache::lonlocal::locallocaltime($startblock); |
my $showstart = Apache::lonlocal::locallocaltime($startblock); |
my $showend = Apache::lonlocal::locallocaltime($endblock); |
my $showend = Apache::lonlocal::locallocaltime($endblock); |
|
|
my $output; |
my $output; |
|
|
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 |
$output = mt( $description |
if ($activity eq 'docs') { |
. ' will be inaccessible between [_1] and [_2] because' |
$output=&mt( 'Access to the content page you are attempting to' |
. ' communication is being blocked.' |
. ' view will be unavailable between [_1] and [_2] because' |
,$showstart, $showend); |
. ' 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); |
|
} 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]" |
Line 126 sub blockpage {
|
Line 179 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($startblock,$endblock,\%setters); |
$output .= &build_block_table(\%setters); |
} |
} |
|
|
return $output; |
return $output; |
} |
} |
|
|
sub build_block_table { |
sub build_block_table { |
my ($startblock,$endblock,$setters) = @_; |
my ($setters) = @_; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'cacb' => 'Currently active communication blocks', |
'cacb' => 'Currently active communication/content blocks', |
'cour' => 'Course', |
'cour' => 'Course', |
'dura' => 'Duration', |
'dura' => 'Duration', |
'blse' => 'Block set by' |
'blse' => 'Block set by' |
Line 158 sub build_block_table {
|
Line 211 sub build_block_table {
|
{ |
{ |
$fullname = Apache::loncommon::aboutmewrapper($fullname,$uname,$udom); |
$fullname = Apache::loncommon::aboutmewrapper($fullname,$uname,$udom); |
} |
} |
|
my $triggertype = $$setters{$course}{triggers}[$i]; |
|
if ($triggertype) { |
|
$fullname .= &mt(' (triggered by you when starting timer)'); |
|
} |
my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; |
my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; |
$openblock = &Apache::lonlocal::locallocaltime($openblock); |
$openblock = &Apache::lonlocal::locallocaltime($openblock); |
$closeblock= &Apache::lonlocal::locallocaltime($closeblock); |
$closeblock= &Apache::lonlocal::locallocaltime($closeblock); |