--- loncom/interface/lonblockingstatus.pm 2009/07/09 12:53:28 1.2 +++ loncom/interface/lonblockingstatus.pm 2009/07/27 12:12:48 1.5 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # displays the blocking status table # -# $Id: lonblockingstatus.pm,v 1.2 2009/07/09 12:53:28 kalberla Exp $ +# $Id: lonblockingstatus.pm,v 1.5 2009/07/27 12:12:48 kalberla Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,6 +31,21 @@ package Apache::lonblockingstatus; use strict; use Apache::Constants qw(:common); use Apache::loncommon(); +use Apache::lonnet; +use GDBM_File; +use POSIX qw(strftime mktime); +use Apache::lonmenu(); +use Apache::lonenc(); +use Apache::lonlocal; +use Apache::lonnet(); +use HTML::Entities; +use Apache::lonhtmlcommon(); +use Apache::loncoursedata(); +use Apache::lontexconvert(); +use Apache::lonclonecourse(); +use LONCAPA qw(:DEFAULT :match); +use DateTime::TimeZone; +use DateTime::Locale::Catalog; sub handler { my $r = shift; @@ -43,19 +58,111 @@ sub handler { Apache::loncommon::start_page( 'Communication Blocking Status Information', undef, {'only_body' => 1, })); - - my ($blocked, $blocktext) = &Apache::loncommon::blocking_status_print('boards'); + Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity']); + my $blocktext = get_blocking_table($env{'form.activity'}); $r->print($blocktext); $r->print(Apache::loncommon::end_page()); return OK; } +sub get_blocking_table{ + my ($activity,$uname,$udom) = @_; + my %setters; + my ($blocked,$output,$ownitem,$is_course); + my ($startblock,$endblock)=&Apache::loncommon::blockcheck(\%setters,$activity,$uname,$udom); + if ($startblock && $endblock) { + $blocked = 1; + my $category; + if ($activity eq 'boards') { + $category = 'Discussion posts in this course'; + } elsif ($activity eq 'chat') { + $category = 'Chat'; + } elsif ($activity eq 'msgdisplay') { + $category = 'This message'; + } elsif ($activity eq 'blogs') { + $category = 'Blogs'; + } elsif ($activity eq 'port') { + if (defined($uname) && defined($udom)) { + if ($uname eq $env{'user.name'} && + $udom eq $env{'user.domain'}) { + $ownitem = 1; + } + } + $is_course = &Apache::lonnet::is_course($udom,$uname); + if ($ownitem) { + $category = 'Your portfolio files'; + } elsif ($is_course) { + my $coursedesc; + foreach my $course (keys(%setters)) { + my %courseinfo = + &Apache::lonnet::coursedescription($course); + $coursedesc = $courseinfo{'description'}; + } + $category = "Group portfolio in the course '$coursedesc'"; + } else { + $category = 'Portfolio files belonging to '; + if ($env{'user.name'} eq 'public' && + $env{'user.domain'} eq 'public') { + $category .= &plainname($uname,$udom); + } else { + $category .= &aboutmewrapper(&plainname($uname,$udom),$uname,$udom); + } + } + } elsif ($activity eq 'groups') { + $category = 'Groups in this course'; + } else { + $category = 'Communication'; + } + my $showstart = &Apache::lonlocal::locallocaltime($startblock); + my $showend = &Apache::lonlocal::locallocaltime($endblock); + $output = '
'.&mt('[_1] will be inaccessible between [_2] and [_3] because communication is being blocked.',$category,$showstart,$showend).'
'; + if (!($activity eq 'port' && !($ownitem) && !($is_course))) { + $output .= build_block_table($startblock,$endblock,\%setters); + } + } + return $output; +} +sub build_block_table { + my ($startblock,$endblock,$setters) = @_; + my %lt = &Apache::lonlocal::texthash( + 'cacb' => 'Currently active communication blocks', + 'cour' => 'Course', + 'dura' => 'Duration', + 'blse' => 'Block set by' + ); + my $output; + $output = '
'.$lt{'cacb'}.':
'; + $output .= Apache::loncommon::start_data_table(); + $output .= ' + + '.$lt{'cour'}.' + '.$lt{'dura'}.' + '.$lt{'blse'}.' + +'; + foreach my $course (keys(%{$setters})) { + my %courseinfo=&Apache::lonnet::coursedescription($course); + for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) { + my ($uname,$udom) = @{$$setters{$course}{staff}[$i]}; + my $fullname = Apache::loncommon::plainname($uname,$udom); + if (defined($env{'user.name'}) && defined($env{'user.domain'}) + && $env{'user.name'} ne 'public' + && $env{'user.domain'} ne 'public') { + $fullname = Apache::loncommon::aboutmewrapper($fullname,$uname,$udom); + } + my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; + $openblock = &Apache::lonlocal::locallocaltime($openblock); + $closeblock= &Apache::lonlocal::locallocaltime($closeblock); + $output .= &Apache::loncommon::start_data_table_row(). + ''.$courseinfo{'description'}.''. + ''.$openblock.' to '.$closeblock.''. + ''.$fullname.''. + &Apache::loncommon::end_data_table_row(); + } + } + $output .= Apache::loncommon::end_data_table(); +} 1; __END__ - - - - -