Diff for /loncom/auth/lonroles.pm between versions 1.203 and 1.208

version 1.203, 2008/07/30 15:34:34 version 1.208, 2008/10/08 03:37:20
Line 146  sub handler { Line 146  sub handler {
 # Is this an ad-hoc CA-role?  # Is this an ad-hoc CA-role?
                 if (my ($domain,$user) =                  if (my ($domain,$user) =
     ($envkey =~ m-^form\.ca\./($match_domain)/($match_username)$-)) {      ($envkey =~ m-^form\.ca\./($match_domain)/($match_username)$-)) {
                    # Check if author blocked ca-access                      if (($domain eq $env{'user.domain'}) && ($user eq $env{'user.name'})) {
                           delete($env{$envkey});
                           $env{'form.au./'.$domain.'/'} = 1;
                           my ($server_status,$home) = &check_author_homeserver($user,$domain);
                           if ($server_status eq 'switchserver') {
                               my $trolecode = 'au./'.$domain.'/';
                               my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
                               $r->internal_redirect($switchserver);
                           }
                           last;
                       }
                       if (my ($castart,$caend) = ($env{'user.role.ca./'.$domain.'/'.$user} =~ /^(\d*)\.(\d*)$/)) {
                           if (((($castart) && ($castart < $now)) || !$castart) && 
                               ((!$caend) || (($caend) && ($caend > $now)))) {
                               my ($server_status,$home) = &check_author_homeserver($user,$domain);
                               if ($server_status eq 'switchserver') {
                                   my $trolecode = 'ca./'.$domain.'/'.$user;
                                   my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
                                   $r->internal_redirect($switchserver);
                               }
                               last;
                           }
                       }
                       # Check if author blocked ca-access
                     my %blocked=&Apache::lonnet::get('environment',['domcoord.author'],$domain,$user);                      my %blocked=&Apache::lonnet::get('environment',['domcoord.author'],$domain,$user);
                     if ($blocked{'domcoord.author'} eq 'blocked') {                      if ($blocked{'domcoord.author'} eq 'blocked') {
                        delete($env{$envkey});                          delete($env{$envkey});
                        $env{'user.error.msg'}=':::1:User '.$user.' in domain '.$domain.' blocked domain coordinator access';                          $env{'user.error.msg'}=':::1:User '.$user.' in domain '.$domain.' blocked domain coordinator access';
                        last;                          last;
                     }                      }
                     if ($dcroles{$domain}) {                      if ($dcroles{$domain}) {
                         my ($server_status,$home) = &check_author_homeserver($user,$domain);                          my ($server_status,$home) = &check_author_homeserver($user,$domain);
Line 229  sub handler { Line 252  sub handler {
      $cdom,$cnum,       $cdom,$cnum,
                                                      $env{'user.domain'},                                                       $env{'user.domain'},
      $env{'user.name'},       $env{'user.name'},
       'Assigned from '.$ENV{'REMOTE_ADDR'}.' at '.localtime().' for '.                                                       &mt('Assigned from [_1] at [_2] for [_3]'
                                                      $trolecode);                                                          ,$ENV{'REMOTE_ADDR'}
                                                           ,&Apache::lonlocal::locallocaltime()
                                                           ,$trolecode)
                                                        );
  unless ($assignresult eq 'ok') {   unless ($assignresult eq 'ok') {
      $assignresult=~s/^error\:\s*//;       $assignresult=~s/^error\:\s*//;
      $message=&mt($assignresult).       $message=&mt($assignresult).
Line 354  ENDENTERKEY Line 380  ENDENTERKEY
  ) {   ) {
  my $startpage = &courseloadpage($courseid);   my $startpage = &courseloadpage($courseid);
  unless ($startpage eq 'firstres') {            unless ($startpage eq 'firstres') {         
     $msg = &mt('Entering [_1] ....',      $msg = &mt('Entering [_1] ...',
        $env{'course.'.$courseid.'.description'});         $env{'course.'.$courseid.'.description'});
     &redirect_user($r,&mt('New in course'),      &redirect_user($r,&mt('New in course'),
    '/adm/whatsnew?refpage=start',$msg,     '/adm/whatsnew?refpage=start',$msg,
Line 554  ENDHEADER Line 580  ENDHEADER
                     $countfuture ++;                      $countfuture ++;
                 } elsif ($tstatus eq 'will') {                  } elsif ($tstatus eq 'will') {
                     $tbg='#FFAA77';                      $tbg='#FFAA77';
                     $tremark.=&mt('Active at next login. ');                      $tremark.=&mt('Active at next login.').' ';
                     $roles_nextlogin{$trolecode} = $tstart.':'.$tend;                      $roles_nextlogin{$trolecode} = $tstart.':'.$tend;
                     $countwill ++;                      $countwill ++;
                 } elsif ($tstatus eq 'expired') {                  } elsif ($tstatus eq 'expired') {
Line 563  ENDHEADER Line 589  ENDHEADER
                     $button=0;                      $button=0;
                 } elsif ($tstatus eq 'will_not') {                  } elsif ($tstatus eq 'will_not') {
                     $tbg='#AAFF77';                      $tbg='#AAFF77';
                     $tremark.=&mt('Expired after logout. ');                      $tremark.=&mt('Expired after logout.').' ';
                 } elsif ($tstatus eq 'selected') {                  } elsif ($tstatus eq 'selected') {
                     $tbg='#11CC55';                      $tbg='#11CC55';
                     $tfont='#002200';                      $tfont='#002200';
     $inrole=1;      $inrole=1;
     $countactive++;      $countactive++;
                     $tremark.=&mt('Currently selected. ');                      $tremark.=&mt('Currently selected.').' ';
                 }                  }
                 my $trole;                  my $trole;
                 if ($role =~ /^cr\//) {                  if ($role =~ /^cr\//) {
                     my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);                      my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);
     if ($tremark) { $tremark.='<br />'; }      if ($tremark) { $tremark.='<br />'; }
                     $tremark.=&mt('Defined by ').$rauthor.                      $tremark.=&mt('Defined by [_1] at [_2].',$rauthor,$rdomain);
  &mt(' at ').$rdomain.'.';  
  }   }
  $trole=Apache::lonnet::plaintext($role);   $trole=Apache::lonnet::plaintext($role);
                 my $ttype;                  my $ttype;
Line 704  ENDHEADER Line 729  ENDHEADER
             my $tfont='#003300';              my $tfont='#003300';
             if ($env{'request.role'} eq 'cm') {              if ($env{'request.role'} eq 'cm') {
                 $r->print('<tr bgcolor="#11CC55">');                  $r->print('<tr bgcolor="#11CC55">');
                 $tremark=&mt('Currently selected. ');                  $tremark=&mt('Currently selected.').' ';
                 $tfont='#002200';                  $tfont='#002200';
             } else {              } else {
                 $r->print('<tr bgcolor="#77FF77">');                  $r->print('<tr bgcolor="#77FF77">');
Line 717  ENDHEADER Line 742  ENDHEADER
         }          }
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
  return OK;   return OK;
 # Is there only one choice?  
     } elsif ($countactive==1) {  
         my $needs_switchserver;  
         if ($env{'user.author'}) {  
             $needs_switchserver = &check_needs_switchserver($possiblerole);  
         }  
         if ((!$needs_switchserver) && ($env{'request.role'} eq 'cm')) {  
     $r->print('<h3>'.&mt('Please stand by.').'</h3>'.  
         '<input type="hidden" name="'.$possiblerole.'" value="1" />'.  
             '<noscript><br /><input type="submit" name="submit" value="'.&mt('Continue').'" /></noscript>');  
     $r->print("</form>\n");  
     $r->rflush();  
     $r->print('<script type="text/javascript">document.forms.rolechoice.submit();</script>');  
     $r->print(&Apache::loncommon::end_page());  
     return OK;  
         }  
         if ($needs_switchserver) {  
             $r->print("<h2>".&mt('Server Switch Required')."</h2>\n".  
                       &mt('Construction Space access is only available from '.  
                           'the home server of the corresponding Author.').'<br />'.  
                       &mt("Click the 'Switch Server' link to go there.").'<br />');     
         }  
     }      }
 # More than one possible role  
 # ----------------------------------------------------------------------- Table  # ----------------------------------------------------------------------- Table
     unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) {      unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) {
  $r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n");   $r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n");
Line 782  ENDHEADER Line 784  ENDHEADER
         my $tfont='#003300';          my $tfont='#003300';
         if ($env{'request.role'} eq 'cm') {          if ($env{'request.role'} eq 'cm') {
     $r->print('<tr bgcolor="#11CC55">');      $r->print('<tr bgcolor="#11CC55">');
             $tremark=&mt('Currently selected. ');              $tremark=&mt('Currently selected.').' ';
             $tfont='#002200';              $tfont='#002200';
         } else {          } else {
             $r->print('<tr bgcolor="#77FF77">');              $r->print('<tr bgcolor="#77FF77">');
Line 940  sub privileges_info { Line 942  sub privileges_info {
     $ttype='System';      $ttype='System';
     $twhere='/';      $twhere='/';
  }   }
  $output .= "\n<h3>".$ttype.': '.$twhere.'</h3>'."\n<ul>";   $output .= "\n<h3>".&mt($ttype).': '.$twhere.'</h3>'."\n<ul>";
  foreach my $priv (sort(split(/:/,$env{$envkey}))) {   foreach my $priv (sort(split(/:/,$env{$envkey}))) {
     next if (!$priv);      next if (!$priv);
   
Line 1134  sub adhoc_course_role { Line 1136  sub adhoc_course_role {
                         return;                          return;
                     }                      }
                 }                  }
                 my (%userroles,%newrole,%newgroups);                  my (%userroles,%newrole,%newgroups,%group_privs);
                   my %cgroups =
                       &Apache::lonnet::get_active_groups($env{'user.domain'},
                                               $env{'user.name'},$cdom,$cnum);
                   foreach my $group (keys(%cgroups)) {
                       $group_privs{$group} =
                           $env{'user.priv.cc./'.$cdom.'/'.$cnum.'./'.$cdom.'/'.$cnum.'/'.$group};
                   }
                   $newgroups{'/'.$cdom.'/'.$cnum} = \%group_privs;
                 my $area = '/'.$cdom.'/'.$cnum;                  my $area = '/'.$cdom.'/'.$cnum;
                 my $spec = $role.'.'.$area;                  my $spec = $role.'.'.$area;
                 if ($usec ne '') {                  if ($usec ne '') {
Line 1142  sub adhoc_course_role { Line 1152  sub adhoc_course_role {
                     $area .= '/'.$usec;                      $area .= '/'.$usec;
                 }                  }
                 &Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,$area);                  &Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,$area);
                 &Apache::lonnet::set_userprivs(\%userroles,\%newrole,%newgroups);                  &Apache::lonnet::set_userprivs(\%userroles,\%newrole,\%newgroups);
                 my $adhocstart = $then-1;                  my $adhocstart = $then-1;
                 $userroles{'user.role.'.$spec} = $adhocstart.'.';                  $userroles{'user.role.'.$spec} = $adhocstart.'.';
                 &Apache::lonnet::appenv(\%userroles,[$role,'cm']);                  &Apache::lonnet::appenv(\%userroles,[$role,'cm']);

Removed from v.1.203  
changed lines
  Added in v.1.208


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