File:  [LON-CAPA] / loncom / interface / lonblockingstatus.pm
Revision 1.5: download - view: text, annotated - select for diffs
Mon Jul 27 12:12:48 2009 UTC (14 years, 10 months ago) by kalberla
Branches: MAIN
CVS tags: bz2851, HEAD
Moved build_blocking_table from loncommon.pm to lonblockingstatus.pm
Added blocking table popup to blogs in lonrss.pm

    1: # The LearningOnline Network with CAPA
    2: # displays the blocking status table
    3: #
    4: # $Id: lonblockingstatus.pm,v 1.5 2009/07/27 12:12:48 kalberla Exp $
    5: #
    6: # Copyright Michigan State University Board of Trustees
    7: #
    8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
    9: #
   10: # LON-CAPA is free software; you can redistribute it and/or modify
   11: # it under the terms of the GNU General Public License as published by
   12: # the Free Software Foundation; either version 2 of the License, or
   13: # (at your option) any later version.
   14: #
   15: # LON-CAPA is distributed in the hope that it will be useful,
   16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
   17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   18: # GNU General Public License for more details.
   19: #
   20: # You should have received a copy of the GNU General Public License
   21: # along with LON-CAPA; if not, write to the Free Software
   22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   23: #
   24: # /home/httpd/html/adm/gpl.txt
   25: #
   26: # http://www.lon-capa.org/
   27: #
   28: #
   29: package Apache::lonblockingstatus;
   30: 
   31: use strict;
   32: use Apache::Constants qw(:common);
   33: use Apache::loncommon();
   34: use Apache::lonnet;
   35: use GDBM_File;
   36: use POSIX qw(strftime mktime);
   37: use Apache::lonmenu();
   38: use Apache::lonenc();
   39: use Apache::lonlocal;
   40: use Apache::lonnet();
   41: use HTML::Entities;
   42: use Apache::lonhtmlcommon();
   43: use Apache::loncoursedata();
   44: use Apache::lontexconvert();
   45: use Apache::lonclonecourse();
   46: use LONCAPA qw(:DEFAULT :match);
   47: use DateTime::TimeZone;
   48: use DateTime::Locale::Catalog;
   49: 
   50: sub handler {
   51:     my $r = shift;
   52:     Apache::loncommon::no_cache($r);
   53:     Apache::loncommon::content_type($r,'text/html');
   54:     $r->send_http_header;
   55:     return OK if $r->header_only;
   56: 
   57:     $r->print(
   58:         Apache::loncommon::start_page(
   59:             'Communication Blocking Status Information',
   60:             undef, {'only_body' => 1, }));
   61:     Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity']);
   62:     my $blocktext = get_blocking_table($env{'form.activity'});
   63:     $r->print($blocktext);
   64: 
   65:     $r->print(Apache::loncommon::end_page());
   66:     return OK;
   67: }
   68: sub get_blocking_table{
   69:     my ($activity,$uname,$udom) = @_;
   70:     my %setters;
   71:     my ($blocked,$output,$ownitem,$is_course);
   72:     my ($startblock,$endblock)=&Apache::loncommon::blockcheck(\%setters,$activity,$uname,$udom);
   73:     if ($startblock && $endblock) {
   74:         $blocked = 1;
   75:             my $category;
   76:             if ($activity eq 'boards') {
   77:                 $category = 'Discussion posts in this course';
   78:             } elsif ($activity eq 'chat') {
   79:                 $category = 'Chat';
   80:             } elsif ($activity eq 'msgdisplay') {
   81:                 $category = 'This message';
   82:             } elsif ($activity eq 'blogs') {
   83:                 $category = 'Blogs';
   84:             } elsif ($activity eq 'port') {
   85:                 if (defined($uname) && defined($udom)) {
   86:                     if ($uname eq $env{'user.name'} &&
   87:                         $udom eq $env{'user.domain'}) {
   88:                         $ownitem = 1;
   89:                     }
   90:                 }
   91:                 $is_course = &Apache::lonnet::is_course($udom,$uname);
   92:                 if ($ownitem) {
   93:                     $category = 'Your portfolio files';
   94:                 } elsif ($is_course) {
   95:                     my $coursedesc;
   96:                     foreach my $course (keys(%setters)) {
   97:                         my %courseinfo =
   98:                              &Apache::lonnet::coursedescription($course);
   99:                         $coursedesc = $courseinfo{'description'};
  100:                     }
  101:                     $category = "Group portfolio in the course '$coursedesc'";
  102:                 } else {
  103:                     $category = 'Portfolio files belonging to ';
  104:                     if ($env{'user.name'} eq 'public' &&
  105:                         $env{'user.domain'} eq 'public') {
  106:                         $category .= &plainname($uname,$udom);
  107:                     } else {
  108:                         $category .= &aboutmewrapper(&plainname($uname,$udom),$uname,$udom);
  109:                     }
  110:                 }
  111:             } elsif ($activity eq 'groups') {
  112:                 $category = 'Groups in this course';
  113:             } else {
  114:                 $category = 'Communication';
  115:             }
  116:             my $showstart = &Apache::lonlocal::locallocaltime($startblock);
  117:             my $showend = &Apache::lonlocal::locallocaltime($endblock);
  118:             $output = '<br />'.&mt('[_1] will be inaccessible between [_2] and [_3] because communication is being blocked.',$category,$showstart,$showend).'<br />';
  119:             if (!($activity eq 'port' && !($ownitem) && !($is_course))) {
  120:                 $output .= build_block_table($startblock,$endblock,\%setters);
  121:             }
  122:     }
  123:     return $output;
  124: }
  125: 
  126: sub build_block_table {
  127:     my ($startblock,$endblock,$setters) = @_;
  128:     my %lt = &Apache::lonlocal::texthash(
  129:         'cacb' => 'Currently active communication blocks',
  130:         'cour' => 'Course',
  131:         'dura' => 'Duration',
  132:         'blse' => 'Block set by'
  133:     );
  134:     my $output;
  135:     $output = '<br />'.$lt{'cacb'}.':<br />';
  136:     $output .= Apache::loncommon::start_data_table();
  137:     $output .= '
  138: <tr>
  139:  <th>'.$lt{'cour'}.'</th>
  140:  <th>'.$lt{'dura'}.'</th>
  141:  <th>'.$lt{'blse'}.'</th>
  142: </tr>
  143: ';
  144:     foreach my $course (keys(%{$setters})) {
  145:         my %courseinfo=&Apache::lonnet::coursedescription($course);
  146:         for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) {
  147:             my ($uname,$udom) = @{$$setters{$course}{staff}[$i]};
  148:             my $fullname = Apache::loncommon::plainname($uname,$udom);
  149:             if (defined($env{'user.name'}) && defined($env{'user.domain'})
  150:                 && $env{'user.name'} ne 'public'
  151:                 && $env{'user.domain'} ne 'public') {
  152:                 $fullname = Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);
  153:             }
  154:             my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]};
  155:             $openblock = &Apache::lonlocal::locallocaltime($openblock);
  156:             $closeblock= &Apache::lonlocal::locallocaltime($closeblock);
  157:             $output .= &Apache::loncommon::start_data_table_row().
  158:                        '<td>'.$courseinfo{'description'}.'</td>'.
  159:                        '<td>'.$openblock.' to '.$closeblock.'</td>'.
  160:                        '<td>'.$fullname.'</td>'.
  161:                         &Apache::loncommon::end_data_table_row();
  162:         }
  163:     }
  164:     $output .= Apache::loncommon::end_data_table();
  165: }
  166: 
  167: 1;
  168: __END__

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>