--- loncom/auth/lonroles.pm 2004/07/21 19:54:43 1.95
+++ loncom/auth/lonroles.pm 2005/03/03 07:16:44 1.116
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.95 2004/07/21 19:54:43 albertel Exp $
+# $Id: lonroles.pm,v 1.116 2005/03/03 07:16:44 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,6 +36,7 @@ use Apache::Constants qw(:common);
use Apache::File();
use Apache::lonmenu;
use Apache::loncommon;
+use Apache::lonhtmlcommon;
use Apache::lonannounce;
use Apache::lonlocal;
@@ -46,8 +47,11 @@ sub redirect_user {
&Apache::loncommon::no_cache($r);
$r->send_http_header;
my $swinfo=&Apache::lonmenu::rawconfig();
+ my $navwindow;
if ($launch_nav eq 'on') {
- $swinfo.=&Apache::lonnavmaps::launch_win('now','no');
+ $navwindow.=&Apache::lonnavmaps::launch_win('now');
+ } else {
+ $navwindow.=&Apache::lonnavmaps::close();
}
my $bodytag=&Apache::loncommon::bodytag('Switching Role');
# Note to style police:
@@ -59,9 +63,10 @@ sub redirect_user {
$bodytag
-
+$navwindow
$msg
Continue
@@ -77,15 +82,16 @@ sub handler {
my $now=time;
my $then=$ENV{'user.login.time'};
my $envkey;
-
+ my %dcroles = ();
+ my $numdc = &check_fordc(\%dcroles,$then);
# ================================================================== Roles Init
-
if ($ENV{'form.selectrole'}) {
if ($ENV{'request.course.id'}) {
my %temp=('logout_'.$ENV{'request.course.id'} => time);
&Apache::lonnet::put('email_status',\%temp);
- }
+ &Apache::lonnet::delenv('user.state.'.$ENV{'request.course.id'});
+ }
&Apache::lonnet::appenv("request.course.id" => '',
"request.course.fn" => '',
"request.course.uri" => '',
@@ -93,26 +99,35 @@ 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 (undef,undef,$role,@pwhere)=split(/\./,$envkey);
- my $where=join('.',@pwhere);
- my $trolecode=$role.'.'.$where;
+ my ($where,$trolecode,$role,$tstatus,$tend,$tstart);
+ &role_status($envkey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend);
if ($ENV{'form.'.$trolecode}) {
- my ($tstart,$tend)=split(/\./,$ENV{$envkey});
- my $tstatus='is';
- if ($tstart) {
- if ($tstart>$then) {
- $tstatus='future';
- }
- }
- if ($tend) {
- if ($tend<$then) { $tstatus='expired'; }
- if ($tend<$now) { $tstatus='will_not'; }
- }
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')) {
@@ -203,15 +218,15 @@ ENDENTERKEY
$ENV{'user.name'},
$ENV{'user.home'},
"Role ".$trolecode);
- my $tadv=0;
- if (($trolecode!~/^st/) &&
- ($trolecode!~/^ta/) &&
- ($trolecode!~/^cm/)) { $tadv=1; }
+
&Apache::lonnet::appenv(
- 'request.role' => $trolecode,
- 'request.role.adv' => $tadv,
+ 'request.role' => $trolecode,
'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')) {
@@ -247,7 +262,6 @@ ENDENTERKEY
'.course.helper.not.run'}) {
$furl = "/adm/helper/course.initialization.helper";
}
- #
# Send the user to the course they selected
&redirect_user($r,&mt('Entering Course'),
$furl,$msg,
@@ -270,6 +284,12 @@ ENDENTERKEY
$redirect_url);
return OK;
}
+ if ($role eq 'dc') {
+ my $redirect_url = '/adm/menu/';
+ &redirect_user($r,&mt('Loading Domain Coordinator Menu'),
+ $redirect_url);
+ return OK;
+ }
}
}
}
@@ -319,7 +339,7 @@ ENDHEADER
$r->print("LON-CAPA Access Control
");
$r->print("
Access : ".
Apache::lonnet::plaintext($priv)."\n");
- $r->print("Resource: $fn\n");
+ $r->print("Resource: ".&Apache::lonenc::check_encrypt($fn)."\n");
$r->print("Action : $msg\n
");
} else {
if ($ENV{'user.error.msg'}) {
@@ -356,14 +376,14 @@ ENDHEADER
$fn.='?'.$ENV{'REDIRECT_QUERY_STRING'};
}
$r->print('