[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonwhatsnew.pm
raeburn
raeburn at source.lon-capa.org
Mon Oct 21 19:31:24 EDT 2013
raeburn Mon Oct 21 23:31:24 2013 EDT
Modified files: (Branch: version_2_11_X)
/loncom/interface lonwhatsnew.pm
Log:
- For 2.11
- Backport 1.114
-------------- next part --------------
Index: loncom/interface/lonwhatsnew.pm
diff -u loncom/interface/lonwhatsnew.pm:1.105.2.6 loncom/interface/lonwhatsnew.pm:1.105.2.7
--- loncom/interface/lonwhatsnew.pm:1.105.2.6 Thu Aug 8 03:27:23 2013
+++ loncom/interface/lonwhatsnew.pm Mon Oct 21 23:31:24 2013
@@ -1,5 +1,5 @@
#
-# $Id: lonwhatsnew.pm,v 1.105.2.6 2013/08/08 03:27:23 raeburn Exp $
+# $Id: lonwhatsnew.pm,v 1.105.2.7 2013/10/21 23:31:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -598,6 +598,10 @@
if ($needitems) {
$itemserror = &getitems(\%unread,\%ungraded,\%bombed,\%triggered,\%changed,\@newdiscussions,\@tograde,\@bombs,\@warnings,\%threshold,$cdom,$crs,\%res_title,\%show,$starttime,$countunread);
}
+ my $classlist;
+ if ($show{'oldroles'} || $show{'newroles'} || $show{'crslogin'}) {
+ $classlist = &Apache::loncoursedata::get_classlist();
+ }
if ($show{'coursenormalmail'}) {
$msgcount = &getnormalmail(\@newmsgs);
}
@@ -605,10 +609,10 @@
$critmsgcount = &getcritmail(\@critmsgs);
}
if ($show{'oldroles'}) {
- $expirecount = &getexpired(\%expired,$expiredstart,'previous');
+ $expirecount = &getexpired(\%expired,$expiredstart,'previous',$classlist);
}
if ($show{'newroles'}) {
- $activecount = &getactivated(\%activated,$activatedstart,'active');
+ $activecount = &getactivated(\%activated,$activatedstart,'active',$classlist);
}
if ($show{'crslogin'}) {
$logincount = &getloggedin($cdom,$crs,\%loggedin,$crsloginstart);
@@ -641,7 +645,7 @@
if ($displayed == $halfway) {
$r->print('</td><td> </td><td class="LC_right_col" >');
}
- &display_launcher($r,$actionitem,$refpage,$checkallowed,\%show,\%headings,\%res_title,\@tograde,\%ungraded,\@bombs,\%bombed,\%changed,\@warnings,\%triggered,\@newdiscussions,\%unread,$msgcount,\@newmsgs,$critmsgcount,\@critmsgs,\%interval,$countunread,\%expired,$expirecount,\%activated,$activecount,$crstype,$itemserror,\%loggedin,$logincount);
+ &display_launcher($r,$actionitem,$refpage,$checkallowed,\%show,\%headings,\%res_title,\@tograde,\%ungraded,\@bombs,\%bombed,\%changed,\@warnings,\%triggered,\@newdiscussions,\%unread,$msgcount,\@newmsgs,$critmsgcount,\@critmsgs,\%interval,$countunread,\%expired,$expirecount,\%activated,$activecount,$crstype,$itemserror,\%loggedin,$logincount,$classlist);
$displayed ++;
}
}
@@ -897,7 +901,7 @@
$tograde,$ungraded,$bombs,$bombed,$changed,$warnings,$triggered,
$newdiscussions,$unread,$msgcount,$newmsgs,$critmsgcount,$critmsgs,
$interval,$countunread,$expired,$expirecount,$activated,$activecount,
- $crstype,$itemserror,$loggedin,$logincount) = @_;
+ $crstype,$itemserror,$loggedin,$logincount,$classlist) = @_;
if ($$checkallowed{$action}) {
&start_box($r,$show,$headings,$action,$refpage);
@@ -920,13 +924,13 @@
&display_coursecritmail($r,$critmsgcount,$critmsgs);
} elsif ($action eq 'newroles') { # ACTIVATED ROLES
&display_rolechanges($r,$activecount,$activated,$interval->{'newroles'},
- $crstype);
+ $crstype,$classlist);
} elsif ($action eq 'oldroles') { # EXPIRED ROLES
&display_rolechanges($r,$expirecount,$expired,$interval->{'oldroles'},
- $crstype);
+ $crstype,$classlist);
} elsif ($action eq 'crslogin') { #LAST LOGIN
&display_crslogins($r,$logincount,$loggedin,$interval->{'crslogin'},
- $crstype);
+ $crstype,$classlist);
}
}
&end_box($r);
@@ -1327,13 +1331,13 @@
}
sub getexpired {
- my ($rolechgs,$rolechgtime,$status) = @_;
- my $expirecount = &getrolechanges($rolechgs,$rolechgtime,$status);
+ my ($rolechgs,$rolechgtime,$status,$classlist) = @_;
+ my $expirecount = &getrolechanges($rolechgs,$rolechgtime,$status,$classlist);
return $expirecount;
}
sub getactivated {
- my ($rolechgs,$rolechgtime,$status) = @_;
+ my ($rolechgs,$rolechgtime,$status,$classlist) = @_;
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my $now = time();
@@ -1384,12 +1388,13 @@
}
}
}
- $activatedcount += &getrolechanges($rolechgs,$rolechgtime,$status,\%stucounted,\%advcounted);
+ $activatedcount += &getrolechanges($rolechgs,$rolechgtime,$status,$classlist,\%stucounted,
+ \%advcounted);
return $activatedcount;
}
sub getrolechanges {
- my ($rolechgs,$rolechgtime,$status,$stucountref,$advcountref) = @_;
+ my ($rolechgs,$rolechgtime,$status,$classlist,$stucountref,$advcountref) = @_;
my (%stucounted,%advcounted);
if (ref($stucountref) eq 'HASH') {
%stucounted = %{$stucountref};
@@ -1407,63 +1412,64 @@
my ($permission,$allowed) =
&Apache::lonuserutils::get_permission($context);
my $viewablesec = &Apache::lonuserutils::viewable_section($permission);
- my $classlist = &Apache::loncoursedata::get_classlist();
my $secidx = &Apache::loncoursedata::CL_SECTION();
my $startidx = &Apache::loncoursedata::CL_START();
my $endidx = &Apache::loncoursedata::CL_END();
my $rolechgcount = 0;
- foreach my $key (keys(%{$classlist})) {
- my ($userstatus,$eventtime);
- my $student = $classlist->{$key};
- if (ref($student) eq 'ARRAY') {
- my $start = $student->[$startidx];
- my $end = $student->[$endidx];
- my $sec = $student->[$secidx];
- my ($stuname,$studom) = split(/:/,$key);
- if ($status eq 'active') {
- if (exists($stucounted{$key.':'.$sec})) {
- next;
+ if (ref($classlist) eq 'HASH') {
+ foreach my $key (keys(%{$classlist})) {
+ my ($userstatus,$eventtime);
+ my $student = $classlist->{$key};
+ if (ref($student) eq 'ARRAY') {
+ my $start = $student->[$startidx];
+ my $end = $student->[$endidx];
+ my $sec = $student->[$secidx];
+ my ($stuname,$studom) = split(/:/,$key);
+ if ($status eq 'active') {
+ if (exists($stucounted{$key.':'.$sec})) {
+ next;
+ }
}
- }
- if (($end == 0) || ($end > $start)) {
- if ($start <= $now) {
- if ($end && $end < $now) {
- if ($rolechgtime > 0) {
- if ($end > $rolechgtime) {
+ if (($end == 0) || ($end > $start)) {
+ if ($start <= $now) {
+ if ($end && $end < $now) {
+ if ($rolechgtime > 0) {
+ if ($end > $rolechgtime) {
+ $userstatus = 'previous';
+ }
+ } else {
$userstatus = 'previous';
}
} else {
- $userstatus = 'previous';
- }
- } else {
- if ($rolechgtime > 0) {
- if ($start >= $rolechgtime) {
+ if ($rolechgtime > 0) {
+ if ($start >= $rolechgtime) {
+ $userstatus = 'active';
+ }
+ } else {
$userstatus = 'active';
}
- } else {
- $userstatus = 'active';
}
}
}
+ next if ($userstatus ne $status);
+ if ($status eq 'active') {
+ $eventtime = $start;
+ } else {
+ $eventtime = $end;
+ }
+ if (($viewablesec ne '') && ($sec ne '')) {
+ next if ($viewablesec ne $sec);
+ }
+ my %chginfo = (
+ 'section' => $sec,
+ 'uname' => $stuname,
+ 'udom' => $studom,
+ 'role' => 'st',
+ 'status' => $userstatus,
+ );
+ $rolechgcount ++;
+ push(@{$rolechgs->{$eventtime}},\%chginfo);
}
- next if ($userstatus ne $status);
- if ($status eq 'active') {
- $eventtime = $start;
- } else {
- $eventtime = $end;
- }
- if (($viewablesec ne '') && ($sec ne '')) {
- next if ($viewablesec ne $sec);
- }
- my %chginfo = (
- 'section' => $sec,
- 'uname' => $stuname,
- 'udom' => $studom,
- 'role' => 'st',
- 'status' => $userstatus,
- );
- $rolechgcount ++;
- push (@{$rolechgs->{$eventtime}},\%chginfo);
}
}
my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,
@@ -1755,7 +1761,7 @@
}
sub display_rolechanges {
- my ($r,$chgcount,$changed,$interval,$crstype) = @_;
+ my ($r,$chgcount,$changed,$interval,$crstype,$classlist) = @_;
my $now = time();
my %lt = &Apache::lonlocal::texthash(
'user' => 'User',
@@ -1774,6 +1780,7 @@
if (ref($changed) eq 'HASH') {
my @changes = sort { $b <=> $a } (keys(%{$changed}));
my $changenum = 0;
+ my $fullnameidx = &Apache::loncoursedata::CL_FULLNAME();
foreach my $item (@changes) {
if (ref($changed->{$item}) eq 'ARRAY') {
foreach my $chg (@{$changed->{$item}}) {
@@ -1791,8 +1798,14 @@
my $udom = $chg->{'udom'};
$changenum ++;
my $css_class = $changenum%2?' class="LC_odd_row"':'';
+ my $fullname;
+ if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
+ $fullname = $classlist->{$uname.':'.$udom}->[$fullnameidx];
+ } else {
+ $fullname = &Apache::loncommon::plainname($uname,$udom,'lastname');
+ }
my $link =
- &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($uname,$udom),$uname,$udom);
+ &Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);
$r->print('<tr'.$css_class.'>'.
'<td>'.&Apache::lonlocal::locallocaltime($item).'</td>'.
'<td>'.$link.'</td>'.
@@ -1812,7 +1825,8 @@
}
sub display_crslogins {
- my ($r,$logincount,$loggedin,$interval,$crstype) = @_;
+ my ($r,$logincount,$loggedin,$interval,$crstype,$classlist) = @_;
+ return unless (ref($classlist) eq 'HASH');
my %lt = &Apache::lonlocal::texthash(
'user' => 'User',
'role' => 'Role',
@@ -1833,6 +1847,7 @@
if (ref($loggedin) eq 'HASH') {
my @logins = sort { $b <=> $a } (keys(%{$loggedin}));
my $numlogin = 0;
+ my $fullnameidx = &Apache::loncoursedata::CL_FULLNAME();
foreach my $item (@logins) {
if (ref($loggedin->{$item}) eq 'ARRAY') {
foreach my $user (@{$loggedin->{$item}}) {
@@ -1849,7 +1864,12 @@
$counts{$user->{'role'}}{$section} ++;
my $uname = $user->{'uname'};
my $udom = $user->{'udom'};
- my $fullname = &Apache::loncommon::plainname($uname,$udom,'lastname');
+ my $fullname;
+ if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
+ $fullname = $classlist->{$user}->[$fullnameidx];
+ } else {
+ $fullname = &Apache::loncommon::plainname($uname,$udom,'lastname');
+ }
my $link =
&Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);
push(@{$bylastname{$fullname}},
More information about the LON-CAPA-cvs
mailing list