--- loncom/auth/lonroles.pm 2001/01/15 15:59:52 1.20
+++ loncom/auth/lonroles.pm 2001/10/26 17:09:04 1.29
@@ -8,7 +8,9 @@
# 09/04,09/06,09/28,09/29,09/30,10/2,10/5,10/26,10/28,
# 12/08,12/28,
# 01/15/01 Gerd Kortemeyer
-#
+# 02/27/01 Scott Harrison
+# 03/02,05/03,05/25,05/30,06/01,07/06,08/06 Gerd Kortemeyer
+
package Apache::lonroles;
use strict;
@@ -16,6 +18,8 @@ use Apache::lonnet();
use Apache::lonuserstate();
use Apache::Constants qw(:common);
use Apache::File();
+use Apache::lonmenu;
+use Apache::loncommon;
sub handler {
@@ -56,7 +60,8 @@ sub handler {
my ($cdom,$cnum,$csec)=split(/\//,$where);
&Apache::lonnet::appenv('request.role' => $trolecode,
'request.course.sec' => $csec);
- if ($cnum) {
+ my $msg='Entering course ...';
+ if (($cnum) && ($role ne 'ca')) {
my ($furl,$ferr)=
&Apache::lonuserstate::readmap($cdom.'/'.$cnum);
if (($ENV{'form.orgurl'}) &&
@@ -64,15 +69,28 @@ sub handler {
$r->internal_redirect($ENV{'form.orgurl'});
return OK;
} else {
+ unless ($ENV{'request.course.id'}) {
+ &Apache::lonnet::appenv(
+ "request.course.id" => $cdom.'_'.$cnum);
+ $furl='/adm/notfound.html';
+ $msg=
+ '
Could not initialize top-level map.
';
+ }
$r->content_type('text/html');
$r->send_http_header;
+ my $swinfo=&Apache::lonmenu::rawconfig;
+ my $cacheheader=&Apache::loncommon::cacheheader();
print (<Entering Course
+$cacheheader
-Entering course ...
+
+$msg
ENDREDIR
@@ -92,11 +110,18 @@ ENDREDIR
$r->send_http_header;
return OK if $r->header_only;
+ my $swinfo=&Apache::lonmenu::rawconfig;
+ my $cacheheader=&Apache::loncommon::cacheheader();
$r->print(<
+$cacheheader
LON-CAPA User Roles
+
ENDHEADER
# ------------------------------------------ Get Error Message from Environment
@@ -127,6 +152,11 @@ ENDHEADER
$r->print("Action : $msg\n
");
} else {
$r->print("LON-CAPA User Roles
");
+ if ($ENV{'user.error.msg'}) {
+ $r->print(
+ 'You need to choose another user role or '.
+ 'enter a specific course for this function
');
+ }
}
# -------------------------------------------------------- Choice or no choice?
if ($nochoose) {
@@ -155,6 +185,9 @@ ENDHEADER
$r->print('');
$r->print('');
}
+ $r->print('
Show all roles: print(' checked'); }
+ $r->print('>
');
# ----------------------------------------------------------------------- Table
$r->print('');
unless ($nochoose) { $r->print(' | '); }
@@ -179,14 +212,19 @@ ENDHEADER
$tpstart=localtime($tstart);
}
if ($tend) {
- if ($tend<$then) { $tstatus='expired'; }
- if ($tend<$now) { $tstatus='will_not'; }
+ if ($tend<$then) {
+ $tstatus='expired';
+ } elsif ($tend<$now) {
+ $tstatus='will_not';
+ }
$tpend=localtime($tend);
}
if ($ENV{'request.role'} eq $trolecode) {
$tstatus='selected';
}
my $tbg;
+ if (($tstatus eq 'is') || ($tstatus eq 'selected') ||
+ ($ENV{'form.showall'})) {
if ($tstatus eq 'is') {
$tbg='#77FF77';
} elsif ($tstatus eq 'future') {
@@ -216,6 +254,11 @@ ENDHEADER
my ($tdom,$trest,$tsection)=
split(/\//,Apache::lonnet::declutter($where));
if ($trest) {
+ if ($role eq 'ca') {
+ $ttype='Construction Space';
+ $twhere='User: '.$trest.'
Domain: '.$tdom;
+ $ENV{'course.'.$tdom.'_'.$trest.'.description'}='ca';
+ } else {
$ttype='Course';
if ($tsection) {
$ttype.='
Section/Group: '.$tsection;
@@ -232,6 +275,7 @@ ENDHEADER
$ENV{'course.'.$tcourseid.'.description'}=$twhere;
}
}
+ }
} elsif ($tdom) {
$ttype='Domain';
$twhere=$tdom;
@@ -245,6 +289,10 @@ ENDHEADER
if ($tstatus eq 'is') {
$r->print(' | ');
+ } elsif ($ENV{'user.adv'}) {
+ $r->print(
+ ' | ');
} else {
$r->print(' | ');
}
@@ -253,6 +301,7 @@ ENDHEADER
$ttype.''.$twhere.' | '.$tpstart.
' | '.$tpend.
' | '.$tremark.' |
'."\n");
+ }
}
}
my $tremark='';
@@ -276,9 +325,9 @@ ENDHEADER
unless ($nochoose) {
$r->print("\n");
}
-# ------------------------------------------------------------ Priviledges Info
+# ------------------------------------------------------------ Privileges Info
if ($advanced) {
- $r->print('
Current Priviledges
');
+ $r->print('
Current Privileges
');
foreach $envkey (sort keys %ENV) {
if ($envkey=~/^user\.priv\.$ENV{'request.role'}\./) {
@@ -289,11 +338,16 @@ ENDHEADER
my ($tdom,$trest,$tsec)=
split(/\//,Apache::lonnet::declutter($where));
if ($trest) {
+ if ($ENV{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') {
+ $ttype='Construction Space';
+ $twhere='User: '.$trest.', Domain: '.$tdom;
+ } else {
$ttype='Course';
$twhere=$ENV{'course.'.$tdom.'_'.$trest.'.description'};
if ($tsec) {
$twhere.=' (Section/Group: '.$tsec.')';
}
+ }
} elsif ($tdom) {
$ttype='Domain';
$twhere=$tdom;