--- loncom/auth/lonroles.pm 2004/11/09 20:04:48 1.105
+++ loncom/auth/lonroles.pm 2005/03/03 07:32:49 1.117
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.105 2004/11/09 20:04:48 raeburn Exp $
+# $Id: lonroles.pm,v 1.117 2005/03/03 07:32:49 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -82,32 +82,11 @@ sub handler {
my $now=time;
my $then=$ENV{'user.login.time'};
my $envkey;
- my $dcselect='';
-
+ my %dcroles = ();
+ my $numdc = &check_fordc(\%dcroles,$then);
# ================================================================== Roles Init
if ($ENV{'form.selectrole'}) {
- if ($ENV{'form.dcselected'}) {
- my $dcdom = $ENV{'form.dcselected'};
- my $dckey = 'user.role.dc./'.$dcdom.'/';
- if ($ENV{$dckey}) {
- my ($dcstart,$dcend)=split(/\./,$ENV{$dckey});
- my $active_dc = 1;
- if ($dcstart) {
- if ($dcstart>$then) {
- $active_dc = 0;
- }
- }
- if ($dcend) {
- if ($dcend < $then) {
- $active_dc = 0;
- }
- }
- if ($active_dc) {
- $dcselect = $dcdom;
- }
- }
- }
if ($ENV{'request.course.id'}) {
my %temp=('logout_'.$ENV{'request.course.id'} => time);
&Apache::lonnet::put('email_status',\%temp);
@@ -120,6 +99,20 @@ sub handler {
"request.role" => 'cm',
"request.role.adv" => $ENV{'user.adv'},
"request.role.domain" => $ENV{'user.domain'});
+
+# Check if 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}) {
+ my $cckey = 'user.role.cc./'.$1.'/'.$2;
+ &check_privs($cckey,$then,$now);
+ }
+ last;
+ }
+ }
+ }
+
foreach $envkey (keys %ENV) {
next if ($envkey!~/^user\.role\./);
my ($where,$trolecode,$role,$tstatus,$tend,$tstart);
@@ -128,6 +121,13 @@ sub handler {
if ($tstatus eq 'is') {
$where=~s/^\///;
my ($cdom,$cnum,$csec)=split(/\//,$where);
+# store role if recent_role list being kept
+ if ($ENV{'environment.recentroles'}) {
+ &Apache::lonhtmlcommon::store_recent('roles',
+ $trolecode,' ');
+ }
+
+
# check for keyed access
if (($role eq 'st') &&
($ENV{'course.'.$cdom.'_'.$cnum.'.keyaccess'} eq 'yes')) {
@@ -224,9 +224,6 @@ ENDENTERKEY
'request.role.domain' => $cdom,
'request.course.sec' => $csec);
my $tadv=0;
- if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }
- &Apache::lonnet::appenv('request.role.adv' => $tadv);
-
my $msg=&mt('Entering course ...');
if (($cnum) && ($role ne 'ca')) {
@@ -238,6 +235,8 @@ ENDENTERKEY
if ( &Apache::lonnet::mod_perl_version() == 2 ) {
&Apache::lonnet::cleanenv();
}
+ if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }
+ &Apache::lonnet::appenv('request.role.adv'=>$tadv);
$r->internal_redirect($dest);
return OK;
} else {
@@ -250,6 +249,8 @@ ENDENTERKEY
&mt('Could not initialize course at this time.').
'
'.&mt('Please try again.').'
'.$ferr;
}
+ if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; }
+ &Apache::lonnet::appenv('request.role.adv'=>$tadv);
# Check to see if the user is a CC entering a course
# for the first time
@@ -262,18 +263,6 @@ ENDENTERKEY
'.course.helper.not.run'}) {
$furl = "/adm/helper/course.initialization.helper";
}
- # 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;
- if ($ENV{'user.role.dc./'.$dcdom.'/'}) {
- &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,
@@ -297,12 +286,10 @@ ENDENTERKEY
return OK;
}
if ($role eq 'dc') {
- unless ($dcselect) {
- my $redirect_url = '/adm/menu/';
- &redirect_user($r,&mt('Loading Domain Coordinator Menu'),
+ my $redirect_url = '/adm/menu/';
+ &redirect_user($r,&mt('Loading Domain Coordinator Menu'),
$redirect_url);
- return OK;
- }
+ return OK;
}
}
}
@@ -318,7 +305,6 @@ ENDENTERKEY
return OK if $r->header_only;
my $swinfo=&Apache::lonmenu::rawconfig();
- my $setDCchoice = &dc_script();
my $bodytag=&Apache::loncommon::bodytag('User Roles');
my $helptag='
'.&Apache::loncommon::help_open_menu('','General Intro','General_Intro','User Roles',1,undef,undef,undef,undef,,&mt("Click here for help")).'