Diff for /loncom/auth/lonroles.pm between versions 1.105 and 1.106

version 1.105, 2004/11/09 20:04:48 version 1.106, 2004/11/11 22:18:23
Line 120  sub handler { Line 120  sub handler {
  "request.role"        => 'cm',   "request.role"        => 'cm',
                                 "request.role.adv"    => $ENV{'user.adv'},                                  "request.role.adv"    => $ENV{'user.adv'},
  "request.role.domain" => $ENV{'user.domain'});   "request.role.domain" => $ENV{'user.domain'});
   
   # Check to see if the user is a DC trying to enter a course                            
   # course selection page
           my $dcflag = 0;
           if ($ENV{'form.dccourse'}) {
               my $dcdom = $ENV{'form.dcdomain'};
               my $pickedcourse = $ENV{'form.dccourse'};
               if ($dcdom && $pickedcourse) {
                   unless ($ENV{'user.role.cc./'.$dcdom.'/'.$pickedcourse}) {
                       if ($ENV{'user.role.dc./'.$dcdom.'/'}) {
                           &set_privileges($dcdom,$pickedcourse);
                           my $msg=&mt('Entering course ...');
                           my ($furl,$ferr)=&Apache::lonuserstate::readmap($dcdom.'/'.$pickedcourse);
                           my $formaction = '/adm/roles/';
                           my $courseid = $dcdom.'_'.$pickedcourse;
                           &Apache::lonhtmlcommon::store_recent('cc_pickby_dc_'.$dcdom,
                               $courseid,$formaction);
                           # Send the user to the course they selected
                           &redirect_user($r,&mt('Entering Course'),
                                   $furl,$msg,
                                   $ENV{'environment.remotenavmap'});
                           return OK;
                       }
                   }
               }
           }
   
         foreach $envkey (keys %ENV) {          foreach $envkey (keys %ENV) {
             next if ($envkey!~/^user\.role\./);              next if ($envkey!~/^user\.role\./);
             my ($where,$trolecode,$role,$tstatus,$tend,$tstart);              my ($where,$trolecode,$role,$tstatus,$tend,$tstart);
Line 675  ENDHEADER Line 702  ENDHEADER
              foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {               foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
                 my $skiprole = 0;                  my $skiprole = 0;
                 foreach my $dcdom (keys %dcroles) {                  foreach my $dcdom (keys %dcroles) {
                     if ($sortrole{$which} =~ m-(dc|cc)\./$dcdom/-) {                      if ($sortrole{$which} =~ m-(dc)\./$dcdom/-) {
                         $skiprole = 1;                          $skiprole = 1;
                         last;                          last;
                     }                      }
Line 706  ENDHEADER Line 733  ENDHEADER
     $r->print("<tr bgcolor='#BBffBB'>".      $r->print("<tr bgcolor='#BBffBB'>".
       "<td align='center' colspan='7'>".&mt($type)."</td>");        "<td align='center' colspan='7'>".&mt($type)."</td>");
         }          }
         $r->print($output);              $r->print($output);
     }      }
         }          }
     }      }
Line 1009  sub recent_filename { Line 1036  sub recent_filename {
     return 'nohist_recent_'.&Apache::lonnet::escape($area);      return 'nohist_recent_'.&Apache::lonnet::escape($area);
 }  }
   
   sub set_privileges {
       my ($dcdom,$pickedcourse) = @_;
       my $area = '/'.$dcdom.'/'.$pickedcourse;
       my $role = 'cc';
       my $spec = $role.'.'.$area;
       my $userroles = &Apache::lonnet::set_arearole($role,$area,'','',$dcdom,$ENV{'user.name'});
       my %ccrole = ();
       &Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area);
       $userroles .= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole);                        my @newprivs = split/\n/,$userroles;
       my %newccroles = ();
       foreach (@newprivs) {
           my ($key,$val) = split/=/,$_;
           $newccroles{$key} = $val;
       }
       &Apache::lonnet::appenv(%newccroles);
       &Apache::lonnet::log($ENV{'user.domain'},
                            $ENV{'user.name'},
                            $ENV{'user.home'},
                           "Role ".$role);
                                                                                              
       &Apache::lonnet::appenv(
                             'request.role'        => $role,
                             'request.role.domain' => $dcdom,
                             'request.course.sec'  => '');
       my $tadv=0;
       if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }
       &Apache::lonnet::appenv('request.role.adv'    => $tadv);
   }
   
 1;  1;
 __END__  __END__
   

Removed from v.1.105  
changed lines
  Added in v.1.106


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