Diff for /loncom/publisher/lonunauthorized.pm between versions 1.1 and 1.15

version 1.1, 2002/09/10 14:41:05 version 1.15, 2012/10/29 17:38:55
Line 32  use strict; Line 32  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncacc;  use Apache::lonlocal;
   use LONCAPA();
   use HTML::Entities();
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     $r->content_type('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;
   
 # ------------------------------------------------------------ Print the screen  # ------------------------------------------------------------ Print the screen
     $r->print(<<ENDDOCUMENT);  
 <html>  
 <head>  
 <title>The LearningOnline Network with CAPA</title>  
 </head>  
 ENDDOCUMENT  
 # Figure out who the user is and what they wanted to access  # Figure out who the user is and what they wanted to access
   
     my ($ownername,$ownerdomain)=      my ($ownername,$ownerdomain,$ownerhome);
      &Apache::loncacc::constructaccess($ENV{'request.editurl'},$r->dir_config('lonDefDomain'));      if ($env{'request.editurl'} ne '') {
           ($ownername,$ownerdomain,$ownerhome) = 
               &Apache::lonnet::constructaccess($env{'request.editurl'});
       }
   
       # Breadcrumbs
       &Apache::lonhtmlcommon::clear_breadcrumbs();
       if ($env{'request.role'} =~ /^(au|ca|aa)/) { 
           &Apache::lonhtmlcommon::add_breadcrumb({
               'text' => 'Construction Space',
               'href' => &Apache::loncommon::authorspace($env{'request.editurl'}),
           });
       } elsif (($env{'request.course.id'}) && 
                (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) {
           &Apache::lonhtmlcommon::add_breadcrumb({
               'text' => 'Course Contents',
               'href' => '/adm/coursedocs',
           });
       }
   
 # print header  # print header
     $r->print(&Apache::loncommon::bodytag      $r->print(&Apache::loncommon::start_page("Failed Access to Construction Space",
            ("Failed Access to Construction Space",'','','',$ownerdomain));       undef,
        {'domain' => $ownerdomain,}).
                                                &Apache::lonhtmlcommon::breadcrumbs());
 # figure out what went wrong  # figure out what went wrong
   
     if ($ownerdomain) {      if ($ownerdomain) {
  $r->print('<h1>Choose another server</h1>'.          if ($ownerhome eq 'no_host') {
  "<p>The constuction space for this resource is located on another server.</p>"              $r->print('<p class="LC_error">'.
         );                        &mt('Unable to determine home server for this resource: [_1]',
         my $ownerhome=&Apache::lonnet::homeserver($ownername,$ownerdomain);                        '<span class="LC_filename">'.$env{'request.editurl'}.'</span>').
         unless ($ownerhome eq 'no_host') {                        '</p>');
     $r->print(          } else {
  "<p>Please log into <tt>".$Apache::lonnet::hostname{$ownerhome}.              my @hosts = &Apache::lonnet::current_machine_ids();
  "</tt> to edit.</p>");              if (!grep(/^\Q$ownerhome\E$/,@hosts)) {
                   my $switchlink = '/adm/switchserver?otherserver='.$ownerhome.
                                    '&origurl='.&HTML::Entities::encode($env{'request.editurl'},'<>&"');
           $r->print('<p class="LC_warning">'.
                             &mt('The construction space for this resource is located on a different server: [_1]',
                             '<b><tt>'.&Apache::lonnet::hostname($ownerhome).'</b></tt>').
                             '</p>'.
                             '<p class="LC_error"><a href="'.$switchlink.'">'.
                             &mt('Switch Server').'</a>'.
                             '</p>');
               } else {
                   $r->print('<p class="LC_error">'.
                             &mt('You do not have authoring privileges for this resource').' '.
                             '<span class="LC_filename">'.$env{'request.editurl'}.'</span>'.
                             '</p>');
               }
           }
       } elsif (!$env{'request.editurl'}) {
           if ($ENV{'REDIRECT_URL'} =~ m{^/adm/([^/]+)}) {
               my $action = $1;   
               my ($option,$filename,$filename1,$filename2,$decompress,
                   $qualifiedfilename);
               if ($ENV{'REDIRECT_QUERY_STRING'} ne '') {
                   foreach my $pair (split(/&/,$ENV{'REDIRECT_QUERY_STRING'})) {
                       my ($name,$value) = split(/=/,$pair);
                       if ($name eq 'filename') {
                           if (($action eq 'publish') || ($action eq 'cfile')) {
                               $filename = &LONCAPA::unescape($value);
                           } else {
                               $filename = $value;
                           }
                       } elsif ($name eq 'filename1') {
                           $filename1 = $value;
                       } elsif ($name eq 'filename2') {
                           $filename2 = $value;
                       } elsif ($name eq 'decompress') {
                           $decompress = $value;
                           $option = 'decompress';
                       } elsif ($name eq 'qualifiedfilename') {
                           $qualifiedfilename = $value;
                       } elsif ($name eq 'versionone') {
                           if ($value eq 'priv') {
                               $option = 'cstr';
                           }
                       } elsif ($name eq 'versiontwo') {
                           if ($value eq 'priv') {
                               $option = 'cstr';
                           }
                       } elsif ($name eq 'filetwo') {
                           $option = $value; 
                       }
                   }
                   if (($action eq 'upload') || ($action eq 'testbank')) {
                       if (($filename1 ne '') && ($filename ne '')) {
                           $filename = $filename1.$filename2;
                       }
                   } elsif ($action eq 'cfile') {
                       if ($decompress ne '') {
                           $filename = $decompress;
                       } elsif ($qualifiedfilename ne '') {
                           $filename = $qualifiedfilename;
                       }
                   }
                   my %deniedactions = &get_denied_action_text();
                   my $warning;
                   if ($option eq 'decompress') {
                       $warning = $deniedactions{$option};
                   } else {
                       $warning = $deniedactions{$action};
                   }
                   if ($warning) {
                       if (($action eq 'diff') && ($option ne 'cstr')) {
                           $r->print('<p class="LC_error">'.
                                     $deniedactions{$action}.'</p><p class="LC_warning">'.
                                     &mt('You do not have privileges to view the published resource').' '.
                                         '<span class="LC_filename">'.$filename.'</span>'.
                                     '</p>');
                       } else {
                           if (($action eq 'diff') && ($option eq 'cstr')) {
                               $filename =~ s{^/res/}{/priv/};
                           }
                           $r->print('<p class="LC_error">'.
                                     $deniedactions{$action}.'</p><p class="LC_warning">'.
                                     &mt('You do not have authoring privileges for this resource').' '.
                                         '<span class="LC_filename">'.$filename.'</span>'.
                                     '</p>');
                       }
                   } else {
                       $r->print('<p class="LC_error">'.
                                 &mt('You are not permitted to take this action.').
                                 '</p>');
                   }
               }
           } elsif ($r->uri =~ m{priv/.+\.\d+\.[^.]+$}) {
               $r->print('<p class="LC_error">'.
                         &mt('There is a problem with the filename').' '.
                         '<span class="LC_filename">'.$r->uri.'</span></p>'.
                         '<p class="LC_warning">'.
                         &mt('You may be attempting to edit a versioned file (files in construction space may not include a version number before the extension).').
                         '</p>');
           } else {
               $r->print('<p class="LC_error">'.
                         &mt('You are not permitted to take this action.').
                         '</p>'); 
         }          }
       } elsif ($env{'request.editurl'} =~ m{priv/.+\.\d+\.[^.]+$}) {
           $r->print('<p class="LC_error">'.
                     &mt('There is a problem with the filename').' '.
                     '<span class="LC_filename">'.$env{'request.editurl'}.'</span></p>'.
                     '<p class="LC_warning">'.
                     &mt('You may be attempting to edit a versioned file (files in construction space may not include a version number before the extension).').
                     '</p>');
     } else {      } else {
         $r->print(          $r->print('<p class="LC_error">'
             "<h1>You do not have authoring privileges for this resource</h1>");                   .&mt('You do not have authoring privileges for this resource').' '
         my ($realownername)=($ENV{'request.editurl'}=~/\/(?:\~|priv\/|home\/)(\w+)/);                   .'<span class="LC_filename">'.$env{'request.editurl'}.'</span>'
                    .'</p>');
           my ($realownerdom,$realownername) =
       ($env{'request.editurl'}=~m{^/priv/($LONCAPA::domain_re)/($LONCAPA::username_re)});
         my $realownerhome=          my $realownerhome=
       &Apache::lonnet::homeserver(      &Apache::lonnet::homeserver($realownername,$realownerdom);
         $realownername,$r->dir_config('lonDefDomain'));  
         unless ($realownerhome eq 'no_host') {          unless ($realownerhome eq 'no_host') {
            $r->print("<p>Contact ".              my $plainname=&Apache::loncommon::plainname($realownername,$realownerdom);
     &Apache::loncommon::aboutmewrapper(              my $user=$realownername.':'.$realownerdom;
      &Apache::loncommon::plainname($realownername,              my $userlink=&Apache::loncommon::aboutmewrapper(
                                $r->dir_config('lonDefDomain')).'('.                               $plainname.' ('.$user.')'
                                $realownername.' at '.                              ,$realownername
                                $r->dir_config('lonDefDomain').')',                              ,$realownerdom);
        $realownername,$r->dir_config('lonDefDomain')).      $r->print('<p>'
            ' for access.');                       .&mt('Contact [_1] for access.',$userlink)
                        .'</p>');
         }          }
     }      }
           $r->print(&Apache::loncommon::end_page());
     $r->print('</body></html>');  
     return OK;      return OK;
 }   }
   
   sub get_denied_action_text {
       my %deniedtext = 
           &Apache::lonlocal::texthash(
              cfile      => 'Copying, moving, renaming or creating file not allowed.',
              publish    => 'Publishing not allowed.',
              upload     => 'Uploading file not allowed.',
              testbank   => 'Uploading testbank file not allowed',
              retrieve   => 'Retrieving version information not allowed.',
              cleanup    => 'Clean up of file not allowed.',
              diff       => 'Display of differences between file versions disallowed.',
              decompress => 'Decompression of archive file disallowed.',
       );
       return %deniedtext;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.1  
changed lines
  Added in v.1.15


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