version 1.132, 2005/11/08 21:54:03
|
version 1.146, 2006/03/16 19:19:59
|
Line 51 sub redirect_user {
|
Line 51 sub redirect_user {
|
my $navwindow; |
my $navwindow; |
if ($launch_nav eq 'on') { |
if ($launch_nav eq 'on') { |
$navwindow.=&Apache::lonnavmaps::launch_win('now',undef,undef, |
$navwindow.=&Apache::lonnavmaps::launch_win('now',undef,undef, |
($url eq '/adm/whatsnew')); |
($url =~ m-^/adm/whatsnew-)); |
} else { |
} else { |
$navwindow.=&Apache::lonnavmaps::close(); |
$navwindow.=&Apache::lonnavmaps::close(); |
} |
} |
Line 89 sub handler {
|
Line 89 sub handler {
|
|
|
# ================================================================== Roles Init |
# ================================================================== Roles Init |
if ($env{'form.selectrole'}) { |
if ($env{'form.selectrole'}) { |
|
if ($env{'form.newrole'}) { |
|
$env{'form.'.$env{'form.newrole'}}=1; |
|
} |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
my %temp=('logout_'.$env{'request.course.id'} => time); |
my %temp=('logout_'.$env{'request.course.id'} => time); |
&Apache::lonnet::put('email_status',\%temp); |
&Apache::lonnet::put('email_status',\%temp); |
Line 105 sub handler {
|
Line 108 sub handler {
|
# Check if user is a DC trying to enter a course and needs privs to be created |
# Check if user is a DC trying to enter a course and needs privs to be created |
if ($numdc > 0) { |
if ($numdc > 0) { |
foreach my $envkey (keys %env) { |
foreach my $envkey (keys %env) { |
if ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-) { |
if (my ($domain,$coursenum) = |
if ($dcroles{$1}) { |
($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-)) { |
my $cckey = 'user.role.cc./'.$1.'/'.$2; |
if ($dcroles{$domain}) { |
&check_privs($cckey,$then,$now); |
&check_privs($domain,$coursenum,$then,$now); |
} |
} |
last; |
last; |
} |
} |
Line 123 sub handler {
|
Line 126 sub handler {
|
if ($tstatus eq 'is') { |
if ($tstatus eq 'is') { |
$where=~s/^\///; |
$where=~s/^\///; |
my ($cdom,$cnum,$csec)=split(/\//,$where); |
my ($cdom,$cnum,$csec)=split(/\//,$where); |
|
# check for course groups |
|
my %coursegroups = &Apache::lonnet::get_active_groups( |
|
$env{'user.domain'},$env{'user.name'},$cdom, $cnum); |
|
my $cgrps = join(':',keys(%coursegroups)); |
|
|
# store role if recent_role list being kept |
# store role if recent_role list being kept |
if ($env{'environment.recentroles'}) { |
if ($env{'environment.recentroles'}) { |
&Apache::lonhtmlcommon::store_recent('roles', |
&Apache::lonhtmlcommon::store_recent('roles', |
Line 224 ENDENTERKEY
|
Line 232 ENDENTERKEY
|
&Apache::lonnet::appenv( |
&Apache::lonnet::appenv( |
'request.role' => $trolecode, |
'request.role' => $trolecode, |
'request.role.domain' => $cdom, |
'request.role.domain' => $cdom, |
'request.course.sec' => $csec); |
'request.course.sec' => $csec, |
|
'request.course.groups' => $cgrps); |
my $tadv=0; |
my $tadv=0; |
my $msg=&mt('Entering course ...'); |
my $msg=&mt('Entering course ...'); |
|
|
Line 262 ENDENTERKEY
|
Line 271 ENDENTERKEY
|
'.course.helper.not.run'}) { |
'.course.helper.not.run'}) { |
$furl = "/adm/helper/course.initialization.helper"; |
$furl = "/adm/helper/course.initialization.helper"; |
# Send the user to the course they selected |
# Send the user to the course they selected |
} elsif (($env{'request.course.fn'}) |
} elsif ($env{'request.course.id'}) { |
&& ($role eq 'cc' && ($env{'environment.course_init_display'} ne 'firstres'))) { |
if (&Apache::lonnet::allowed('whn', |
$msg = &mt('Entering course ....'); |
$env{'request.course.id'}) |
&redirect_user($r,&mt('New in course'), |
|| &Apache::lonnet::allowed('whn', |
'/adm/whatsnew',$msg, |
$env{'request.course.id'}.'/' |
$env{'environment.remotenavmap'}); |
.$env{'request.course.sec'}) |
return OK; |
) { |
|
my $startpage = &courseloadpage($courseid); |
|
unless ($startpage eq 'firstres') { |
|
$msg = &mt('Entering course ....'); |
|
&redirect_user($r,&mt('New in course'), |
|
'/adm/whatsnew?refpage=start',$msg, |
|
$env{'environment.remotenavmap'}); |
|
return OK; |
|
} |
|
} |
} |
} |
&redirect_user($r,&mt('Entering Course'), |
&redirect_user($r,&mt('Entering Course'), |
$furl,$msg, |
$furl,$msg, |
Line 312 ENDENTERKEY
|
Line 330 ENDENTERKEY
|
|
|
my $swinfo=&Apache::lonmenu::rawconfig(); |
my $swinfo=&Apache::lonmenu::rawconfig(); |
my $bodytag=&Apache::loncommon::bodytag('User Roles'); |
my $bodytag=&Apache::loncommon::bodytag('User Roles'); |
|
my $standby=&mt('Role selected. Please stand by.'); |
|
$standby=~s/\n/\\n/g; |
my $helptag='<table><tr><td>'.&Apache::loncommon::help_open_menu('','General Intro','General_Intro','User Roles',1,undef,undef,undef,undef,,&mt("Click here for help")).'</td></td></tr></table>'; |
my $helptag='<table><tr><td>'.&Apache::loncommon::help_open_menu('','General Intro','General_Intro','User Roles',1,undef,undef,undef,undef,,&mt("Click here for help")).'</td></td></tr></table>'; |
$r->print(<<ENDHEADER); |
$r->print(<<ENDHEADER); |
<html> |
<html> |
Line 323 $helptag<br />
|
Line 343 $helptag<br />
|
<script> |
<script> |
$swinfo |
$swinfo |
window.focus(); |
window.focus(); |
|
|
|
active=true; |
|
|
|
function enterrole (thisform,rolecode,buttonname) { |
|
if (active) { |
|
active=false; |
|
document.title='$standby'; |
|
window.status='$standby'; |
|
thisform.newrole.value=rolecode; |
|
thisform.submit(); |
|
} else { |
|
alert('$standby'); |
|
} |
|
} |
</script> |
</script> |
ENDHEADER |
ENDHEADER |
|
|
Line 396 ENDHEADER
|
Line 430 ENDHEADER
|
$r->print('<form method="post" name="rolechoice" action="'.(($fn)?$fn:$r->uri).'">'); |
$r->print('<form method="post" name="rolechoice" action="'.(($fn)?$fn:$r->uri).'">'); |
$r->print('<input type="hidden" name="orgurl" value="'.$fn.'" />'); |
$r->print('<input type="hidden" name="orgurl" value="'.$fn.'" />'); |
$r->print('<input type="hidden" name="selectrole" value="1" />'); |
$r->print('<input type="hidden" name="selectrole" value="1" />'); |
|
$r->print('<input type="hidden" name="newrole" value="" />'); |
} |
} |
if ($env{'user.adv'}) { |
if ($env{'user.adv'}) { |
$r->print( |
$r->print( |
Line 416 ENDHEADER
|
Line 451 ENDHEADER
|
if ($envkey=~/^user\.role\./) { |
if ($envkey=~/^user\.role\./) { |
my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont); |
my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont); |
&role_status($envkey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); |
&role_status($envkey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); |
next if (!defined($role) || $role eq ''); |
next if (!defined($role) || $role eq '' || $role =~ /^gr/); |
$tremark=''; |
$tremark=''; |
$tpstart=' '; |
$tpstart=' '; |
$tpend=' '; |
$tpend=' '; |
Line 500 ENDHEADER
|
Line 535 ENDHEADER
|
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
if (!$allowed) { |
if (!$allowed) { |
$button=0; |
$button=0; |
$switchserver=&Apache::lonnet::escape('http://'. |
$switchserver='otherserver='.$home.'&role='.$trolecode; |
$Apache::lonnet::hostname{$home}. |
|
'/adm/login?domain='.$env{'user.domain'}. |
|
'&username='.$env{'user.name'}. |
|
'&firsturl=/priv/'.$env{'user.name'}.'/'); |
|
} |
} |
#next if ($home eq 'no_host'); |
#next if ($home eq 'no_host'); |
$home = $Apache::lonnet::hostname{$home}; |
$home = $Apache::lonnet::hostname{$home}; |
Line 609 ENDHEADER
|
Line 640 ENDHEADER
|
foreach (sort(keys(%recent_roles))) { |
foreach (sort(keys(%recent_roles))) { |
if (defined($roletext{'user.role.'.$_})) { |
if (defined($roletext{'user.role.'.$_})) { |
$output.=$roletext{'user.role.'.$_}; |
$output.=$roletext{'user.role.'.$_}; |
|
if ($_ =~ m-dc\./(\w+)/- && $dcroles{$1}) { |
|
$output .= &allcourses_row($1,'recent'); |
|
} |
} elsif ($numdc > 0) { |
} elsif ($numdc > 0) { |
unless ($_ =~/^error\:/) { |
unless ($_ =~/^error\:/) { |
$output.=&display_cc_role('user.role.'.$_); |
$output.=&display_cc_role('user.role.'.$_); |
Line 635 ENDHEADER
|
Line 669 ENDHEADER
|
$output.=$roletext{$sortrole{$which}}; |
$output.=$roletext{$sortrole{$which}}; |
if ($sortrole{$which} =~ m-dc\./(\w+)/-) { |
if ($sortrole{$which} =~ m-dc\./(\w+)/-) { |
if ($dcroles{$1}) { |
if ($dcroles{$1}) { |
$output .= &allcourses_row($1); |
$output .= &allcourses_row($1,''); |
} |
} |
} |
} |
} |
} |
Line 659 ENDHEADER
|
Line 693 ENDHEADER
|
} |
} |
unless ($nochoose) { |
unless ($nochoose) { |
if ($env{'request.role'} ne 'cm') { |
if ($env{'request.role'} ne 'cm') { |
$r->print('<td><input type=submit value="'. |
$r->print('<td><input type="submit" value="'. |
&mt('Select').'" name="cm"></td>'); |
&mt('Select').'" name="cm"></td>'); |
} else { |
} else { |
$r->print('<td> </td>'); |
$r->print('<td> </td>'); |
Line 770 sub build_roletext {
|
Line 804 sub build_roletext {
|
: ' rowspan="2" '; |
: ' rowspan="2" '; |
|
|
unless ($nochoose) { |
unless ($nochoose) { |
|
my $buttonname=$trolecode; |
|
$buttonname=~s/\W//g; |
if (!$button) { |
if (!$button) { |
if ($switchserver) { |
if ($switchserver) { |
$roletext.='<td'.$rowspan.'><a href="/adm/switchserver?'. |
$roletext.='<td'.$rowspan.'><a href="/adm/switchserver?'. |
Line 778 sub build_roletext {
|
Line 814 sub build_roletext {
|
$roletext.=('<td> </td>'); |
$roletext.=('<td> </td>'); |
} |
} |
} elsif ($tstatus eq 'is') { |
} elsif ($tstatus eq 'is') { |
$roletext.=('<td'.$rowspan.'><input type=submit value="'. |
$roletext.='<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
&mt('Select').'" name="'. |
&mt('Select').'" onClick="javascript:enterrole(this.form,\''. |
$trolecode.'"></td>'); |
$trolecode."','".$buttonname.'\');"></td>'; |
} elsif ($tryagain) { |
} elsif ($tryagain) { |
$roletext.= |
$roletext.= |
'<td'.$rowspan.'><input type=submit value="'. |
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
&mt('Try Selecting Again').'" name="'.$trolecode.'"></td>'; |
&mt('Try Selecting Again').'" onClick="javascript:enterrole(this.form,\''. |
|
$trolecode."','".$buttonname.'\');"></td>'; |
} elsif ($advanced) { |
} elsif ($advanced) { |
$roletext.= |
$roletext.= |
'<td'.$rowspan.'><input type=submit value="'. |
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
&mt('Re-Initialize').'" name="'.$trolecode.'"></td>'; |
&mt('Re-Initialize').'" onClick="javascript:enterrole(this.form,\''. |
|
$trolecode."','".$buttonname.'\');"></td>'; |
} else { |
} else { |
$roletext.='<td'.$rowspan.'> </td>'; |
$roletext.='<td'.$rowspan.'> </td>'; |
} |
} |
Line 809 sub build_roletext {
|
Line 847 sub build_roletext {
|
} |
} |
|
|
sub check_privs { |
sub check_privs { |
my ($cckey,$then,$now) = @_; |
my ($cdom,$cnum,$then,$now) = @_; |
|
my $cckey = 'user.role.cc./'.$cdom.'/'.$cnum; |
if ($env{$cckey}) { |
if ($env{$cckey}) { |
my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont); |
my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont); |
&role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); |
&role_status($cckey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); |
unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) { |
unless (($tstatus eq 'is') || ($tstatus eq 'will_not')) { |
&set_privileges($1,$2); |
&set_privileges($cdom,$cnum); |
} |
} |
} else { |
} else { |
&set_privileges($1,$2); |
&set_privileges($cdom,$cnum); |
} |
} |
} |
} |
|
|
Line 843 sub check_fordc {
|
Line 882 sub check_fordc {
|
} |
} |
|
|
sub courselink { |
sub courselink { |
my ($dcdom) = @_; |
my ($dcdom,$rowtype) = @_; |
my $courseform=&Apache::loncommon::selectcourse_link |
my $courseform=&Apache::loncommon::selectcourse_link |
('rolechoice','dccourse_'.$dcdom,'dcdomain_'.$dcdom,'coursedesc_'.$dcdom,$dcdom); |
('rolechoice','dccourse'.$rowtype.'_'.$dcdom,'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'.$dcdom,$dcdom); |
my $hiddenitems = '<input type="hidden" name="dcdomain_'.$dcdom.'" value="'.$dcdom.'" />'. |
my $hiddenitems = '<input type="hidden" name="dcdomain'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'. |
'<input type="hidden" name="origdom_'.$dcdom.'" value="'.$dcdom.'" />'. |
'<input type="hidden" name="origdom'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'. |
'<input type="hidden" name="dccourse_'.$dcdom.'" value="" />'. |
'<input type="hidden" name="dccourse'.$rowtype.'_'.$dcdom.'" value="" />'. |
'<input type="hidden" name="coursedesc_'.$dcdom.'" value="" />'; |
'<input type="hidden" name="coursedesc'.$rowtype.'_'.$dcdom.'" value="" />'; |
return $courseform.$hiddenitems; |
return $courseform.$hiddenitems; |
} |
} |
|
|
Line 890 END
|
Line 929 END
|
} |
} |
|
|
sub processpick { |
sub processpick { |
my $dcdom = shift; |
|
my $process_pick = <<"END"; |
my $process_pick = <<"END"; |
<script> |
<script> |
function process_pick(dom) { |
function process_pick(dom) { |
var numbutton = getIndex(dom) |
var pickedCourse=opener.document.rolechoice.$env{'form.cnumelement'}.value; |
var pickedCourse = opener.document.rolechoice.dccourse_$dcdom.value |
var pickedDomain=opener.document.rolechoice.$env{'form.cdomelement'}.value; |
var pickedDomain = opener.document.rolechoice.dcdomain_$dcdom.value |
var okDomain = 0; |
if (opener.document.rolechoice.dcdomain_$dcdom.value == opener.document.rolechoice.origdom_$dcdom.value) { |
|
|
if (pickedDomain == dom) { |
if (pickedCourse != '') { |
if (pickedCourse != '') { |
if (numbutton != -1) { |
var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse |
var courseTarget = "cc./"+pickedDomain+"/"+pickedCourse |
opener.document.title='Role selected. Please stand by.'; |
opener.document.rolechoice.elements[numbutton].name = courseTarget |
opener.status='Role selected. Please stand by.'; |
opener.document.rolechoice.submit() |
opener.document.rolechoice.newrole.value=courseTarget |
} |
opener.document.rolechoice.submit() |
} |
} |
|
} else { |
|
alert("You may only use this screen to select courses in the current domain: "+dom+"\\nPlease return to the roles page window and click the 'Select Course' link for domain: "+pickedDomain+",\\n if you are a Domain Coordinator in that domain, and wish to become a Course Coordinator in a course in the domain"); |
} |
} |
} |
} |
|
|
function getIndex(dom) { |
|
var callername = 'ccpick_'+dom |
|
for (var i=0;i<opener.document.rolechoice.elements.length;i++) { |
|
var elemname = opener.document.rolechoice.elements[i].name |
|
if (elemname == callername) { |
|
return i; |
|
} |
|
} |
|
return -1; |
|
} |
|
</script> |
</script> |
END |
END |
return $process_pick; |
return $process_pick; |
Line 954 sub display_cc_role {
|
Line 985 sub display_cc_role {
|
} |
} |
|
|
sub allcourses_row { |
sub allcourses_row { |
my $dcdom = shift; |
my ($dcdom,$rowtype) = @_; |
my $ccrole = Apache::lonnet::plaintext('cc'); |
my $ccrole = Apache::lonnet::plaintext('cc'); |
my $selectlink = &courselink($dcdom); |
my $selectlink = &courselink($dcdom,$rowtype); |
my $output = '<tr bgcolor="#77FF77">'. |
my $output = '<tr bgcolor="#77FF77">'. |
'<input type="hidden" name="ccpick_'.$dcdom.'" />'. |
|
'<input type="hidden" name="pick_'.$dcdom.'" value="1" />'. |
|
'<td colspan="5">'. |
'<td colspan="5">'. |
'<font color="#002200">'.$ccrole.'</font>'. |
'<font color="#002200">'.$ccrole.'</font>'. |
' <b>'.$selectlink.'</b>'. |
' <b>'.$selectlink.'</b>'. |
Line 994 sub set_privileges {
|
Line 1023 sub set_privileges {
|
$env{'user.home'}, |
$env{'user.home'}, |
"Role ".$role); |
"Role ".$role); |
&Apache::lonnet::appenv( |
&Apache::lonnet::appenv( |
'request.role' => $role, |
'request.role' => $spec, |
'request.role.domain' => $dcdom, |
'request.role.domain' => $dcdom, |
'request.course.sec' => ''); |
'request.course.sec' => ''); |
my $tadv=0; |
my $tadv=0; |
Line 1002 sub set_privileges {
|
Line 1031 sub set_privileges {
|
&Apache::lonnet::appenv('request.role.adv' => $tadv); |
&Apache::lonnet::appenv('request.role.adv' => $tadv); |
} |
} |
|
|
|
sub courseloadpage { |
|
my ($courseid) = @_; |
|
my $startpage; |
|
my %entry_settings = &Apache::lonnet::get('nohist_whatsnew', |
|
[$courseid.':courseinit']); |
|
my ($tmp) = %entry_settings; |
|
unless ($tmp =~ /^error: 2 /) { |
|
$startpage = $entry_settings{$courseid.':courseinit'}; |
|
} |
|
if ($startpage eq '') { |
|
if (exists($env{'environment.course_init_display'})) { |
|
$startpage = $env{'environment.course_init_display'}; |
|
} |
|
} |
|
return $startpage; |
|
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|