version 1.256.2.6.2.1, 2012/02/08 00:22:15
|
version 1.269, 2012/07/21 21:09:03
|
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 280 sub handler {
|
Line 266 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 533 ENDENTERKEY
|
Line 520 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 577 ENDENTERKEY
|
Line 565 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 591 ENDENTERKEY
|
Line 578 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 620 ENDENTERKEY
|
Line 603 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 693 function enterrole (thisform,rolecode,bu
|
Line 675 function enterrole (thisform,rolecode,bu
|
thisform.submit(); |
thisform.submit(); |
} else { |
} else { |
alert('$standby'); |
alert('$standby'); |
} |
} |
} |
} |
|
|
function setToUpdate(thisform) { |
function setToUpdate(thisform) { |
Line 762 ENDHEADER
|
Line 744 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); |
$r->print($updateresult); |
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 781 ENDHEADER
|
Line 762 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 799 ENDHEADER
|
Line 780 ENDHEADER
|
} |
} |
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> '. |
Line 819 ENDHEADER
|
Line 800 ENDHEADER
|
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 975 ENDHEADER
|
Line 956 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 1634 sub check_forcc {
|
Line 1620 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 1704 sub check_release_required {
|
Line 1688 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 2257 sub update_session_roles {
|
Line 2204 sub update_session_roles {
|
} |
} |
$msg .= '</ul>'; |
$msg .= '</ul>'; |
} else { |
} else { |
$msg = ' <span class="LC_cusr_emph">'.$rolesmsg.'</span><br />'; |
$msg = ' <span class="LC_cusr_emph">'.$rolesmsg.'</span><br /><br />'; |
} |
} |
return $msg; |
return $msg; |
} |
} |
Line 2311 sub update_session_roles {
|
Line 2258 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 2477 sub gather_roleprivs {
|
Line 2424 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') { |