version 1.152, 2006/05/30 21:16:40
|
version 1.169, 2006/10/20 22:05:55
|
Line 40 use Apache::lonhtmlcommon;
|
Line 40 use Apache::lonhtmlcommon;
|
use Apache::lonannounce; |
use Apache::lonannounce; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonpageflip(); |
use Apache::lonpageflip(); |
|
use Apache::lonnavdisplay(); |
use GDBM_File; |
use GDBM_File; |
use LONCAPA; |
use LONCAPA; |
|
|
Line 53 sub redirect_user {
|
Line 54 sub redirect_user {
|
my $swinfo=&Apache::lonmenu::rawconfig(); |
my $swinfo=&Apache::lonmenu::rawconfig(); |
my $navwindow; |
my $navwindow; |
if ($launch_nav eq 'on') { |
if ($launch_nav eq 'on') { |
$navwindow.=&Apache::lonnavmaps::launch_win('now',undef,undef, |
$navwindow.=&Apache::lonnavdisplay::launch_win('now',undef,undef, |
($url =~ m-^/adm/whatsnew-)); |
($url =~ m-^/adm/whatsnew-)); |
} else { |
} else { |
$navwindow.=&Apache::lonnavmaps::close(); |
$navwindow.=&Apache::lonnavmaps::close(); |
} |
} |
Line 88 sub error_page {
|
Line 89 sub error_page {
|
&Apache::lonmenu::rawconfig().'</script>'. |
&Apache::lonmenu::rawconfig().'</script>'. |
'<p>'.&mt('The following problems occurred:'). |
'<p>'.&mt('The following problems occurred:'). |
$error. |
$error. |
'</p><br /><a href="'.$dest.'>'.&mt('Continue').'</a>'. |
'</p><br /><a href="'.$dest.'">'.&mt('Continue').'</a>'. |
&Apache::loncommon::end_page()); |
&Apache::loncommon::end_page()); |
} |
} |
|
|
Line 149 sub handler {
|
Line 150 sub handler {
|
|
|
# store role if recent_role list being kept |
# store role if recent_role list being kept |
if ($env{'environment.recentroles'}) { |
if ($env{'environment.recentroles'}) { |
|
my %frozen_roles = |
|
&Apache::lonhtmlcommon::get_recent_frozen('roles',$env{'environment.recentrolesn'}); |
&Apache::lonhtmlcommon::store_recent('roles', |
&Apache::lonhtmlcommon::store_recent('roles', |
$trolecode,' '); |
$trolecode,' ',$frozen_roles{$trolecode}); |
} |
} |
|
|
|
|
Line 264 ENDENTERKEY
|
Line 267 ENDENTERKEY
|
} |
} |
return OK; |
return OK; |
} else { |
} else { |
my $type = 'Course/Group'; |
if (!$env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
|
if (defined($env{'course.'. |
|
$env{'request.course.id'}.'.type'})) { |
|
$type = $env{'course.'. |
|
$env{'request.course.id'}.'.type'}; |
|
} |
|
&Apache::lonnet::appenv( |
&Apache::lonnet::appenv( |
"request.course.id" => $cdom.'_'.$cnum); |
"request.course.id" => $cdom.'_'.$cnum); |
$furl='/adm/roles?tryagain=1'; |
$furl='/adm/roles?tryagain=1'; |
$msg= |
$msg= |
'<h1><font color="red">'. |
'<h1><span class="LC_error">'. |
&mt('Could not initialize [_1] at this time.',lc($type)). |
&mt('Could not initialize [_1] at this time.', |
'</font></h1><h3>'.&mt('Please try again.').'</h3>'.$ferr; |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
|
'</span></h1><h3>'.&mt('Please try again.').'</h3>'.$ferr; |
} |
} |
if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } |
if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } |
&Apache::lonnet::appenv('request.role.adv'=>$tadv); |
&Apache::lonnet::appenv('request.role.adv'=>$tadv); |
Line 305 ENDENTERKEY
|
Line 303 ENDENTERKEY
|
) { |
) { |
my $startpage = &courseloadpage($courseid); |
my $startpage = &courseloadpage($courseid); |
unless ($startpage eq 'firstres') { |
unless ($startpage eq 'firstres') { |
$msg = &mt('Entering [_1] ....',lc($type)); |
$msg = &mt('Entering [_1] ....', |
|
$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, |
$env{'environment.remotenavmap'}); |
$env{'environment.remotenavmap'}); |
Line 314 ENDENTERKEY
|
Line 313 ENDENTERKEY
|
} |
} |
} |
} |
# Are we allowed to look at the first resource? |
# Are we allowed to look at the first resource? |
if (!&Apache::lonnet::allowed('bre',$furl)) { |
if ($furl !~ m|^/adm/|) { |
# Guess not ... |
# Guess not ... |
$furl=&Apache::lonpageflip::first_accessible_resource(); |
$furl=&Apache::lonpageflip::first_accessible_resource(); |
} |
} |
$msg = &mt('Entering [_1] ...',lc($type)); |
$msg = &mt('Entering [_1] ...', |
&redirect_user($r,&mt('Entering [_1]',$type), |
$env{'course.'.$courseid.'.description'}); |
|
&redirect_user($r,&mt('Entering [_1]', |
|
$env{'course.'.$courseid.'.description'}), |
$furl,$msg, |
$furl,$msg, |
$env{'environment.remotenavmap'}); |
$env{'environment.remotenavmap'}); |
} |
} |
Line 364 ENDENTERKEY
|
Line 365 ENDENTERKEY
|
my $start_page=&Apache::loncommon::start_page('User Roles'); |
my $start_page=&Apache::loncommon::start_page('User Roles'); |
my $standby=&mt('Role selected. Please stand by.'); |
my $standby=&mt('Role selected. Please stand by.'); |
$standby=~s/\n/\\n/g; |
$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>'; |
|
$r->print(<<ENDHEADER); |
$r->print(<<ENDHEADER); |
$start_page |
$start_page |
$helptag<br /> |
<br /> |
<script> |
<script> |
$swinfo |
$swinfo |
window.focus(); |
window.focus(); |
Line 424 ENDHEADER
|
Line 425 ENDHEADER
|
} else { |
} else { |
if ($env{'user.error.msg'}) { |
if ($env{'user.error.msg'}) { |
$r->print( |
$r->print( |
'<h3><font color="red">'. |
'<h3><span class="LC_error">'. |
&mt('You need to choose another user role or enter a specific course for this function').'</font></h3>'); |
&mt('You need to choose another user role or enter a specific course for this function').'</span></h3>'); |
} |
} |
} |
} |
# -------------------------------------------------------- Choice or no choice? |
# -------------------------------------------------------- Choice or no choice? |
Line 485 ENDHEADER
|
Line 486 ENDHEADER
|
$tstatus='selected'; |
$tstatus='selected'; |
} |
} |
my $tbg; |
my $tbg; |
if (($tstatus eq 'is') || ($tstatus eq 'selected') || |
if (($tstatus eq 'is') |
($env{'form.showall'})) { |
|| ($tstatus eq 'selected') |
|
|| ($tstatus eq 'will') |
|
|| ($tstatus eq 'future') |
|
|| ($env{'form.showall'})) { |
if ($tstatus eq 'is') { |
if ($tstatus eq 'is') { |
$tbg='#77FF77'; |
$tbg='#77FF77'; |
$tfont='#003300'; |
$tfont='#003300'; |
Line 518 ENDHEADER
|
Line 522 ENDHEADER
|
if ($tremark) { $tremark.='<br />'; } |
if ($tremark) { $tremark.='<br />'; } |
$tremark.=&mt('Defined by ').$rauthor. |
$tremark.=&mt('Defined by ').$rauthor. |
&mt(' at ').$rdomain.'.'; |
&mt(' at ').$rdomain.'.'; |
$trole=$rrole; |
} |
} else { |
$trole=Apache::lonnet::plaintext($role); |
$trole=Apache::lonnet::plaintext($role); |
|
} |
|
my $ttype; |
my $ttype; |
my $twhere; |
my $twhere; |
my ($tdom,$trest,$tsection)= |
my ($tdom,$trest,$tsection)= |
Line 565 ENDHEADER
|
Line 567 ENDHEADER
|
$tremark.=&Apache::lonhtmlcommon::authorbombs('/res/'.$tdom.'/'.$env{'user.name'}.'/'); |
$tremark.=&Apache::lonhtmlcommon::authorbombs('/res/'.$tdom.'/'.$env{'user.name'}.'/'); |
$sortkey=$role; |
$sortkey=$role; |
} elsif ($trest) { |
} elsif ($trest) { |
$ttype='Course'; |
|
my $tcourseid=$tdom.'_'.$trest; |
my $tcourseid=$tdom.'_'.$trest; |
if (defined($env{'course.'.$tcourseid.'.type'})) { |
$ttype = &Apache::loncommon::course_type($tcourseid); |
$ttype = $env{'course.'.$tcourseid.'.type'}; |
$trole = &Apache::lonnet::plaintext($role,$ttype); |
if ($ttype eq 'Group') { |
|
$trole = &Apache::loncommon::convert_role($trole, |
|
$ttype); |
|
} |
|
} |
|
if ($env{'course.'.$tcourseid.'.description'}) { |
if ($env{'course.'.$tcourseid.'.description'}) { |
$twhere=$env{'course.'.$tcourseid.'.description'}; |
$twhere=$env{'course.'.$tcourseid.'.description'}; |
$sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey; |
$sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey; |
Line 592 ENDHEADER
|
Line 588 ENDHEADER
|
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom,$tfont). |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom,$tfont). |
'</font>'; |
'</font>'; |
$ttype = $newhash{'type'}; |
$ttype = $newhash{'type'}; |
if ($ttype eq 'Group') { |
$trole = &Apache::lonnet::plaintext($role,$ttype); |
$trole = &Apache::loncommon::convert_role( |
|
$trole,$ttype); |
|
} |
|
} else { |
} else { |
$twhere=&mt('Currently not available'); |
$twhere=&mt('Currently not available'); |
$env{'course.'.$tcourseid.'.description'}=$twhere; |
$env{'course.'.$tcourseid.'.description'}=$twhere; |
Line 754 ENDHEADER
|
Line 747 ENDHEADER
|
$ttype='Construction Space'; |
$ttype='Construction Space'; |
$twhere='User: '.$trest.', Domain: '.$tdom; |
$twhere='User: '.$trest.', Domain: '.$tdom; |
} else { |
} else { |
$ttype='Course'; |
$ttype= |
if (defined($env{'course.'.$tdom.'_'.$trest.'.type'})) { |
&Apache::loncommon::course_type($tdom.'_'.$trest); |
$ttype = $env{'course.'.$tdom.'_'.$trest.'.type'}; |
|
} |
|
$twhere=$env{'course.'.$tdom.'_'.$trest.'.description'}; |
$twhere=$env{'course.'.$tdom.'_'.$trest.'.description'}; |
if ($tsec) { |
if ($tsec) { |
$twhere.=' (Section: '.$tsec.')'; |
$twhere.=' (Section: '.$tsec.')'; |
Line 844 sub build_roletext {
|
Line 835 sub build_roletext {
|
$roletext.='<td'.$rowspan.'><a href="/adm/switchserver?'. |
$roletext.='<td'.$rowspan.'><a href="/adm/switchserver?'. |
$switchserver.'">'.&mt('Switch Server').'</a></td>'; |
$switchserver.'">'.&mt('Switch Server').'</a></td>'; |
} else { |
} else { |
$roletext.=('<td> </td>'); |
$roletext.=('<td'.$rowspan.'> </td>'); |
} |
} |
} elsif ($tstatus eq 'is') { |
} elsif ($tstatus eq 'is') { |
$roletext.='<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
$roletext.='<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
Line 864 sub build_roletext {
|
Line 855 sub build_roletext {
|
$roletext.='<td'.$rowspan.'> </td>'; |
$roletext.='<td'.$rowspan.'> </td>'; |
} |
} |
} |
} |
$tremark.=&Apache::lonannounce::showday(time,1, |
if ($trolecode !~ m/^(dc|ca|au|aa)\./) { |
&Apache::lonannounce::readcalendar($tdom.'_'.$trest)); |
$tremark.=&Apache::lonannounce::showday(time,1, |
|
&Apache::lonannounce::readcalendar($tdom.'_'.$trest)); |
|
} |
$roletext.='<td><font color="'.$tfont.'">'.$trole. |
$roletext.='<td><font color="'.$tfont.'">'.$trole. |
'</font></td><td><font color="'.$tfont.'">'.$twhere. |
'</font></td><td><font color="'.$tfont.'">'.$twhere. |
'</font></td><td><font color="'.$tfont.'">'.$tpstart. |
'</font></td><td><font color="'.$tfont.'">'.$tpstart. |
Line 998 sub display_cc_role {
|
Line 990 sub display_cc_role {
|
if ($rolekey =~ m-^user\.role.cc\./(\w+)/(\w+)$-) { |
if ($rolekey =~ m-^user\.role.cc\./(\w+)/(\w+)$-) { |
my $tcourseid = $1.'_'.$2; |
my $tcourseid = $1.'_'.$2; |
my $trolecode = 'cc./'.$1.'/'.$2; |
my $trolecode = 'cc./'.$1.'/'.$2; |
my $trole = Apache::lonnet::plaintext('cc'); |
|
my $twhere; |
my $twhere; |
my $ttype; |
my $ttype; |
my $tbg='#77FF77'; |
my $tbg='#77FF77'; |
Line 1009 sub display_cc_role {
|
Line 1000 sub display_cc_role {
|
' <font size="-2">'. |
' <font size="-2">'. |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$2,$1,$tfont). |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$2,$1,$tfont). |
'</font>'; |
'</font>'; |
$ttype=$newhash{'type'}; |
$ttype = $newhash{'type'}; |
if ($ttype eq 'Group') { |
|
$trole = &Apache::loncommon::convert_role($trole,$ttype); |
|
} |
|
} else { |
} else { |
$twhere=&mt('Currently not available'); |
$twhere=&mt('Currently not available'); |
$env{'course.'.$tcourseid.'.description'}=$twhere; |
$env{'course.'.$tcourseid.'.description'}=$twhere; |
$ttype = 'Unavailable'; |
|
} |
} |
|
my $trole = &Apache::lonnet::plaintext('cc',$ttype); |
$twhere.="<br />".&mt('Domain').":".$1; |
$twhere.="<br />".&mt('Domain').":".$1; |
$roletext = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$tfont,$trole,$twhere,'','','',1,''); |
$roletext = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$tfont,$trole,$twhere,'','','',1,''); |
} |
} |
Line 1027 sub display_cc_role {
|
Line 1015 sub display_cc_role {
|
|
|
sub allcourses_row { |
sub allcourses_row { |
my ($dcdom,$rowtype) = @_; |
my ($dcdom,$rowtype) = @_; |
my $ccrole = Apache::lonnet::plaintext('cc'); |
|
my $output = '<tr bgcolor="#77FF77">'. |
my $output = '<tr bgcolor="#77FF77">'. |
' <td colspan="5">'; |
' <td colspan="5">'; |
foreach my $type ('Course','Group') { |
foreach my $type ('Course','Group') { |
my $selectlink = &courselink($dcdom,$rowtype,$type); |
my $selectlink = &courselink($dcdom,$rowtype,$type); |
if ($type eq 'Group') { |
my $ccrole = &Apache::lonnet::plaintext('cc',$type); |
$ccrole = &Apache::loncommon::convert_role($ccrole,$type); |
|
} |
|
$output.= '<font color="#002200">'.$ccrole.'</font>'. |
$output.= '<font color="#002200">'.$ccrole.'</font>'. |
' <b>'.$selectlink.'</b>'. |
' <b>'.$selectlink.'</b>'. |
' from '.&mt('Domain').' '.$dcdom.'<br />'; |
' from '.&mt('Domain').' '.$dcdom.'<br />'; |
Line 1053 sub set_privileges {
|
Line 1038 sub set_privileges {
|
my $area = '/'.$dcdom.'/'.$pickedcourse; |
my $area = '/'.$dcdom.'/'.$pickedcourse; |
my $role = 'cc'; |
my $role = 'cc'; |
my $spec = $role.'.'.$area; |
my $spec = $role.'.'.$area; |
my $userroles = &Apache::lonnet::set_arearole($role,$area,'','',$dcdom,$env{'user.name'}); |
my %userroles = &Apache::lonnet::set_arearole($role,$area,'','', |
|
$env{'user.domain'}, |
|
$env{'user.name'}); |
my %ccrole = (); |
my %ccrole = (); |
&Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area); |
&Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area); |
my ($author,$adv)= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole); |
my ($author,$adv)= &Apache::lonnet::set_userprivs(\%userroles,\%ccrole); |
my @newprivs = split/\n/,$userroles; |
&Apache::lonnet::appenv(%userroles); |
my %newccroles = (); |
|
foreach (@newprivs) { |
|
my ($key,$val) = split/=/,$_; |
|
$newccroles{$key} = $val; |
|
} |
|
&Apache::lonnet::appenv(%newccroles); |
|
&Apache::lonnet::log($env{'user.domain'}, |
&Apache::lonnet::log($env{'user.domain'}, |
$env{'user.name'}, |
$env{'user.name'}, |
$env{'user.home'}, |
$env{'user.home'}, |