Annotation of loncom/interface/lonblockingstatus.pm, revision 1.5

1.1       droeschl    1: # The LearningOnline Network with CAPA
                      2: # displays the blocking status table
                      3: #
1.3       kalberla    4: # $Id: lonblockingstatus.pm,v 1.2 2009/07/09 12:53:28 kalberla Exp $
1.1       droeschl    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();
1.3       kalberla   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;
1.1       droeschl   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, }));
1.3       kalberla   61:     Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity']);
1.5     ! kalberla   62:     my $blocktext = get_blocking_table($env{'form.activity'});
1.2       kalberla   63:     $r->print($blocktext);
1.1       droeschl   64: 
                     65:     $r->print(Apache::loncommon::end_page());
                     66:     return OK;
                     67: }
1.5     ! kalberla   68: sub get_blocking_table{
1.4       kalberla   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))) {
1.5     ! kalberla  120:                 $output .= build_block_table($startblock,$endblock,\%setters);
1.4       kalberla  121:             }
                    122:     }
1.5     ! kalberla  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();
1.4       kalberla  165: }
1.1       droeschl  166: 
                    167: 1;
                    168: __END__

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