--- loncom/auth/lonroles.pm 2013/01/01 03:06:27 1.279
+++ loncom/auth/lonroles.pm 2013/05/21 23:13:40 1.286
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.279 2013/01/01 03:06:27 raeburn Exp $
+# $Id: lonroles.pm,v 1.286 2013/05/21 23:13:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -139,6 +139,7 @@ use Apache::lonpageflip();
use Apache::lonnavdisplay();
use Apache::loncoursequeueadmin;
use Apache::longroup;
+use Apache::lonrss;
use GDBM_File;
use LONCAPA qw(:DEFAULT :match);
use HTML::Entities;
@@ -310,6 +311,7 @@ sub handler {
my $trolecode = 'au./'.$domain.'/';
my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
$r->internal_redirect($switchserver);
+ return OK;
}
last;
}
@@ -321,6 +323,7 @@ sub handler {
my $trolecode = 'ca./'.$domain.'/'.$user;
my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
$r->internal_redirect($switchserver);
+ return OK;
}
last;
}
@@ -342,6 +345,7 @@ sub handler {
my $switchserver = '/adm/switchserver?'
.'otherserver='.$home.'&role='.$trolecode;
$r->internal_redirect($switchserver);
+ return OK;
}
} else {
delete($env{$envkey});
@@ -518,11 +522,26 @@ ENDENTERKEY
my $msg;
my ($furl,$ferr)=
&Apache::lonuserstate::readmap($cdom.'/'.$cnum);
- unless (($ferr) || ($env{'form.switchrole'}) ||
- ($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) {
- &Apache::lonnet::put('nohist_crslastlogin',
- {$env{'user.name'}.':'.$env{'user.domain'}.
- ':'.$csec.':'.$role => $now},$cdom,$cnum);
+ unless ($ferr) {
+ unless (($env{'form.switchrole'}) ||
+ ($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) {
+ &Apache::lonnet::put('nohist_crslastlogin',
+ {$env{'user.name'}.':'.$env{'user.domain'}.
+ ':'.$csec.':'.$role => $now},$cdom,$cnum);
+ }
+ my ($feeds,$syllabus_time);
+ &Apache::lonrss::advertisefeeds($cnum,$cdom,undef,\$feeds);
+ &Apache::lonnet::appenv({'request.course.feeds' => $feeds});
+ unless ($env{'course.'.$cdom.'_'.$cnum.'.updatedsyllabus'}) {
+ unless (($env{'course.'.$cdom.'_'.$cnum.'.externalsyllabus'}) ||
+ ($env{'course.'.$cdom.'_'.$cnum.'.uploadedsyllabus'})) {
+ my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);
+ $syllabus_time = $syllabus{'uploaded.lastmodified'};
+ if ($syllabus_time) {
+ &Apache::lonnet::appenv({'request.course.syllabustime' => $syllabus_time});
+ }
+ }
+ }
}
if (($env{'form.orgurl'}) &&
($env{'form.orgurl'}!~/^\/adm\/flip/)) {
@@ -602,7 +621,7 @@ ENDENTERKEY
}
} else {
if ($destsymb eq '') {
- ($destsymb) = ($dest =~ /(:\?|\&)symb=([^\&]+)/);
+ ($destsymb) = ($dest =~ /(?:\?|\&)symb=([^\&]+)/);
$destsymb = &unescape($destsymb);
}
unless ($env{'request.role.adv'}) {
@@ -611,7 +630,7 @@ ENDENTERKEY
}
if (($checkenc) && ($destsymb ne '')) {
my ($encstate,$unencsymb,$res);
- my $unencsymb = &Apache::lonnet::symbclean($destsymb);
+ $unencsymb = &Apache::lonnet::symbclean($destsymb);
(undef,undef,$res) = &Apache::lonnet::decode_symb($unencsymb);
&Apache::lonnet::symbverify($unencsymb,$res,\$encstate);
if ($encstate) {
@@ -2152,7 +2171,6 @@ sub update_session_roles {
my $status_in_db =
&curr_role_status($tstart,$tend,$refresh,$now);
my ($rdummy,$rest) = split(/\//,$role,2);
- my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);
my %currpriv;
unless (exists($crprivs{$rest})) {
my ($rdomain,$rauthor,$rrole)=split(/\//,$rest);
@@ -2406,9 +2424,8 @@ sub update_session_roles {
}
$groupmsg .= '
'.
$env{'course.'.$cdom.'_'.$cnum.'.description'}.'';
+ $currcrs = $cdom.'_'.$cnum;
}
- my ($cdom,$cnum) = split(/\//,$1);
- my $group = $2;
my $groupdesc;
unless (ref($curr_groups{$cdom.'_'.$cnum}) eq 'HASH') {
%{$curr_groups{$cdom.'_'.$cnum}} =
@@ -2423,9 +2440,11 @@ sub update_session_roles {
&unescape($groupinfo{'description'});
}
$groupdesc = $groupdescs{$cdom.'_'.$cnum}{$group};
- $groupmsg .= '- '.
- &mt('[_1] with status: [_2].',
- ''.$groupdesc.'',$newgroup{$item}).'
';
+ if ($groupdesc) {
+ $groupmsg .= '- '.
+ &mt('[_1] with status: [_2].',
+ ''.$groupdesc.'',$newgroup{$item}).'
';
+ }
}
}
if ($groupmsg) {
@@ -2439,47 +2458,67 @@ sub update_session_roles {
}
}
if (keys(%newrole) > 0) {
- $changemsg .= '- '.&mt('New roles').
- '
';
+ my $newmsg;
foreach my $item (sort(keys(%newrole))) {
my $desc = &role_desc($item,$update,$refresh,$now);
- $changemsg .= '- '.
- &mt('[_1] with status: [_2].',
- $desc,$newrole{$item}).'
';
+ if ($desc) {
+ $newmsg .= '- '.
+ &mt('[_1] with status: [_2].',
+ $desc,$newrole{$item}).'
';
+ }
+ }
+ if ($newmsg) {
+ $changemsg .= '- '.&mt('New roles').
+ ''.
+ '
';
}
- $changemsg .= '
';
}
if (keys(%customprivchg) > 0) {
- $changemsg .= '- '.
- &mt('Custom roles with privilege changes').
- '
';
+ my $privmsg;
foreach my $item (sort(keys(%customprivchg))) {
my $desc = &role_desc($item,$update,$refresh,$now);
- $changemsg .= '- '.$desc.'
';
+ if ($desc) {
+ $privmsg .= '- '.$desc.'
';
+ }
}
- $changemsg .= '
';
+ if ($privmsg) {
+ $changemsg .= '- '.
+ &mt('Custom roles with privilege changes').
+ ''.
+ '
';
+ }
}
if (keys(%rolechange) > 0) {
- $changemsg .= '- '.
- &mt('Existing roles with status changes').'
'.
- '';
+ my $rolemsg;
foreach my $item (sort(keys(%rolechange))) {
my $desc = &role_desc($item,$update,$refresh,$now);
+ if ($desc) {
+ $rolemsg .= '- '.
+ &mt('[_1] status now: [_2].',$desc,
+ $rolechange{$item}).'
';
+ }
+ }
+ if ($rolemsg) {
$changemsg .= '- '.
- &mt('[_1] status now: [_2].',$desc,
- $rolechange{$item}).'
';
+ &mt('Existing roles with status changes').'
'.
+ ''.
+ '';
}
- $changemsg .= '';
}
if (keys(%deletedroles) > 0) {
- $changemsg .= ''.
- &mt('Existing roles now expired').''.
- '';
+ my $delmsg;
foreach my $item (sort(keys(%deletedroles))) {
my $desc = &role_desc($item,$update,$refresh,$now);
- $changemsg .= '- '.$desc.'
';
+ if ($desc) {
+ $delmsg .= '- '.$desc.'
';
+ }
+ }
+ if ($delmsg) {
+ $changemsg .= '- '.
+ &mt('Existing roles now expired').'
'.
+ ''.
+ '';
}
- $changemsg .= '
';
}
}
if ((keys(%changed_groups) > 0) || (keys(%groupchange) > 0)) {
@@ -2539,6 +2578,12 @@ sub update_session_roles {
}
if ($changemsg) {
$msg .= '';
+ } else {
+ if (&Apache::loncommon::show_course()) {
+ $msg = &mt('No new courses or communities');
+ } else {
+ $msg = &mt('No role changes');
+ }
}
return $msg;
}
@@ -2547,8 +2592,10 @@ sub role_desc {
my ($item,$update,$refresh,$now) = @_;
my ($where,$trolecode,$role,$tstatus,$tend,$tstart,$twhere,
$trole,$tremark);
- &Apache::lonnet::role_status('user.role.'.$item,$update,$refresh, $now,\$role,\$where, \$trolecode,
+ &Apache::lonnet::role_status('user.role.'.$item,$update,$refresh,
+ $now,\$role,\$where,\$trolecode,
\$tstatus,\$tstart,\$tend);
+ return unless ($role);
if ($role =~ /^cr\//) {
my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role);
$tremark = &mt('Customrole defined by [_1].',$rauthor.':'.$rdomain);
@@ -2590,9 +2637,15 @@ sub role_desc {
} elsif ($tdom) {
$twhere = &mt('Domain').': '.$tdom;
}
- my $output = "$trole -- $twhere";
- if ($tremark) {
- $output .= '
'.$tremark;
+ my $output;
+ if ($trole) {
+ $output = $trole;
+ if ($twhere) {
+ $output .= " -- $twhere";
+ }
+ if ($tremark) {
+ $output .= '
'.$tremark;
+ }
}
return $output;
}
@@ -2683,7 +2736,6 @@ sub get_roles_functions {
push(@links,["javascript:rolesView('showall');",'edit-undo-22x22',&mt('Include expired roles')]);
}
}
-
my $funcs = &Apache::lonhtmlcommon::start_funclist();
foreach my $link (@links) {
$funcs .= &Apache::lonhtmlcommon::add_item_funclist(