--- loncom/auth/lonroles.pm 2004/11/11 22:18:23 1.106 +++ loncom/auth/lonroles.pm 2004/11/11 23:17:13 1.107 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.106 2004/11/11 22:18:23 raeburn Exp $ +# $Id: lonroles.pm,v 1.107 2004/11/11 23:17:13 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -83,7 +83,8 @@ sub handler { my $then=$ENV{'user.login.time'}; my $envkey; my $dcselect=''; - + my %dcroles = (); + my $numdc = &check_fordc(\%dcroles,$then); # ================================================================== Roles Init if ($ENV{'form.selectrole'}) { @@ -121,9 +122,20 @@ sub handler { "request.role.adv" => $ENV{'user.adv'}, "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; +# Check to see if the user is a DC trying to enter a course and needs privs to be created + if ($numdc > 0) { + foreach my $envkey (keys %ENV) { + if ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-) { + if ($dcroles{$1}) { + unless ($ENV{'user.role.cc./'.$1.'/'.$2}) { + &set_privileges($1,$2); + } + } + last; + } + } + } + if ($ENV{'form.dccourse'}) { my $dcdom = $ENV{'form.dcdomain'}; my $pickedcourse = $ENV{'form.dccourse'}; @@ -131,17 +143,6 @@ sub handler { 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; } } } @@ -291,7 +292,6 @@ ENDENTERKEY } # Check to see if the user is a DC coming from the # course selection page - my $dcflag = 0; if ($ENV{'form.dccourse'}) { my $formaction = '/adm/roles/'; my ($dcdom,$pickedcourse) = split/_/,$courseid; @@ -435,9 +435,6 @@ ENDHEADER $r->print('>'); } - my %dcroles = (); - my $numdc = &check_fordc(\%dcroles,$then); - my (%roletext,%sortrole,%roleclass); my $countactive=0; my $inrole=0; @@ -1044,7 +1041,8 @@ sub set_privileges { 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 ($author,$adv)= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole); + my @newprivs = split/\n/,$userroles; my %newccroles = (); foreach (@newprivs) { my ($key,$val) = split/=/,$_; @@ -1055,7 +1053,6 @@ sub set_privileges { $ENV{'user.name'}, $ENV{'user.home'}, "Role ".$role); - &Apache::lonnet::appenv( 'request.role' => $role, 'request.role.domain' => $dcdom,