version 1.201, 2008/07/14 10:21:52
|
version 1.207, 2008/10/02 14:34:03
|
Line 146 sub handler {
|
Line 146 sub handler {
|
# Is this an ad-hoc CA-role? |
# Is this an ad-hoc CA-role? |
if (my ($domain,$user) = |
if (my ($domain,$user) = |
($envkey =~ m-^form\.ca\./($match_domain)/($match_username)$-)) { |
($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); |
my %blocked=&Apache::lonnet::get('environment',['domcoord.author'],$domain,$user); |
if ($blocked{'domcoord.author'} eq 'blocked') { |
if ($blocked{'domcoord.author'} eq 'blocked') { |
delete($env{$envkey}); |
delete($env{$envkey}); |
$env{'user.error.msg'}=':::1:User '.$user.' in domain '.$domain.' blocked domain coordinator access'; |
$env{'user.error.msg'}=':::1:User '.$user.' in domain '.$domain.' blocked domain coordinator access'; |
last; |
last; |
} |
} |
if ($dcroles{$domain}) { |
if ($dcroles{$domain}) { |
my ($server_status,$home) = &check_author_homeserver($user,$domain); |
my ($server_status,$home) = &check_author_homeserver($user,$domain); |
Line 229 sub handler {
|
Line 252 sub handler {
|
$cdom,$cnum, |
$cdom,$cnum, |
$env{'user.domain'}, |
$env{'user.domain'}, |
$env{'user.name'}, |
$env{'user.name'}, |
'Assigned from '.$ENV{'REMOTE_ADDR'}.' at '.localtime().' for '. |
&mt('Assigned from [_1] at [_2] for [_3]' |
$trolecode); |
,$ENV{'REMOTE_ADDR'} |
|
,&Apache::lonlocal::locallocaltime() |
|
,$trolecode) |
|
); |
unless ($assignresult eq 'ok') { |
unless ($assignresult eq 'ok') { |
$assignresult=~s/^error\:\s*//; |
$assignresult=~s/^error\:\s*//; |
$message=&mt($assignresult). |
$message=&mt($assignresult). |
Line 336 ENDENTERKEY
|
Line 362 ENDENTERKEY
|
} elsif ($env{'request.course.id'}) { |
} elsif ($env{'request.course.id'}) { |
if ($env{'form.destinationurl'}) { |
if ($env{'form.destinationurl'}) { |
my $dest = $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]', |
&redirect_user($r,&mt('Entering [_1]', |
$env{'course.'.$courseid.'.description'}), |
$env{'course.'.$courseid.'.description'}), |
$dest,$msg, |
$dest,$msg, |
Line 350 ENDENTERKEY
|
Line 380 ENDENTERKEY
|
) { |
) { |
my $startpage = &courseloadpage($courseid); |
my $startpage = &courseloadpage($courseid); |
unless ($startpage eq 'firstres') { |
unless ($startpage eq 'firstres') { |
$msg = &mt('Entering [_1] ....', |
$msg = &mt('Entering [_1] ...', |
$env{'course.'.$courseid.'.description'}); |
$env{'course.'.$courseid.'.description'}); |
&redirect_user($r,&mt('New in course'), |
&redirect_user($r,&mt('New in course'), |
'/adm/whatsnew?refpage=start',$msg, |
'/adm/whatsnew?refpage=start',$msg, |
Line 550 ENDHEADER
|
Line 580 ENDHEADER
|
$countfuture ++; |
$countfuture ++; |
} elsif ($tstatus eq 'will') { |
} elsif ($tstatus eq 'will') { |
$tbg='#FFAA77'; |
$tbg='#FFAA77'; |
$tremark.=&mt('Active at next login. '); |
$tremark.=&mt('Active at next login.').' '; |
$roles_nextlogin{$trolecode} = $tstart.':'.$tend; |
$roles_nextlogin{$trolecode} = $tstart.':'.$tend; |
$countwill ++; |
$countwill ++; |
} elsif ($tstatus eq 'expired') { |
} elsif ($tstatus eq 'expired') { |
Line 559 ENDHEADER
|
Line 589 ENDHEADER
|
$button=0; |
$button=0; |
} elsif ($tstatus eq 'will_not') { |
} elsif ($tstatus eq 'will_not') { |
$tbg='#AAFF77'; |
$tbg='#AAFF77'; |
$tremark.=&mt('Expired after logout. '); |
$tremark.=&mt('Expired after logout.').' '; |
} elsif ($tstatus eq 'selected') { |
} elsif ($tstatus eq 'selected') { |
$tbg='#11CC55'; |
$tbg='#11CC55'; |
$tfont='#002200'; |
$tfont='#002200'; |
$inrole=1; |
$inrole=1; |
$countactive++; |
$countactive++; |
$tremark.=&mt('Currently selected. '); |
$tremark.=&mt('Currently selected.').' '; |
} |
} |
my $trole; |
my $trole; |
if ($role =~ /^cr\//) { |
if ($role =~ /^cr\//) { |
my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role); |
my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role); |
if ($tremark) { $tremark.='<br />'; } |
if ($tremark) { $tremark.='<br />'; } |
$tremark.=&mt('Defined by ').$rauthor. |
$tremark.=&mt('Defined by [_1] at [_2].',$rauthor,$rdomain); |
&mt(' at ').$rdomain.'.'; |
|
} |
} |
$trole=Apache::lonnet::plaintext($role); |
$trole=Apache::lonnet::plaintext($role); |
my $ttype; |
my $ttype; |
Line 700 ENDHEADER
|
Line 729 ENDHEADER
|
my $tfont='#003300'; |
my $tfont='#003300'; |
if ($env{'request.role'} eq 'cm') { |
if ($env{'request.role'} eq 'cm') { |
$r->print('<tr bgcolor="#11CC55">'); |
$r->print('<tr bgcolor="#11CC55">'); |
$tremark=&mt('Currently selected. '); |
$tremark=&mt('Currently selected.').' '; |
$tfont='#002200'; |
$tfont='#002200'; |
} else { |
} else { |
$r->print('<tr bgcolor="#77FF77">'); |
$r->print('<tr bgcolor="#77FF77">'); |
Line 713 ENDHEADER
|
Line 742 ENDHEADER
|
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
# Is there only one choice? |
|
} elsif (($countactive==1) && ($env{'request.role'} eq 'cm')) { |
|
$r->print('<h3>'.&mt('Please stand by.').'</h3>'. |
|
'<input type="hidden" name="'.$possiblerole.'" value="1" />'. |
|
'<noscript><br /><input type="submit" name="submit" value="'.&mt('Continue').'" /></noscript>'); |
|
$r->print("</form>\n"); |
|
$r->rflush(); |
|
$r->print('<script type="text/javascript">document.forms.rolechoice.submit();</script>'); |
|
$r->print(&Apache::loncommon::end_page()); |
|
return OK; |
|
} |
} |
# More than one possible role |
|
# ----------------------------------------------------------------------- Table |
# ----------------------------------------------------------------------- Table |
unless ((!&Apache::lonmenu::show_course()) || ($nochoose)) { |
unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) { |
$r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n"); |
$r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n"); |
} |
} |
my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,$nochoose); |
my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,$nochoose); |
Line 761 ENDHEADER
|
Line 779 ENDHEADER
|
&Apache::loncommon::authorbrowser_javascript()); |
&Apache::loncommon::authorbrowser_javascript()); |
} |
} |
&print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,\%roletext); |
&print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,\%roletext); |
my $tremark=''; |
if ($countactive > 1) { |
my $tfont='#003300'; |
my $tremark=''; |
if ($env{'request.role'} eq 'cm') { |
my $tfont='#003300'; |
$r->print('<tr bgcolor="#11CC55">'); |
if ($env{'request.role'} eq 'cm') { |
$tremark=&mt('Currently selected. '); |
$r->print('<tr bgcolor="#11CC55">'); |
$tfont='#002200'; |
$tremark=&mt('Currently selected.').' '; |
} else { |
$tfont='#002200'; |
$r->print('<tr bgcolor="#77FF77">'); |
} else { |
} |
$r->print('<tr bgcolor="#77FF77">'); |
unless ($nochoose) { |
} |
if ($env{'request.role'} ne 'cm') { |
unless ($nochoose) { |
$r->print('<td><input type="submit" value="'. |
if ($env{'request.role'} ne 'cm') { |
&mt('Select').'" name="cm" /></td>'); |
$r->print('<td><input type="submit" value="'. |
} else { |
&mt('Select').'" name="cm" /></td>'); |
$r->print('<td> </td>'); |
} else { |
} |
$r->print('<td> </td>'); |
} |
} |
$r->print('<td colspan="3"><font color="'.$tfont.'"><span class="LC_rolesinfo">'.&mt('No role specified'). |
} |
'</span></font></td><td><font color="'.$tfont.'">'.$tremark. |
$r->print('<td colspan="3"><font color="'.$tfont.'"><span class="LC_rolesinfo">'.&mt('No role specified'). |
' </font></td></tr>'."\n"); |
'</span></font></td><td><font color="'.$tfont.'">'.$tremark. |
|
' </font></td></tr>'."\n"); |
|
} |
$r->print('</table>'); |
$r->print('</table>'); |
unless ($nochoose) { |
unless ($nochoose) { |
$r->print("</form>\n"); |
$r->print("</form>\n"); |
Line 923 sub privileges_info {
|
Line 942 sub privileges_info {
|
$ttype='System'; |
$ttype='System'; |
$twhere='/'; |
$twhere='/'; |
} |
} |
$output .= "\n<h3>".$ttype.': '.$twhere.'</h3>'."\n<ul>"; |
$output .= "\n<h3>".&mt($ttype).': '.$twhere.'</h3>'."\n<ul>"; |
foreach my $priv (sort(split(/:/,$env{$envkey}))) { |
foreach my $priv (sort(split(/:/,$env{$envkey}))) { |
next if (!$priv); |
next if (!$priv); |
|
|
Line 1019 sub build_roletext {
|
Line 1038 sub build_roletext {
|
return $roletext; |
return $roletext; |
} |
} |
|
|
|
sub check_needs_switchserver { |
|
my ($possiblerole) = @_; |
|
my $needs_switchserver; |
|
my ($role,$where) = split(/\./,$possiblerole,2); |
|
my (undef,$tdom,$twho) = split(/\//,$where); |
|
my ($server_status,$home); |
|
if (($role eq 'ca') || ($role eq 'aa')) { |
|
($server_status,$home) = &check_author_homeserver($twho,$tdom); |
|
} else { |
|
($server_status,$home) = &check_author_homeserver($env{'user.name'}, |
|
$env{'user.domain'}); |
|
} |
|
if ($server_status eq 'switchserver') { |
|
$needs_switchserver = 1; |
|
} |
|
return $needs_switchserver; |
|
} |
|
|
sub check_author_homeserver { |
sub check_author_homeserver { |
my ($uname,$udom)=@_; |
my ($uname,$udom)=@_; |
if (($uname eq '') || ($udom eq '')) { |
if (($uname eq '') || ($udom eq '')) { |