--- loncom/auth/lonroles.pm 2008/05/14 23:52:52 1.191 +++ loncom/auth/lonroles.pm 2008/06/04 19:14:20 1.195 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.191 2008/05/14 23:52:52 raeburn Exp $ +# $Id: lonroles.pm,v 1.195 2008/06/04 19:14:20 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -137,59 +137,39 @@ sub handler { # Is this an ad-hoc CC-role? if (my ($domain,$coursenum) = ($envkey =~ m-^form\.cc\./($match_domain)/($match_courseid)$-)) { - # See if that is even allowed - my %crsenv=&Apache::lonnet::get('environment',['internal.courseowner'],$domain,$coursenum); - # First find course owner - my ($owneruser,$ownerdomain)=split(/\:/,$crsenv{'internal.courseowner'}); - # Check if course owner blocked cc-access - if (($owneruser) && ($ownerdomain)) { - my %blocked=&Apache::lonnet::get('environment',['domcoord.cc'],$ownerdomain,$owneruser); - if ($blocked{'domcoord.cc'} eq 'blocked') { - $env{'user.error.msg'}=':::1:Course owner '.$owneruser.' in domain '.$ownerdomain.' blocked domain coordinator access'; - last; - } - } if ($dcroles{$domain}) { &check_privs($domain,$coursenum,$then,$now,'cc'); } last; } -# Is this a recent ad-hoc CA-role? +# Is this an ad-hoc CA-role? if (my ($domain,$user) = ($envkey =~ m-^form\.ca\./($match_domain)/($match_username)$-)) { - # See if still allowed + # Check if author blocked ca-access my %blocked=&Apache::lonnet::get('environment',['domcoord.author'],$domain,$user); if ($blocked{'domcoord.author'} eq 'blocked') { delete($env{$envkey}); $env{'user.error.msg'}=':::1:User '.$user.' in domain '.$domain.' blocked domain coordinator access'; last; } - if (($dcroles{$domain}) && (&is_author_homeserver($user,$domain))) { - &check_privs($domain,$user,$then,$now,'ca'); + if ($dcroles{$domain}) { + my ($server_status,$home) = &check_author_homeserver($user,$domain); + if (($server_status eq 'ok') || ($server_status eq 'switchserver')) { + &check_privs($domain,$user,$then,$now,'ca'); + if ($server_status eq 'switchserver') { + my $trolecode = 'ca./'.$domain.'/'.$user; + my $switchserver = '/adm/switchserver?' + .'otherserver='.$home.'&role='.$trolecode; + $r->internal_redirect($switchserver); + } + } else { + delete($env{$envkey}); + } } else { delete($env{$envkey}); } last; } -# Is this a new ad-hoc CA-role? - if (my ($domain) = - ($envkey =~ m-^form\.adhocca\./($match_domain)$-)) { - my $user=$env{'form.adhoccauname.'.$domain}; - if (!$user) { $user=$env{'form.adhoccaunamerecent.'.$domain} }; - # See if that is even allowed - my %blocked=&Apache::lonnet::get('environment',['domcoord.author'],$domain,$user); - if ($blocked{'domcoord.author'} eq 'blocked') { - $env{'user.error.msg'}=':::1:User '.$user.' in domain '.$domain.' blocked domain coordinator access'; - last; - } - if ($dcroles{$domain}) { - if (($user) && ($user=~/$match_username/) && (&is_author_homeserver($user,$domain))) { - &check_privs($domain,$user,$then,$now,'ca'); - $env{'form.ca./'.$domain.'/'.$user}=1; - } - } - last; - } } } @@ -719,7 +699,7 @@ ENDHEADER $r->print('
This is LON-CAPA '.
- $r->dir_config('lonVersion').'
'.
- ''.&mt('Logout').'
'
+ .&mt('This is LON-CAPA [_1]',$r->dir_config('lonVersion'))
+ .'
'
+ .''.&mt('Logout').'
' + .&mt('[_1]Ad hoc[_2] roles in domain [_3] --', + '','',$dcdom).' | ';
+ my $selectcclink = &courselink($dcdom,$rowtype);
my $ccrole = &Apache::lonnet::plaintext('cc');
- $output.= ''.
- &mt('[_1]: [_2] from domain [_3]',$ccrole,$selectlink,$dcdom).
- ' | |||
';
my $carole = &Apache::lonnet::plaintext('ca');
- my $inputlink='';
- my $gobutton='';
+ my $selectcalink = &coauthorlink($dcdom,$rowtype);
$output.= ''.
- &mt('[_1]: [_2] in domain [_3] [_4]',$carole,$inputlink,$dcdom,$gobutton).
- ' | ||||
'.
+ &mt('[_1]: [_2]',$carole,$selectcalink).
+ ' |