version 1.256.2.6.2.3, 2012/02/09 01:11:52
|
version 1.272, 2012/08/15 14:37:23
|
Line 141 use Apache::loncoursequeueadmin;
|
Line 141 use Apache::loncoursequeueadmin;
|
use GDBM_File; |
use GDBM_File; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
use HTML::Entities; |
use HTML::Entities; |
|
|
|
|
sub redirect_user { |
sub redirect_user { |
my ($r,$title,$url,$msg,$launch_nav) = @_; |
my ($r,$title,$url,$msg) = @_; |
$msg = $title if (! defined($msg)); |
$msg = $title if (! defined($msg)); |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::no_cache($r); |
&Apache::loncommon::no_cache($r); |
$r->send_http_header; |
$r->send_http_header; |
my $swinfo=&Apache::lonmenu::rawconfig(); |
|
my $navwindow; |
|
if ($launch_nav eq 'on') { |
|
$navwindow.=&Apache::lonnavdisplay::launch_win('now',undef,undef, |
|
($url =~ m-^/adm/whatsnew-)); |
|
} else { |
|
$navwindow.=&Apache::lonnavmaps::close(); |
|
} |
|
|
|
# Breadcrumbs |
# Breadcrumbs |
my $brcrum = [{'href' => $url, |
my $brcrum = [{'href' => $url, |
Line 171 sub redirect_user {
|
Line 163 sub redirect_user {
|
$url=~s/ /\%20/g; |
$url=~s/ /\%20/g; |
$r->print(<<ENDREDIR); |
$r->print(<<ENDREDIR); |
$start_page |
$start_page |
<script type="text/javascript"> |
|
// <![CDATA[ |
|
$swinfo |
|
// ]]> |
|
</script> |
|
$navwindow |
|
<p>$msg</p> |
<p>$msg</p> |
$end_page |
$end_page |
ENDREDIR |
ENDREDIR |
Line 239 sub handler {
|
Line 225 sub handler {
|
$updateresult .= &update_session_roles(); |
$updateresult .= &update_session_roles(); |
&Apache::lonnet::appenv({'user.update.time' => $now}); |
&Apache::lonnet::appenv({'user.update.time' => $now}); |
$update = $now; |
$update = $now; |
|
&Apache::loncoursequeueadmin::reqauthor_check(); |
|
} |
|
|
|
# -------------------------------------------------- Check for author requests |
|
my $reqauthor; |
|
if ($env{'form.requestauthor'}) { |
|
$reqauthor = &Apache::loncoursequeueadmin::process_reqauthor(\$update); |
} |
} |
|
|
my $envkey; |
my $envkey; |
Line 280 sub handler {
|
Line 273 sub handler {
|
"request.course.fn" => '', |
"request.course.fn" => '', |
"request.course.uri" => '', |
"request.course.uri" => '', |
"request.course.sec" => '', |
"request.course.sec" => '', |
|
"request.course.tied" => '', |
"request.role" => 'cm', |
"request.role" => 'cm', |
"request.role.adv" => $env{'user.adv'}, |
"request.role.adv" => $env{'user.adv'}, |
"request.role.domain" => $env{'user.domain'}}); |
"request.role.domain" => $env{'user.domain'}}); |
Line 514 ENDENTERKEY
|
Line 508 ENDENTERKEY
|
my $msg; |
my $msg; |
my ($furl,$ferr)= |
my ($furl,$ferr)= |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
unless (($ferr) || ($env{'form.switchrole'})) { |
|
&Apache::lonnet::put('nohist_crslastlogin', |
|
{$env{'user.name'}.':'.$env{'user.domain'}. |
|
':'.$csec.':'.$role => $now},$cdom,$cnum); |
|
} |
|
if (($env{'form.orgurl'}) && |
if (($env{'form.orgurl'}) && |
($env{'form.orgurl'}!~/^\/adm\/flip/)) { |
($env{'form.orgurl'}!~/^\/adm\/flip/)) { |
my $dest=$env{'form.orgurl'}; |
my $dest=$env{'form.orgurl'}; |
Line 538 ENDENTERKEY
|
Line 527 ENDENTERKEY
|
if ($dest =~ m{^/adm/coursedocs\?folderpath}) { |
if ($dest =~ m{^/adm/coursedocs\?folderpath}) { |
if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { |
if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
&update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum); |
&Apache::loncommon::update_content_constraints($cdom,$cnum,$chome, |
|
$cdom.'_'.$cnum); |
} |
} |
} |
} |
$r->internal_redirect($dest); |
$r->internal_redirect($dest); |
Line 582 ENDENTERKEY
|
Line 572 ENDENTERKEY
|
} |
} |
&redirect_user($r, &mt('Entering [_1]', |
&redirect_user($r, &mt('Entering [_1]', |
$env{'course.'.$courseid.'.description'}), |
$env{'course.'.$courseid.'.description'}), |
$dest, $msg, |
$dest, $msg); |
$env{'environment.remotenavmap'}); |
|
return OK; |
return OK; |
} |
} |
if (&Apache::lonnet::allowed('whn', |
if (&Apache::lonnet::allowed('whn', |
Line 596 ENDENTERKEY
|
Line 585 ENDENTERKEY
|
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); |
$env{'environment.remotenavmap'}); |
|
return OK; |
return OK; |
} |
} |
} |
} |
} |
} |
# Are we allowed to look at the first resource? |
# Are we allowed to look at the first resource? |
if (($furl !~ m|^/adm/|) || |
if ($furl !~ m|^/adm/|) { |
(($env{'environment.remotenavmap'} eq 'on') && |
|
($furl =~ m{^/adm/navmaps}))) { |
|
# Guess not ... |
# Guess not ... |
$furl=&Apache::lonpageflip::first_accessible_resource(); |
$furl=&Apache::lonpageflip::first_accessible_resource(); |
} |
} |
$msg = &mt('Entering [_1] ...', |
$msg = &mt('Entering [_1] ...', |
$env{'course.'.$courseid.'.description'}); |
$env{'course.'.$courseid.'.description'}); |
&redirect_user($r,&mt('Entering [_1]', |
&redirect_user($r, &mt('Entering [_1]', |
$env{'course.'.$courseid.'.description'}), |
$env{'course.'.$courseid.'.description'}), |
$furl,$msg, |
$furl, $msg); |
$env{'environment.remotenavmap'}); |
|
} |
} |
return OK; |
return OK; |
} |
} |
Line 625 ENDENTERKEY
|
Line 610 ENDENTERKEY
|
if ($role =~ /^(au|ca|aa)$/) { |
if ($role =~ /^(au|ca|aa)$/) { |
my $redirect_url = '/priv/'; |
my $redirect_url = '/priv/'; |
if ($role eq 'au') { |
if ($role eq 'au') { |
$redirect_url.=$env{'user.name'}; |
$redirect_url.=$env{'user.domain'}.'/'.$env{'user.name'}; |
} else { |
} else { |
$where =~ /\/(.*)$/; |
$redirect_url .= $where; |
$redirect_url .= $1; |
|
} |
} |
$redirect_url .= '/'; |
$redirect_url .= '/'; |
&redirect_user($r,&mt('Entering Construction Space'), |
&redirect_user($r,&mt('Entering Construction Space'), |
Line 698 function enterrole (thisform,rolecode,bu
|
Line 682 function enterrole (thisform,rolecode,bu
|
thisform.submit(); |
thisform.submit(); |
} else { |
} else { |
alert('$standby'); |
alert('$standby'); |
} |
} |
} |
} |
|
|
function setToUpdate(thisform) { |
function setToUpdate(thisform) { |
Line 707 function setToUpdate(thisform) {
|
Line 691 function setToUpdate(thisform) {
|
thisform.submit(); |
thisform.submit(); |
} |
} |
|
|
|
function setToRequestAuthor(thisform) { |
|
thisform.requestauthor.value='1'; |
|
thisform.selectrole.value=''; |
|
thisform.submit(); |
|
} |
|
|
// ]]> |
// ]]> |
</script> |
</script> |
ENDHEADER |
ENDHEADER |
Line 767 ENDHEADER
|
Line 757 ENDHEADER
|
} |
} |
} |
} |
} |
} |
# -------------------------------------------------------- Choice or no choice? |
|
if ($nochoose) { |
if ($nochoose) { |
$r->print("<h2>".&mt('Sorry ...')."</h2>\n<span class='LC_error'>". |
$r->print("<h2>".&mt('Sorry ...')."</h2>\n<span class='LC_error'>". |
&mt('This action is currently not authorized.').'</span>'. |
&mt('This action is currently not authorized.').'</span>'. |
&Apache::loncommon::end_page()); |
&Apache::loncommon::end_page()); |
return OK; |
return OK; |
} else { |
} else { |
$r->print($updateresult); |
if ($updateresult || $reqauthor) { |
|
$r->print('<div>'. |
|
$updateresult. |
|
$reqauthor. |
|
'</div>'); |
|
} |
if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) { |
if (($ENV{'REDIRECT_QUERY_STRING'}) && ($fn)) { |
$fn.='?'.$ENV{'REDIRECT_QUERY_STRING'}; |
$fn.='?'.$ENV{'REDIRECT_QUERY_STRING'}; |
} |
} |
$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.'" />'); |
Line 786 ENDHEADER
|
Line 780 ENDHEADER
|
$r->rflush(); |
$r->rflush(); |
|
|
my (%roletext,%sortrole,%roleclass,%futureroles,%timezones); |
my (%roletext,%sortrole,%roleclass,%futureroles,%timezones); |
my ($countactive,$countfuture,$inrole,$possiblerole) = |
my ($countactive,$countfuture,$inrole,$possiblerole) = |
&gather_roles($update,$refresh,$now,$reinit,$nochoose,\%roletext,\%sortrole,\%roleclass, |
&gather_roles($update,$refresh,$now,$reinit,$nochoose,\%roletext,\%sortrole,\%roleclass, |
\%futureroles,\%timezones,$loncaparev); |
\%futureroles,\%timezones,$loncaparev); |
$refresh = $now; |
$refresh = $now; |
Line 802 ENDHEADER
|
Line 796 ENDHEADER
|
'<input type="button" name="update" value="'. |
'<input type="button" name="update" value="'. |
$updatebutton.'" onclick="javascript:setToUpdate(this.form)" />'; |
$updatebutton.'" onclick="javascript:setToUpdate(this.form)" />'; |
} |
} |
|
my ($requestauthor,$requestcrs); |
|
unless ($reqauthor) { |
|
if ($env{'environment.canrequest.author'}) { |
|
unless (&is_active_author()) { |
|
my ($status,$timestamp) = split(/:/,$env{'environment.requestauthorqueued'}); |
|
if ($status eq 'approval') { |
|
$requestauthor = &mt('A request for authoring space submitted on [_1] is awaiting approval',&Apache::lonlocal::locallocaltime($timestamp)); |
|
} elsif (($status eq 'approved') && ($do_update)) { |
|
my %roleshash = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles', |
|
['active'],['au'],[$env{'user.domain'}]); |
|
if (keys(%roleshash)) { |
|
$requestauthor = &mt('Your request for an author role has been approved.').'<br />'; |
|
if ($show_course) { |
|
$requestauthor .= &mt('Use the "Check for new courses" button to update your list of roles.'); |
|
} else { |
|
$requestauthor .= &mt('Use the "Check for new roles" button to update your list of roles.'); |
|
} |
|
$requestauthor = '<span class="LC_info">'.$requestauthor.'</span>'; |
|
} |
|
} |
|
unless ($requestauthor) { |
|
$requestauthor = |
|
'<input type="hidden" name="requestauthor" value="" />'. |
|
'<input type="button" name="reqauthor" value="'. |
|
&mt('Request author space').'" '. |
|
'onclick="javascript:setToRequestAuthor(this.form)" />'; |
|
} |
|
} |
|
} |
|
} |
|
my $do_update; |
|
unless (($env{'form.source'} eq 'login') || ($env{'form.doupdate'})) { |
|
$do_update = '<input type="hidden" name="doupdate" value="" />'. |
|
'<input type="button" name="update" value="'. |
|
$updatebutton.'" onclick="javascript:setToUpdate(this.form)" />'; |
|
} |
if ($env{'user.adv'}) { |
if ($env{'user.adv'}) { |
my $showall = '<label><input type="checkbox" name="showall"'; |
my $showall = '<label><input type="checkbox" name="showall"'; |
if ($env{'form.showall'}) { |
if ($env{'form.showall'}) { |
$showall .= ' checked="checked" '; |
$showall .= ' checked="checked" '; |
} |
} |
$showall .= ' />'.&mt('Show all roles').'</label> '. |
$showall .= ' />'.&mt('Show all roles').'</label> '. |
'<input type="submit" value="'.&mt('Update display').'" />'; |
'<input type="submit" value="'.&mt('Update display').'" />'; |
if ($do_update) { |
if ($do_update || $requestauthor) { |
$r->print('<div class="LC_left_float"><fieldset>'. |
$r->print('<div class="LC_left_float"><fieldset>'. |
'<legend>'. &mt('Display').'</legend>'. |
'<legend>'. &mt('Display').'</legend>'. |
$showall.'</fieldset></div>'. |
$showall.'</fieldset></div>'); |
'<div class="LC_left_float"><fieldset><legend>'. |
if ($do_update) { |
&mt('Changes?').'</legend>'. |
$r->print('<div class="LC_left_float">'. |
$do_update.'</fieldset></div><br clear="all" />'); |
'<fieldset><legend>'.&mt('Changes?').'</legend>'. |
|
$do_update.'</fieldset></div>'); |
|
} |
|
if ($requestauthor) { |
|
$r->print('<div class="LC_left_float">'. |
|
'<fieldset><legend>'.&mt('Add author role').'</legend>'. |
|
$requestauthor.'</fieldset>'); |
|
} |
|
$r->print('</div><br clear="all" />'); |
} else { |
} else { |
$r->print($showall); |
$r->print($showall); |
} |
} |
} else { |
} else { |
$r->print('<p>'.$do_update.'</p>'); |
if ($do_update && $requestauthor) { |
|
$r->print('<div class="LC_left_float">'. |
|
'<fieldset><legend>'.&mt('Changes?').'</legend>'. |
|
$do_update.'</fieldset></div>'. |
|
'<div class="LC_left_float">'. |
|
'<fieldset><legend>'.&mt('Add author role').'</legend>'. |
|
$requestauthor.'</fieldset></div><br clear="all" />'); |
|
} elsif ($do_update) { |
|
$r->print('<p>'.$do_update.'</p>'); |
|
} elsif ($requestauthor) { |
|
$r->print('<p>'.$requestauthor.'</p>'); |
|
} |
if ($countactive > 0) { |
if ($countactive > 0) { |
$r->print(&Apache::loncoursequeueadmin::queued_selfenrollment()); |
$r->print(&Apache::loncoursequeueadmin::queued_selfenrollment()); |
my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); |
my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
$r->print( |
$r->print( |
'<p>' |
'<p>' |
.&mt('[_1]Visit the [_2]Course/Community Catalog[_3]' |
.&mt('[_1]Visit the [_2]Course/Community Catalog[_3]' |
Line 878 ENDHEADER
|
Line 927 ENDHEADER
|
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
} elsif ($countactive==1 && $countfuture==0) { # Only one choice |
|
my $needs_switchserver; |
|
if ($env{'user.author'}) { |
|
$needs_switchserver = &check_needs_switchserver($possiblerole); |
|
} |
|
if ((!$needs_switchserver) && ($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; |
|
} |
|
if ($needs_switchserver) { |
|
$r->print("<h2>".&mt('Server Switch Required')."</h2>\n". |
|
&mt('Construction Space access is only available from '. |
|
'the home server of the corresponding Author.').'<br />'. |
|
&mt("Click the 'Switch Server' link to go there.").'<br />'); |
|
} |
|
} |
} |
# ----------------------------------------------------------------------- Table |
# ----------------------------------------------------------------------- Table |
|
|
Line 1001 ENDHEADER
|
Line 1029 ENDHEADER
|
$r->print('<hr /><h2>'.&mt('Current Privileges').'</h2>'); |
$r->print('<hr /><h2>'.&mt('Current Privileges').'</h2>'); |
$r->print(&privileges_info()); |
$r->print(&privileges_info()); |
} |
} |
$r->print(&Apache::lonnet::getannounce()); |
my $announcements = &Apache::lonnet::getannounce(); |
|
$r->print( |
|
'<br />'. |
|
'<h2>'.&mt('Announcements').'</h2>'. |
|
$announcements |
|
) unless (!$announcements); |
if ($advanced) { |
if ($advanced) { |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
$r->print('<p><small><i>' |
$r->print('<p><small><i>' |
Line 1016 ENDHEADER
|
Line 1049 ENDHEADER
|
return OK; |
return OK; |
} |
} |
|
|
|
sub is_active_author { |
|
if ($env{'user.role.au./'.$env{'user.domain'}.'/'} =~ /^(\d*)\.(\d*)$/) { |
|
if ((!$1 || $1 < time) && |
|
(!$2 || $2 > time)) { |
|
return 1; |
|
} |
|
} |
|
return; |
|
} |
|
|
|
sub reqauthor_check { |
|
my $queued = $env{'environment.requestauthorqueued'}; |
|
my %reqauthor = &Apache::lonnet::get('requestauthor',['author_status','author'], |
|
$env{'user.domain'},$env{'user.name'}); |
|
my $reqstatus = $reqauthor{'author_status'}; |
|
if (($reqstatus eq '' && $queued ne '') || |
|
($env{'environment.requestauthorqueued'} !~ /^\Q$reqstatus\E/)) { |
|
if (ref($reqauthor{'author'}) eq 'HASH') { |
|
$queued = $reqstatus.':'.$reqauthor{'author'}{'timestamp'}; |
|
} else { |
|
undef($queued); |
|
} |
|
&Apache::lonnet::appenv({'environment.requestauthorqueued' => $queued}); |
|
} |
|
return $queued; |
|
} |
|
|
sub gather_roles { |
sub gather_roles { |
my ($update,$refresh,$now,$reinit,$nochoose,$roletext,$sortrole,$roleclass,$futureroles,$timezones,$loncaparev) = @_; |
my ($update,$refresh,$now,$reinit,$nochoose,$roletext,$sortrole,$roleclass,$futureroles,$timezones,$loncaparev) = @_; |
my ($countactive,$countfuture,$inrole,$possiblerole) = (0,0,0,''); |
my ($countactive,$countfuture,$inrole,$possiblerole) = (0,0,0,''); |
Line 1660 sub check_forcc {
|
Line 1720 sub check_forcc {
|
} else { |
} else { |
$ccrole = 'cc'; |
$ccrole = 'cc'; |
} |
} |
if ($cdom ne '' && $cnum ne '') { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
my $envkey = 'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum; |
my $envkey = 'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum; |
if (defined($env{$envkey})) { |
if (defined($env{$envkey})) { |
$is_cc = 1; |
$is_cc = 1; |
my ($tstart,$tend)=split(/\./,$env{$envkey}); |
my ($tstart,$tend)=split(/\./,$env{$envkey}); |
my $limit = $update; |
my $limit = $update; |
if ($env{'request.role'} eq $ccrole.'./'.$cdom.'/'.$cnum) { |
if ($env{'request.role'} eq $ccrole.'./'.$cdom.'/'.$cnum) { |
$limit = $then; |
$limit = $then; |
|
} |
|
if ($tstart && $tstart>$refresh) { $is_cc = 0; } |
|
if ($tend && $tend <$limit) { $is_cc = 0; } |
|
} |
} |
|
if ($tstart && $tstart>$refresh) { $is_cc = 0; } |
|
if ($tend && $tend <$limit) { $is_cc = 0; } |
} |
} |
} |
} |
return $is_cc; |
return $is_cc; |
Line 1730 sub check_release_required {
|
Line 1788 sub check_release_required {
|
return ($switchserver,$warning); |
return ($switchserver,$warning); |
} |
} |
|
|
sub update_content_constraints { |
|
my ($cdom,$cnum,$chome,$cid) = @_; |
|
my %curr_reqd_hash = &Apache::lonnet::userenvironment($cdom,$cnum,'internal.releaserequired'); |
|
my ($reqdmajor,$reqdminor) = split(/\./,$curr_reqd_hash{'internal.releaserequired'}); |
|
my %checkresponsetypes; |
|
foreach my $key (keys(%Apache::lonnet::needsrelease)) { |
|
my ($item,$name,$value) = split(/:/,$key); |
|
if ($item eq 'resourcetag') { |
|
if ($name eq 'responsetype') { |
|
$checkresponsetypes{$value} = $Apache::lonnet::needsrelease{$key} |
|
} |
|
} |
|
} |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (defined($navmap)) { |
|
my %allresponses; |
|
foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() },1,0)) { |
|
my %responses = $res->responseTypes(); |
|
foreach my $key (keys(%responses)) { |
|
next unless(exists($checkresponsetypes{$key})); |
|
$allresponses{$key} += $responses{$key}; |
|
} |
|
} |
|
foreach my $key (keys(%allresponses)) { |
|
my ($major,$minor) = split(/\./,$checkresponsetypes{$key}); |
|
if (($major > $reqdmajor) || ($major == $reqdmajor && $minor > $reqdminor)) { |
|
($reqdmajor,$reqdminor) = ($major,$minor); |
|
} |
|
} |
|
undef($navmap); |
|
} |
|
unless (($reqdmajor eq '') && ($reqdminor eq '')) { |
|
&Apache::lonnet::update_released_required($reqdmajor.'.'.$reqdminor,$cdom,$cnum,$chome,$cid); |
|
} |
|
return; |
|
} |
|
|
|
sub courselink { |
sub courselink { |
my ($dcdom,$rowtype) = @_; |
my ($dcdom,$rowtype) = @_; |
my $courseform=&Apache::loncommon::selectcourse_link |
my $courseform=&Apache::loncommon::selectcourse_link |
Line 1968 sub update_session_roles {
|
Line 1989 sub update_session_roles {
|
} |
} |
if ($env{$envkey} eq '') { |
if ($env{$envkey} eq '') { |
my $status_in_db = |
my $status_in_db = |
&curr_role_status($tstart,$tend,$refresh,$now); |
&curr_role_status($tstart,$tend,$now,$now); |
&gather_roleprivs(\%allroles,\%allgroups,\%userroles,$where,$role,$tstart,$tend,$status_in_db); |
&gather_roleprivs(\%allroles,\%allgroups,\%userroles,$where,$role,$tstart,$tend,$status_in_db); |
if (($role eq 'st') && ($env{'request.role'} =~ m{^\Q$role\E\.\Q/$udom/$uname\E})) { |
if (($role eq 'st') && ($env{'request.role'} =~ m{^\Q$role\E\.\Q/$udom/$uname\E})) { |
if ($status_in_db eq 'active') { |
if ($status_in_db eq 'active') { |
Line 2012 sub update_session_roles {
|
Line 2033 sub update_session_roles {
|
my $status_in_env = |
my $status_in_env = |
&curr_role_status($currstart,$currend,$refresh,$update); |
&curr_role_status($currstart,$currend,$refresh,$update); |
my $status_in_db = |
my $status_in_db = |
&curr_role_status($tstart,$tend,$refresh,$now); |
&curr_role_status($tstart,$tend,$now,$now); |
if ($status_in_env ne $status_in_db) { |
if ($status_in_env ne $status_in_db) { |
if ($status_in_env eq 'active') { |
if ($status_in_env eq 'active') { |
if ($role eq 'st') { |
if ($role eq 'st') { |
Line 2337 sub update_session_roles {
|
Line 2358 sub update_session_roles {
|
} |
} |
if (keys(%deletedroles) > 0) { |
if (keys(%deletedroles) > 0) { |
$changemsg .= '<li>'. |
$changemsg .= '<li>'. |
&mt('Existing roles deleted').'</li>'. |
&mt('Existing roles now expired').'</li>'. |
'<ul>'; |
'<ul>'; |
foreach my $item (sort(keys(%deletedroles))) { |
foreach my $item (sort(keys(%deletedroles))) { |
$changemsg .= '<li>'.$item.'</li>'; |
$changemsg .= '<li>'.$item.'</li>'; |
Line 2503 sub gather_roleprivs {
|
Line 2524 sub gather_roleprivs {
|
my $spec=$role.'.'.$area; |
my $spec=$role.'.'.$area; |
$userroles->{'user.role.'.$spec} = $tstart.'.'.$tend; |
$userroles->{'user.role.'.$spec} = $tstart.'.'.$tend; |
my ($tdummy,$tdomain,$trest)=split(/\//,$area); |
my ($tdummy,$tdomain,$trest)=split(/\//,$area); |
if ($status eq 'active') { |
if ($status eq 'active') { |
if ($role =~ /^cr\//) { |
if ($role =~ /^cr\//) { |
&Apache::lonnet::custom_roleprivs($allroles,$role,$tdomain,$trest,$spec,$area); |
&Apache::lonnet::custom_roleprivs($allroles,$role,$tdomain,$trest,$spec,$area); |
} elsif ($role eq 'gr') { |
} elsif ($role eq 'gr') { |