--- loncom/auth/lonroles.pm 2000/12/28 21:46:08 1.19
+++ loncom/auth/lonroles.pm 2001/08/06 11:16:32 1.28
@@ -6,8 +6,11 @@
# 11/23 Gerd Kortemeyer)
# 1/14,03/06,06/01,07/22,07/24,07/25,
# 09/04,09/06,09/28,09/29,09/30,10/2,10/5,10/26,10/28,
-# 12/08,12/28 Gerd Kortemeyer
-#
+# 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;
@@ -15,6 +18,7 @@ use Apache::lonnet();
use Apache::lonuserstate();
use Apache::Constants qw(:common);
use Apache::File();
+use Apache::lonmenu;
sub handler {
@@ -55,22 +59,46 @@ 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'}) {
+ if (($ENV{'form.orgurl'}) &&
+ ($ENV{'form.orgurl'}!~/^\/adm\/flip/)) {
$r->internal_redirect($ENV{'form.orgurl'});
return OK;
} else {
- $r->internal_redirect($furl);
- return OK;
+ 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;
+ print (<Entering Course
+
+
+
+
+
+$msg
+
+
+ENDREDIR
+ return OK;
}
}
}
}
}
}
- }
+ }
# =============================================================== No Roles Init
@@ -79,11 +107,17 @@ sub handler {
$r->send_http_header;
return OK if $r->header_only;
+ my $swinfo=&Apache::lonmenu::rawconfig;
+
$r->print(<
LON-CAPA User Roles
+
ENDHEADER
# ------------------------------------------ Get Error Message from Environment
@@ -114,6 +148,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) {
@@ -142,6 +181,9 @@ ENDHEADER
$r->print('');
$r->print('');
}
+ $r->print('
Show all roles: print(' checked'); }
+ $r->print('>
');
# ----------------------------------------------------------------------- Table
$r->print('');
unless ($nochoose) { $r->print(' | '); }
@@ -166,14 +208,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') {
@@ -203,6 +250,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;
@@ -219,6 +271,7 @@ ENDHEADER
$ENV{'course.'.$tcourseid.'.description'}=$twhere;
}
}
+ }
} elsif ($tdom) {
$ttype='Domain';
$twhere=$tdom;
@@ -232,6 +285,10 @@ ENDHEADER
if ($tstatus eq 'is') {
$r->print(' | ');
+ } elsif ($ENV{'user.adv'}) {
+ $r->print(
+ ' | ');
} else {
$r->print(' | ');
}
@@ -240,6 +297,7 @@ ENDHEADER
$ttype.''.$twhere.' | '.$tpstart.
' | '.$tpend.
' | '.$tremark.' |
'."\n");
+ }
}
}
my $tremark='';
@@ -263,9 +321,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'}\./) {
@@ -276,11 +334,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;