--- loncom/auth/lonroles.pm 2008/07/18 16:17:39 1.202 +++ loncom/auth/lonroles.pm 2008/10/02 14:34:03 1.207 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.202 2008/07/18 16:17:39 raeburn Exp $ +# $Id: lonroles.pm,v 1.207 2008/10/02 14:34:03 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -146,12 +146,35 @@ sub handler { # Is this an ad-hoc CA-role? if (my ($domain,$user) = ($envkey =~ m-^form\.ca\./($match_domain)/($match_username)$-)) { - # Check if author blocked ca-access + if (($domain eq $env{'user.domain'}) && ($user eq $env{'user.name'})) { + delete($env{$envkey}); + $env{'form.au./'.$domain.'/'} = 1; + my ($server_status,$home) = &check_author_homeserver($user,$domain); + if ($server_status eq 'switchserver') { + my $trolecode = 'au./'.$domain.'/'; + my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; + $r->internal_redirect($switchserver); + } + last; + } + if (my ($castart,$caend) = ($env{'user.role.ca./'.$domain.'/'.$user} =~ /^(\d*)\.(\d*)$/)) { + if (((($castart) && ($castart < $now)) || !$castart) && + ((!$caend) || (($caend) && ($caend > $now)))) { + my ($server_status,$home) = &check_author_homeserver($user,$domain); + if ($server_status eq 'switchserver') { + my $trolecode = 'ca./'.$domain.'/'.$user; + my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; + $r->internal_redirect($switchserver); + } + last; + } + } + # 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; + delete($env{$envkey}); + $env{'user.error.msg'}=':::1:User '.$user.' in domain '.$domain.' blocked domain coordinator access'; + last; } if ($dcroles{$domain}) { my ($server_status,$home) = &check_author_homeserver($user,$domain); @@ -229,8 +252,11 @@ sub handler { $cdom,$cnum, $env{'user.domain'}, $env{'user.name'}, - 'Assigned from '.$ENV{'REMOTE_ADDR'}.' at '.localtime().' for '. - $trolecode); + &mt('Assigned from [_1] at [_2] for [_3]' + ,$ENV{'REMOTE_ADDR'} + ,&Apache::lonlocal::locallocaltime() + ,$trolecode) + ); unless ($assignresult eq 'ok') { $assignresult=~s/^error\:\s*//; $message=&mt($assignresult). @@ -336,6 +362,10 @@ ENDENTERKEY } elsif ($env{'request.course.id'}) { if ($env{'form.destinationurl'}) { my $dest = $env{'form.destinationurl'}; + if ($env{'form.destsymb'} ne '') { + my $esc_symb = &HTML::Entities::encode($env{'form.destsymb'},'"<>&'); + $dest .= '?symb='.$esc_symb; + } &redirect_user($r,&mt('Entering [_1]', $env{'course.'.$courseid.'.description'}), $dest,$msg, @@ -350,7 +380,7 @@ ENDENTERKEY ) { my $startpage = &courseloadpage($courseid); unless ($startpage eq 'firstres') { - $msg = &mt('Entering [_1] ....', + $msg = &mt('Entering [_1] ...', $env{'course.'.$courseid.'.description'}); &redirect_user($r,&mt('New in course'), '/adm/whatsnew?refpage=start',$msg, @@ -550,7 +580,7 @@ ENDHEADER $countfuture ++; } elsif ($tstatus eq 'will') { $tbg='#FFAA77'; - $tremark.=&mt('Active at next login. '); + $tremark.=&mt('Active at next login.').' '; $roles_nextlogin{$trolecode} = $tstart.':'.$tend; $countwill ++; } elsif ($tstatus eq 'expired') { @@ -559,20 +589,19 @@ ENDHEADER $button=0; } elsif ($tstatus eq 'will_not') { $tbg='#AAFF77'; - $tremark.=&mt('Expired after logout. '); + $tremark.=&mt('Expired after logout.').' '; } elsif ($tstatus eq 'selected') { $tbg='#11CC55'; $tfont='#002200'; $inrole=1; $countactive++; - $tremark.=&mt('Currently selected. '); + $tremark.=&mt('Currently selected.').' '; } my $trole; if ($role =~ /^cr\//) { my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role); if ($tremark) { $tremark.='
'; } - $tremark.=&mt('Defined by ').$rauthor. - &mt(' at ').$rdomain.'.'; + $tremark.=&mt('Defined by [_1] at [_2].',$rauthor,$rdomain); } $trole=Apache::lonnet::plaintext($role); my $ttype; @@ -700,7 +729,7 @@ ENDHEADER my $tfont='#003300'; if ($env{'request.role'} eq 'cm') { $r->print(''); - $tremark=&mt('Currently selected. '); + $tremark=&mt('Currently selected.').' '; $tfont='#002200'; } else { $r->print(''); @@ -713,30 +742,7 @@ ENDHEADER } $r->print(&Apache::loncommon::end_page()); return OK; -# Is there only one choice? - } elsif ($countactive==1) { - my $needs_switchserver; - if ($env{'user.author'}) { - $needs_switchserver = &check_needs_switchserver($possiblerole); - } - if ((!$needs_switchserver) && ($env{'request.role'} eq 'cm')) { - $r->print('

'.&mt('Please stand by.').'

'. - ''. - ''); - $r->print("\n"); - $r->rflush(); - $r->print(''); - $r->print(&Apache::loncommon::end_page()); - return OK; - } - if ($needs_switchserver) { - $r->print("

".&mt('Server Switch Required')."

\n". - &mt('Construction Space access is only available from '. - 'the home server of the corresponding Author.').'
'. - &mt("Click the 'Switch Server' link to go there.").'
'); - } } -# More than one possible role # ----------------------------------------------------------------------- Table unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) { $r->print("

".&mt('Select a Course to Enter')."

\n"); @@ -778,7 +784,7 @@ ENDHEADER my $tfont='#003300'; if ($env{'request.role'} eq 'cm') { $r->print(''); - $tremark=&mt('Currently selected. '); + $tremark=&mt('Currently selected.').' '; $tfont='#002200'; } else { $r->print(''); @@ -936,7 +942,7 @@ sub privileges_info { $ttype='System'; $twhere='/'; } - $output .= "\n

".$ttype.': '.$twhere.'

'."\n