--- loncom/auth/lonroles.pm 2004/11/09 15:52:29 1.102
+++ loncom/auth/lonroles.pm 2004/11/11 22:18:23 1.106
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.102 2004/11/09 15:52:29 raeburn Exp $
+# $Id: lonroles.pm,v 1.106 2004/11/11 22:18:23 raeburn 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;
@@ -81,10 +82,32 @@ sub handler {
my $now=time;
my $then=$ENV{'user.login.time'};
my $envkey;
+ my $dcselect='';
# ================================================================== 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);
@@ -97,6 +120,33 @@ sub handler {
"request.role" => 'cm',
"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;
+ 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) {
next if ($envkey!~/^user\.role\./);
my ($where,$trolecode,$role,$tstatus,$tend,$tstart);
@@ -239,6 +289,17 @@ 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'),
@@ -262,6 +323,14 @@ ENDENTERKEY
$redirect_url);
return OK;
}
+ if ($role eq 'dc') {
+ unless ($dcselect) {
+ my $redirect_url = '/adm/menu/';
+ &redirect_user($r,&mt('Loading Domain Coordinator Menu'),
+ $redirect_url);
+ return OK;
+ }
+ }
}
}
}
@@ -276,6 +345,7 @@ 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")).'