Diff for /loncom/interface/lonblockingstatus.pm between versions 1.2 and 1.13

version 1.2, 2009/07/09 12:53:28 version 1.13, 2016/01/27 00:24:09
Line 31  package Apache::lonblockingstatus; Line 31  package Apache::lonblockingstatus;
 use strict;  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon();  use Apache::loncommon();
   use Apache::lonnet;
   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(      my (%activities,$activity,$origurl);
         Apache::loncommon::start_page(      map { $activities{$_} = 1; } ('boards','chat','msgdisplay','blogs','groups','port','printout','docs','passwd');
             'Communication Blocking Status Information',  
             undef, {'only_body' => 1, }));  
   
     my ($blocked, $blocktext) = &Apache::loncommon::blocking_status_print('boards');      # determine what kind of blocking we want details for
     $r->print($blocktext);      &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;
 }  }
   
   
 1;  sub blockpage {
 __END__      my ($activity,$origurl) = @_;
   
       # 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.
       my ($uname, $udom);
   
       if (($activity eq 'port') || 
           (($activity eq 'passwd') && ($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))) {
           &Apache::loncommon::get_unprocessed_cgi(
               $ENV{'QUERY_STRING'}, ['udom', 'uname'] );
   
           ($uname, $udom) = ($env{'form.uname'}, $env{'form.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
       my %setters;
       my ($startblock,$endblock,$triggerblock) = 
           &Apache::loncommon::blockcheck(\%setters,$activity,$uname,$udom,$origurl);
   
       # nothing to do if there's no active blocking
       unless ($startblock && $endblock) { return ''; }
   
       # lookup $activity -> description
                      #possible activity          #corresponding description
       my %descs = (
                      boards     => 'Discussion posts in this course',
                      chat       => 'Chat Room',
                      msgdisplay => 'This message',
                      blogs      => 'Blogs',
                      groups     => 'Groups in this course',
                      printout   => 'Printout generation', 
                      docs       => 'Course Content',
                      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 $showend   = Apache::lonlocal::locallocaltime($endblock);
   
       my $output;
       
       if ( ref($description) ne 'ARRAY' ) {
           #default: $description is one of the above descriptions
           if ($activity eq 'docs') {
               $output=&mt( 'Access to the content page you are attempting to' 
                            . ' view will be unavailable between [_1] and [_2] because'
                            . ' 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 {
           # @$description is is the array returned from get_portfolio_category()
           # and contains the description (e.g. "Portfolio files belonging to [_1]"
           # and the value for [_1]
           $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>";
   
       # show a table containing details, except if user is trying to look 
       # at a different user's portfolio files
       if (   $activity ne 'port'                        # no portfolio
           || (   $uname eq $env{'user.name'}            # or own portfolio
               && $udom  eq $env{'user.domain'} ) 
           || Apache::lonnet::is_course($udom, $uname) ) # or portfolio of a course
       {
           $output .= &build_block_table(\%setters);
       }
   
       return $output;
   }
   
   sub build_block_table {
       my ($setters) = @_;
       my %lt = &Apache::lonlocal::texthash(
           'cacb' => 'Currently active communication/content blocks',
           'cour' => 'Course',
           'dura' => 'Duration',
           'blse' => 'Block set by'
       );
       my $output;
       $output  = Apache::loncommon::start_data_table()
                . Apache::loncommon::data_table_caption($lt{'cacb'})
                . Apache::loncommon::start_data_table_header_row()
                . "<th>$lt{'cour'}</th> <th>$lt{'dura'}</th> <th>$lt{'blse'}</th>"
                . Apache::loncommon::end_data_table_header_row();
   
       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 $triggertype = $$setters{$course}{triggers}[$i];
               if ($triggertype) {
                   $fullname .= &mt(' (triggered by you when starting timer)'); 
               }
               my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]};
               $openblock = &Apache::lonlocal::locallocaltime($openblock);
               $closeblock= &Apache::lonlocal::locallocaltime($closeblock);
               my $duration = mt('[_1] to [_2]', $openblock, $closeblock);
               $output .= Apache::loncommon::start_data_table_row()
                        . "<td>$courseinfo{'description'}</td>"
                        . "<td>$duration</td>"
                        . "<td>$fullname</td>"
                        . Apache::loncommon::end_data_table_row();
           }
       }
       $output .= Apache::loncommon::end_data_table();
   }
   
   sub get_portfolio_category {
       my ($uname, $udom, $setters) = @_;
   
       if ($uname eq $env{'user.name'} && $udom eq $env{'user.domain'}) {
           # user's portolfio files
   
           return 'Your portfolio files';
   
       } elsif (Apache::lonnet::is_course($udom, $uname)) {
           # group portfolio files
   
           my $coursedesc;
   
           foreach my $course (keys(%{$setters})) {
               my %courseinfo = Apache::lonnet::coursedescription($course);
               $coursedesc    = $courseinfo{'description'};
           }
   
           return ["Group portfolio in the course '[_1]'", $coursedesc];
           
       } else {
           # different user's portfolio files
           
           my $plainname = Apache::loncommon::plainname($uname, $udom);
   
           unless (   $env{'user.name'}   eq 'public' 
                   && $env{'user.domain'} eq 'public' ) 
           {
               $plainname = Apache::loncommon::aboutmewrapper(
                               $plainname, $uname, $udom);
           }
   
           return ['Portfolio files belonging to [_1]', $plainname];
       }
   }
   
   1;
   __END__

Removed from v.1.2  
changed lines
  Added in v.1.13


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