version 1.192, 2008/05/15 01:00:37
|
version 1.194, 2008/05/20 18:19:28
|
Line 137 sub handler {
|
Line 137 sub handler {
|
# Is this an ad-hoc CC-role? |
# Is this an ad-hoc CC-role? |
if (my ($domain,$coursenum) = |
if (my ($domain,$coursenum) = |
($envkey =~ m-^form\.cc\./($match_domain)/($match_courseid)$-)) { |
($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}) { |
if ($dcroles{$domain}) { |
&check_privs($domain,$coursenum,$then,$now,'cc'); |
&check_privs($domain,$coursenum,$then,$now,'cc'); |
} |
} |
last; |
last; |
} |
} |
# Is this a recent 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)$-)) { |
# See if still allowed |
# 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}) && (&is_author_homeserver($user,$domain))) { |
if ($dcroles{$domain}) { |
&check_privs($domain,$user,$then,$now,'ca'); |
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 { |
} else { |
delete($env{$envkey}); |
delete($env{$envkey}); |
} |
} |
last; |
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; |
|
} |
|
} |
} |
} |
} |
|
|
Line 770 ENDHEADER
|
Line 750 ENDHEADER
|
|
|
if ($numdc > 0) { |
if ($numdc > 0) { |
$r->print(&coursepick_jscript()); |
$r->print(&coursepick_jscript()); |
$r->print(&Apache::loncommon::coursebrowser_javascript()); |
$r->print(&Apache::loncommon::coursebrowser_javascript(). |
|
&Apache::loncommon::authorbrowser_javascript()); |
} |
} |
&print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,\%roletext); |
&print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,\%roletext); |
my $tremark=''; |
my $tremark=''; |
Line 1025 sub build_roletext {
|
Line 1006 sub build_roletext {
|
return $roletext; |
return $roletext; |
} |
} |
|
|
sub is_author_homeserver { |
sub check_author_homeserver { |
my ($uname,$udom)=@_; |
my ($uname,$udom)=@_; |
|
if (($uname eq '') || ($udom eq '')) { |
|
return ('fail',''); |
|
} |
my $home = &Apache::lonnet::homeserver($uname,$udom); |
my $home = &Apache::lonnet::homeserver($uname,$udom); |
|
if (&Apache::lonnet::host_domain($home) ne $udom) { |
|
return ('fail',$home); |
|
} |
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
foreach my $id (@ids) { |
if (grep(/^\Q$home\E$/,@ids)) { |
if ($id eq $home) { |
return ('ok',$home); |
if (-e "/home/".$uname."/public_html") { |
} else { |
return 1; |
return ('switchserver',$home); |
} |
|
} |
|
} |
} |
return 0; |
|
} |
} |
|
|
sub check_privs { |
sub check_privs { |
Line 1138 sub check_forcc {
|
Line 1122 sub check_forcc {
|
} |
} |
|
|
sub courselink { |
sub courselink { |
my ($dcdom,$rowtype,$selecttype) = @_; |
my ($dcdom,$rowtype) = @_; |
my $courseform=&Apache::loncommon::selectcourse_link |
my $courseform=&Apache::loncommon::selectcourse_link |
('rolechoice','dccourse'.$rowtype.'_'.$dcdom, |
('rolechoice','dccourse'.$rowtype.'_'.$dcdom, |
'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'. |
'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'. |
Line 1190 END
|
Line 1174 END
|
return $verify_script; |
return $verify_script; |
} |
} |
|
|
|
sub coauthorlink { |
|
my ($dcdom,$rowtype) = @_; |
|
my $coauthorform=&Apache::loncommon::selectauthor_link('rolechoice',$dcdom); |
|
my $hiddenitems = '<input type="hidden" name="adhoccauname'.$rowtype.'_'.$dcdom.'" value="" />'; |
|
return $coauthorform.$hiddenitems; |
|
} |
|
|
sub display_cc_role { |
sub display_cc_role { |
my $rolekey = shift; |
my $rolekey = shift; |
my $roletext; |
my $roletext; |
Line 1228 sub adhoc_roles_row {
|
Line 1219 sub adhoc_roles_row {
|
' <td colspan="5"><table><tr><td><span class="LC_rolesinfo">' |
' <td colspan="5"><table><tr><td><span class="LC_rolesinfo">' |
.&mt('[_1]Ad hoc[_2] roles in domain [_3] --', |
.&mt('[_1]Ad hoc[_2] roles in domain [_3] --', |
'<span class="LC_cusr_emph">','</span>',$dcdom).'</span></td><td>'; |
'<span class="LC_cusr_emph">','</span>',$dcdom).'</span></td><td>'; |
my $selectlink = &courselink($dcdom,$rowtype); |
my $selectcclink = &courselink($dcdom,$rowtype); |
my $ccrole = &Apache::lonnet::plaintext('cc'); |
my $ccrole = &Apache::lonnet::plaintext('cc'); |
my $carole = &Apache::lonnet::plaintext('ca'); |
my $carole = &Apache::lonnet::plaintext('ca'); |
my $inputlink='<input type="text" size="10" name="adhoccauname'.$rowtype.'.'.$dcdom.'" />'; |
my $selectcalink = &coauthorlink($dcdom,$rowtype); |
my $gobutton='<input type="submit" name="adhocca./'.$dcdom.'" value="'.&mt('Go').'" />'; |
|
$output.= '<span class="LC_rolesinfo">'. |
$output.= '<span class="LC_rolesinfo">'. |
&mt('[_1]: [_2]',$ccrole,$selectlink). |
&mt('[_1]: [_2]',$ccrole,$selectcclink). |
'</span><br /></td><td> </td><td><span class="LC_rolesinfo">'. |
'</span><br /></td><td> </td><td><span class="LC_rolesinfo">'. |
&mt('[_1]: [_2] [_3]',$carole,$inputlink,$gobutton). |
&mt('[_1]: [_2]',$carole,$selectcalink). |
'</span><br /></td></tr></table></td></tr>'. |
'</span><br /></td></tr></table></td></tr>'. |
'<tr><td colspan="5" height="3"></td></tr>'."\n"; |
'<tr><td colspan="5" height="3"></td></tr>'."\n"; |
return $output; |
return $output; |