Diff for /loncom/auth/lonroles.pm between versions 1.256.2.6.2.2 and 1.262

version 1.256.2.6.2.2, 2012/02/08 16:27:35 version 1.262, 2011/10/21 16:28:49
Line 141  use Apache::loncoursequeueadmin; Line 141  use Apache::loncoursequeueadmin;
 use GDBM_File;  use GDBM_File;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
 use HTML::Entities;  use HTML::Entities;
    
   
 sub redirect_user {  sub redirect_user {
     my ($r,$title,$url,$msg,$launch_nav) = @_;      my ($r,$title,$url,$msg) = @_;
     $msg = $title if (! defined($msg));      $msg = $title if (! defined($msg));
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     &Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
     $r->send_http_header;      $r->send_http_header;
     my $swinfo=&Apache::lonmenu::rawconfig();  
     my $navwindow;  
     if ($launch_nav eq 'on') {  
         $navwindow.=&Apache::lonnavdisplay::launch_win('now',undef,undef,  
                                                        ($url =~ m-^/adm/whatsnew-));  
     } else {  
         $navwindow.=&Apache::lonnavmaps::close();  
     }  
   
     # Breadcrumbs      # Breadcrumbs
     my $brcrum = [{'href' => $url,      my $brcrum = [{'href' => $url,
Line 171  sub redirect_user { Line 163  sub redirect_user {
     $url=~s/ /\%20/g;      $url=~s/ /\%20/g;
     $r->print(<<ENDREDIR);      $r->print(<<ENDREDIR);
 $start_page  $start_page
 <script type="text/javascript">  
 // <![CDATA[  
 $swinfo  
 // ]]>  
 </script>  
 $navwindow  
 <p>$msg</p>  <p>$msg</p>
 $end_page  $end_page
 ENDREDIR  ENDREDIR
Line 235  sub handler { Line 221  sub handler {
         } else {          } else {
             $checkingtxt = &mt('Checking for new roles ...');              $checkingtxt = &mt('Checking for new roles ...');
         }          }
         $updateresult = '<span class="LC_info">'.$checkingtxt.'</span>';          $updateresult = '<div class="LC_info">'.$checkingtxt.'</div>';
         $updateresult .= &update_session_roles();          $updateresult .= &update_session_roles();
         &Apache::lonnet::appenv({'user.update.time'  => $now});          &Apache::lonnet::appenv({'user.update.time'  => $now});
         $update = $now;          $update = $now;
Line 514  ENDENTERKEY Line 500  ENDENTERKEY
                         my $msg;                          my $msg;
  my ($furl,$ferr)=   my ($furl,$ferr)=
     &Apache::lonuserstate::readmap($cdom.'/'.$cnum);      &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
                         unless (($ferr) || ($env{'form.switchrole'})) {  
                             &Apache::lonnet::put('nohist_crslastlogin',  
                                 {$env{'user.name'}.':'.$env{'user.domain'}.  
                                 ':'.$csec.':'.$role => $now},$cdom,$cnum);  
                         }  
  if (($env{'form.orgurl'}) &&    if (($env{'form.orgurl'}) && 
     ($env{'form.orgurl'}!~/^\/adm\/flip/)) {      ($env{'form.orgurl'}!~/^\/adm\/flip/)) {
     my $dest=$env{'form.orgurl'};      my $dest=$env{'form.orgurl'};
Line 582  ENDENTERKEY Line 563  ENDENTERKEY
                                         }                                          }
                                         &redirect_user($r, &mt('Entering [_1]',                                          &redirect_user($r, &mt('Entering [_1]',
                                                        $env{'course.'.$courseid.'.description'}),                                                         $env{'course.'.$courseid.'.description'}),
                                                        $dest, $msg,                                                         $dest, $msg);
                                                        $env{'environment.remotenavmap'});  
                                         return OK;                                          return OK;
                                     }                                      }
     if (&Apache::lonnet::allowed('whn',      if (&Apache::lonnet::allowed('whn',
Line 596  ENDENTERKEY Line 576  ENDENTERKEY
  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);
                                                            $env{'environment.remotenavmap'});  
     return OK;      return OK;
  }   }
     }      }
  }   }
 # Are we allowed to look at the first resource?  # Are we allowed to look at the first resource?
  if (($furl !~ m|^/adm/|) ||    if ($furl !~ m|^/adm/|) {
                                     (($env{'environment.remotenavmap'} eq 'on') &&   
                                      ($furl =~ m{^/adm/navmaps}))) {  
 # Guess not ...  # Guess not ...
     $furl=&Apache::lonpageflip::first_accessible_resource();      $furl=&Apache::lonpageflip::first_accessible_resource();
  }   }
                                 $msg = &mt('Entering [_1] ...',                                  $msg = &mt('Entering [_1] ...',
    $env{'course.'.$courseid.'.description'});     $env{'course.'.$courseid.'.description'});
                                 &redirect_user($r,&mt('Entering [_1]',   &redirect_user($r, &mt('Entering [_1]',
                                                       $env{'course.'.$courseid.'.description'}),                                 $env{'course.'.$courseid.'.description'}),
                                                $furl,$msg,                                 $furl, $msg);
                                                $env{'environment.remotenavmap'});  
     }      }
     return OK;      return OK;
  }   }
Line 625  ENDENTERKEY Line 601  ENDENTERKEY
                     if ($role =~ /^(au|ca|aa)$/) {                      if ($role =~ /^(au|ca|aa)$/) {
                         my $redirect_url = '/priv/';                          my $redirect_url = '/priv/';
                         if ($role eq 'au') {                          if ($role eq 'au') {
                             $redirect_url.=$env{'user.name'};                              $redirect_url.=$env{'user.domain'}.'/'.$env{'user.name'};
                         } else {                          } else {
                             $where =~ /\/(.*)$/;                              $where =~ /\/(.*)$/;
                             $redirect_url .= $1;                              $redirect_url .= $1;
Line 698  function enterrole (thisform,rolecode,bu Line 674  function enterrole (thisform,rolecode,bu
  thisform.submit();   thisform.submit();
     } else {      } else {
        alert('$standby');         alert('$standby');
     }         }
 }  }
   
 function setToUpdate(thisform) {  function setToUpdate(thisform) {
Line 767  ENDHEADER Line 743  ENDHEADER
     }      }
         }          }
     }      }
 # -------------------------------------------------------- Choice or no choice?  
     if ($nochoose) {      if ($nochoose) {
         $r->print("<h2>".&mt('Sorry ...')."</h2>\n<span class='LC_error'>".   $r->print("<h2>".&mt('Sorry ...')."</h2>\n<span class='LC_error'>".
                   &mt('This action is currently not authorized.').'</span>'.    &mt('This action is currently not authorized.').'</span>'.
                   &Apache::loncommon::end_page());    &Apache::loncommon::end_page());
         return OK;   return OK;
     } else {      } else {
         $r->print($updateresult);          $r->print($updateresult); 
         if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) {          if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) {
             $fn.='?'.$ENV{'REDIRECT_QUERY_STRING'};         $fn.='?'.$ENV{'REDIRECT_QUERY_STRING'};
         }          }
         $r->print('<form method="post" name="rolechoice" action="'.(($fn)?$fn:$r->uri).'">');          $r->print('<form method="post" name="rolechoice" action="'.(($fn)?$fn:$r->uri).'">');
         $r->print('<input type="hidden" name="orgurl" value="'.$fn.'" />');          $r->print('<input type="hidden" name="orgurl" value="'.$fn.'" />');
Line 786  ENDHEADER Line 761  ENDHEADER
     $r->rflush();      $r->rflush();
   
     my (%roletext,%sortrole,%roleclass,%futureroles,%timezones);      my (%roletext,%sortrole,%roleclass,%futureroles,%timezones);
     my ($countactive,$countfuture,$inrole,$possiblerole) =      my ($countactive,$countfuture,$inrole,$possiblerole) = 
         &gather_roles($update,$refresh,$now,$reinit,$nochoose,\%roletext,\%sortrole,\%roleclass,          &gather_roles($update,$refresh,$now,$reinit,$nochoose,\%roletext,\%sortrole,\%roleclass,
                       \%futureroles,\%timezones,$loncaparev);                        \%futureroles,\%timezones,$loncaparev);
     $refresh = $now;      $refresh = $now;
Line 804  ENDHEADER Line 779  ENDHEADER
     }      }
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
         my $showall = '<label><input type="checkbox" name="showall"';          my $showall = '<label><input type="checkbox" name="showall"';
         if ($env{'form.showall'}) {          if ($env{'form.showall'}) { 
             $showall .= ' checked="checked" ';              $showall .= ' checked="checked" ';
         }          }
         $showall .= ' />'.&mt('Show all roles').'</label>&nbsp;'.          $showall .= ' />'.&mt('Show all roles').'</label>'.
                     '<input type="submit" value="'.&mt('Update display').'" />';                      '<input type="submit" value="'.&mt('Update display').'" />';
         if ($do_update) {          if ($do_update) {
             $r->print('<div class="LC_left_float"><fieldset>'.              $r->print('<div class="LC_left_float"><fieldset>'.
Line 824  ENDHEADER Line 799  ENDHEADER
         if ($countactive > 0) {          if ($countactive > 0) {
             $r->print(&Apache::loncoursequeueadmin::queued_selfenrollment());              $r->print(&Apache::loncoursequeueadmin::queued_selfenrollment());
             my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');              my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
             my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&');              my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); 
             $r->print(              $r->print(
                 '<p>'                  '<p>'
                .&mt('[_1]Visit the [_2]Course/Community Catalog[_3]'                 .&mt('[_1]Visit the [_2]Course/Community Catalog[_3]'
Line 1897  sub update_session_roles { Line 1872  sub update_session_roles {
                                       ['active','future','previous'],                                        ['active','future','previous'],
                                       undef,undef,1);                                        undef,undef,1);
     my ($msg,@newsec,$oldsec,$currrole_expired,@changed_roles,      my ($msg,@newsec,$oldsec,$currrole_expired,@changed_roles,
         %changed_groups,%dbroles,%deletedroles,%allroles,%allgroups,          %changed_groups,%dbroles, %deletedroles,%allroles,%allgroups,
         %userroles,%checkedgroup,%crprivs,$hasgroups,%rolechange,          %userroles,%checkedgroup,%crprivs,$hasgroups,%rolechange,
         %groupchange,%newrole,%newgroup,%customprivchg,%groups_roles,          %groupchange,%newrole,%newgroup,%customprivchg,%groups_roles,
         @rolecodes);          @rolecodes);
Line 2134  sub update_session_roles { Line 2109  sub update_session_roles {
                                 foreach my $priv (@privs) {                                  foreach my $priv (@privs) {
                                     my ($blank,@prv) = split(/:/,$priv);                                      my ($blank,@prv) = split(/:/,$priv);
                                     @prv = map { $_ .= (/\&\w+$/ ? '':'&F') } @prv;                                      @prv = map { $_ .= (/\&\w+$/ ? '':'&F') } @prv;
                                     if (@prv) {                                      $priv = ':'.join(':',sort(@prv));
                                         $priv = ':'.join(':',sort(@prv));  
                                     }  
                                     $crprivs{$rest}{$scopes[$i]} = $priv;                                      $crprivs{$rest}{$scopes[$i]} = $priv;
                                     $i++;                                      $i++;
                                 }                                  }
Line 2240  sub update_session_roles { Line 2213  sub update_session_roles {
         $msg .= '<br />'.&mt('However you can continue to use this role until you logout, click the "Re-Select" button, or your session has been idle for more than 24 hours.').'</div>';          $msg .= '<br />'.&mt('However you can continue to use this role until you logout, click the "Re-Select" button, or your session has been idle for more than 24 hours.').'</div>';
     }      }
     if (!@changed_roles || !(keys(%changed_groups))) {      if (!@changed_roles || !(keys(%changed_groups))) {
         my ($rolesmsg,$groupsmsg);          $msg .= '<ul>';
         if (!@changed_roles) {          if (!@changed_roles) {
               $msg .= '<li>';
             if (&Apache::loncommon::show_course()) {              if (&Apache::loncommon::show_course()) {
                 $rolesmsg = &mt('No new courses or communities');                  $msg .= &mt('No new courses or communities');
             } else {              } else {
                 $rolesmsg = &mt('No role changes');                  $msg .= &mt('No role changes');
             }              }
               $msg .= '</li>';
         }          }
         if ($hasgroups && !(keys(%changed_groups)) && !(grep(/gr/,@changed_roles))) {          if ($hasgroups && !(keys(%changed_groups)) && !(grep(/gr/,@changed_roles))) {
             $groupsmsg = &mt('No changes in course/community groups');              $msg .= '<li>'.&mt('No changes in course/community groups').'</li>';
         }          }
           $msg .= '</ul>';
         if (!@changed_roles && !(keys(%changed_groups))) {          if (!@changed_roles && !(keys(%changed_groups))) {
             if (($msg ne '') || ($groupsmsg ne '')) {  
                 $msg .= '<ul>';  
                 if ($rolesmsg) {  
                     $msg .= '<li>'.$rolesmsg.'</li>';  
                 }  
                 if ($groupsmsg) {  
                     $msg .= '<li>'.$groupsmsg.'</li>';  
                 }  
                 $msg .= '</ul>';  
             } else {  
                 $msg = '&nbsp;<span class="LC_cusr_emph">'.$rolesmsg.'</span><br />';  
             }  
             return $msg;              return $msg;
         }          }
     }      }
Line 2482  sub gather_roleprivs { Line 2446  sub gather_roleprivs {
         my $spec=$role.'.'.$area;          my $spec=$role.'.'.$area;
         $userroles->{'user.role.'.$spec} = $tstart.'.'.$tend;          $userroles->{'user.role.'.$spec} = $tstart.'.'.$tend;
         my ($tdummy,$tdomain,$trest)=split(/\//,$area);          my ($tdummy,$tdomain,$trest)=split(/\//,$area);
         if ($status eq 'active') {          if ($status eq 'active') { 
             if ($role =~ /^cr\//) {              if ($role =~ /^cr\//) {
                 &Apache::lonnet::custom_roleprivs($allroles,$role,$tdomain,$trest,$spec,$area);                  &Apache::lonnet::custom_roleprivs($allroles,$role,$tdomain,$trest,$spec,$area);
             } elsif ($role eq 'gr') {              } elsif ($role eq 'gr') {

Removed from v.1.256.2.6.2.2  
changed lines
  Added in v.1.262


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