--- loncom/interface/lonwhatsnew.pm 2010/08/09 23:39:43 1.98.2.2
+++ loncom/interface/lonwhatsnew.pm 2013/10/21 22:34:33 1.114
@@ -1,5 +1,5 @@
#
-# $Id: lonwhatsnew.pm,v 1.98.2.2 2010/08/09 23:39:43 raeburn Exp $
+# $Id: lonwhatsnew.pm,v 1.114 2013/10/21 22:34:33 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -89,7 +89,7 @@ sub handler {
if ( ! $env{'request.course.fn'} || ! $checkallowed{'whatsnew'}) {
# Not in a course, or no whn priv in course
- $env{'user.error.msg'}="/adm/whatsnew::whn:0:0:Cannot display what's new page";
+ $env{'user.error.msg'}="/adm/whatsnew:whn:0:0:Cannot display what's new page";
return HTTP_NOT_ACCEPTABLE;
}
@@ -197,10 +197,10 @@ sub display_main_box {
86400 => 'roles which expired since yesterday',
);
my %crslogins = (
- -1 => 'last login for anyone who has ever logged in',
- 2592000 => 'last login for users in last 30 days',
- 604800 => 'last login for users in last 7 days',
- 86400 => 'last login for users in last 24 hours',
+ -1 => 'last logins for anyone who has ever logged in',
+ 2592000 => 'last logins for users in last 30 days',
+ 604800 => 'last logins for users in last 7 days',
+ 86400 => 'last logins for users in last 24 hours',
);
my %interval_titles = (
versions => \%versions,
@@ -237,7 +237,7 @@ sub display_main_box {
&display_interval_config($r,$refpage,\%interval_titles,'oldroles');
} elsif (($command eq 'chgcrslogininterval')
&& $checkallowed->{'crslogin'}) {
- &display_interval_config($r,$refpage,\%interval_titles,'crslogin');
+ &display_interval_config($r,$refpage,\%interval_titles,'crslogin');
} else {
&display_actions_box($r,$command,$refpage,\%threshold_titles,
\%interval_titles,\%initpage,$cdom,$crs,$checkallowed);
@@ -263,10 +263,11 @@ sub display_header {
my $scripttag;
unless ($command eq 'chgthreshold' || $command eq 'chginterval' ||
- $command eq 'chgoldroleinterval' ||
+ $command eq 'chgoldroleinterval' ||
$command eq 'chgnewroleinterval' || $command eq 'chgcrslogininterval') {
$scripttag = <<"END";
';
}
@@ -346,7 +353,6 @@ function togglelogins() {
sub display_actions_box {
my ($r,$command,$refpage,$threshold_titles,$interval_titles,$initpage,
$cdom,$crs,$checkallowed) = @_;
- my $custommenu = &Apache::loncommon::needs_gci_custom();
my $udom = $env{'user.domain'};
my $uname = $env{'user.name'};
my $cid = $env{'request.course.id'};
@@ -410,7 +416,7 @@ sub display_actions_box {
}
my $header = '';
- if (($refpage eq 'start') && (!$custommenu)) {
+ if ($refpage eq 'start') {
if (tie(my %bighash,'GDBM_File',$env{'request.course.fn'}.'.db',
&GDBM_READER(),0640)) {
my $furl=&HTML::Entities::encode($bighash{'first_url'},'"<>&');
@@ -419,8 +425,7 @@ sub display_actions_box {
' ';
}
}
- unless ($custommenu) {
- $header .= &mt('Page set to be displayed after you have selected a role in this '.$lctype).'.'
+ $header .= &mt('Page set to be displayed after you have selected a role in this '.$lctype).'.'
.' '
.&mt('Currently: [_1].',''.$currinit.' ')
.' '
@@ -433,8 +438,7 @@ sub display_actions_box {
,'')
.' ';
- $r->print(&Apache::loncommon::head_subbox($header));
- }
+ $r->print(&Apache::loncommon::head_subbox($header));
if ($command eq 'reset') {
$result = &process_reset($cdom,$crs);
@@ -528,29 +532,33 @@ sub display_actions_box {
$headings{'crslogin'} = &mt('Last login for users in last 24 hours');
}
- my $now = time;
+ my ($now,$starttime,$activatedstart,$expiredstart,$crsloginstart);
+ $now = time;
+
if ($timediff{'versions'} == -1) {
- $timediff{'versions'} = time;
+ $starttime = 0;
+ } else {
+ $starttime = $now - $timediff{'versions'};
}
- my $starttime = $now - $timediff{'versions'};
if ($timediff{'newroles'} == -1) {
- $timediff{'newroles'} = time;
+ $activatedstart = 0;
+ } else {
+ $activatedstart = $now - $timediff{'newroles'};
}
- my $activatedstart = $now - $timediff{'newroles'};
if ($timediff{'oldroles'} == -1) {
- $timediff{'oldroles'} = time;
+ $expiredstart = 0;
+ } else {
+ $expiredstart = $now - $timediff{'oldroles'};
}
- my $expiredstart = $now - $timediff{'oldroles'};
-
if ($timediff{'crslogin'} == -1) {
- $timediff{'crslogin'} = time;
+ $crsloginstart = 0;
+ } else {
+ $crsloginstart = $now - $timediff{'crslogin'};
}
- my $crsloginstart = $now - $timediff{'crslogin'};
-
my $countunread = $display_settings{$cid.':countunread'};
unless (defined($countunread)) {
$countunread = 'on';
@@ -564,12 +572,7 @@ sub display_actions_box {
$threshold{'av_attempts'},$threshold{'degdiff'},
' ',$threshold{'numstudents'});
- my @actionorder;
- if ($custommenu) {
- @actionorder = ('coursenormalmail','coursecritmail','newroles','oldroles','crslogin');
- } else {
- @actionorder = ('handgrading','haserrors','abovethreshold','versionchanges','coursediscussion','coursenormalmail','coursecritmail','newroles','oldroles');
- }
+ my @actionorder = ('handgrading','haserrors','abovethreshold','versionchanges','coursediscussion','coursenormalmail','coursecritmail','newroles','oldroles','crslogin');
foreach my $key (keys(%{$checkallowed})) {
if ($key =~ /_section$/) { next; }
@@ -595,6 +598,10 @@ sub display_actions_box {
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);
}
@@ -602,15 +609,14 @@ sub display_actions_box {
$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);
}
-
$r->print(qq|$lt{'hial'}
$lt{'shal'}
+
+
');
}
@@ -688,7 +692,7 @@ sub display_threshold_config {
foreach my $type (@thresholditems) {
my $parameter = $env{'request.course.id'}.':threshold_'.$type;
# onchange is javascript to automatically check the 'Set' button.
- my $onchange = 'onFocus="javascript:window.document.forms'.
+ my $onchange = 'onfocus="javascript:window.document.forms'.
"['thresholdform'].elements['".$parameter."_setparmval']".
'.checked=true;"';
$r->print(&Apache::loncommon::start_data_table_row()."\n".
@@ -897,10 +901,10 @@ sub display_launcher {
$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,$action);
+ &start_box($r,$show,$headings,$action,$refpage);
if ($$show{$action}) {
if ($action eq 'handgrading') { # UNGRADED ITEMS
&display_handgrade($r,$tograde,$ungraded,$itemserror);
@@ -920,14 +924,13 @@ sub display_launcher {
&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);
@@ -1082,6 +1085,9 @@ sub check_thresholds {
if ($resource->handgrade($part) eq 'yes') {
next;
}
+ if ($resource->is_anonsurvey($part)) {
+ next;
+ }
if ($resource->is_survey($part)) {
next;
}
@@ -1104,6 +1110,7 @@ sub check_thresholds {
$av_attempts = $attempts/$users;
$av_attempts = sprintf("%.2f",$av_attempts);
}
+ &Apache::lonnet::statslog($symb,$part,$users,$av_attempts,$degdiff);
if ((($degdiff ne '' && $degdiff >= $$threshold{'degdiff'}) || ($av_attempts ne '' && $av_attempts >= $$threshold{'av_attempts'})) && ($users >= $$threshold{'numstudents'})) {
$stats{$part}{degdiff} = $degdiff;
$stats{$part}{attempts} = $av_attempts;
@@ -1238,7 +1245,7 @@ sub process_reset {
sub process_update {
my ($uname,$udom,$threshold_titles) = @_;
- my $setoutput = ''.&mt('Changes to threshold(s) for problem tracking:').' ';
+ my $setoutput = ''.&mt('Changes to threshold(s) for problem tracking:').' ';
foreach (keys %env) {
next if ($_!~/^form\.(.+)\_setparmval$/);
my $name = $1;
@@ -1249,17 +1256,17 @@ sub process_update {
my ($shortname) = ($name =~ /^\Q$env{'request.course.id'}\E:threshold_(.+)$/);
if ($put_result eq 'ok') {
- $setoutput.=&mt('Set threshold for [_1] to [_2]',
+ $setoutput.= &Apache::lonhtmlcommon::confirm_success(&mt('Set threshold for [_1] to [_2]',
''.$$threshold_titles{$shortname}.' ',
- ''.$value.' ').' ';
+ ''.$value.' ').' ');
} else {
- $setoutput.=&mt('Unable to set threshold for [_1] to [_2] due to [_3].',
+ $setoutput.= &Apache::lonhtmlcommon::confirm_success(&mt('Unable to set threshold for [_1] to [_2] due to [_3].',
''.$name.' ',''.$value.' ',
- ''.$put_result.' ').' ';
+ ''.$put_result.' ').' ',1);
}
}
}
- return $setoutput;
+ return &Apache::loncommon::confirmwrapper($setoutput);
}
sub getnormalmail {
@@ -1274,7 +1281,6 @@ sub getnormalmail {
&Apache::lonmsg::unpackmsgid($msgid);
if (($fromcid) && ($fromcid eq $env{'request.course.id'})) {
if (defined($sendtime) && $sendtime!~/error/) {
- my $numsendtime = $sendtime;
if ($status eq 'new') {
$sendtime = &Apache::lonlocal::locallocaltime($sendtime);
$msgcount ++;
@@ -1306,7 +1312,6 @@ sub getcritmail {
&Apache::lonmsg::unpackmsgid($msgid);
if (($fromcid) && ($fromcid eq $env{'request.course.id'})) {
if (defined($sendtime) && $sendtime!~/error/) {
- my $numsendtime = $sendtime;
$sendtime = &Apache::lonlocal::locallocaltime($sendtime);
$critmsgcount ++;
if ($shortsubj eq '') {
@@ -1326,13 +1331,13 @@ sub getcritmail {
}
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();
@@ -1344,28 +1349,26 @@ sub getactivated {
my (%stucounted,%advcounted);
my $activatedcount = 0;
if (keys(%changes) > 0) {
- foreach my $chg (sort { $b <=> $a } (keys(%changes))) {
+ foreach my $chg (keys(%changes)) {
if (ref($changes{$chg}) eq 'HASH') {
- my $timestamp = $changes{$chg}{'exe_time'};
- if ($timestamp) {
- if ($rolechgtime > 0) {
- if ($timestamp < $rolechgtime) {
- last;
- }
- }
+ next if ($changes{$chg}{'delflag'});
+ if ($rolechgtime > 0) {
+ next if ($changes{$chg}{'exe_time'} < $rolechgtime);
+ }
+ if ($changes{$chg}{'exe_time'}) {
+ my $timestamp = $changes{$chg}{'exe_time'};
if (ref($changes{$chg}{'logentry'}) eq 'HASH') {
- next if ($changes{$chg}{'delflag'});
- my $start = $changes{$chg}{'logentry'}{'start'};
my $end = $changes{$chg}{'logentry'}{'end'};
- my $section = $changes{$chg}{'logentry'}{'section'};
- my $role = $changes{$chg}{'logentry'}{'role'};
- my $uname = $changes{$chg}{'uname'};
- my $udom = $changes{$chg}{'udom'};
next if ($end && $end <= $now);
+ my $start = $changes{$chg}{'logentry'}{'start'};
+ next if ($start >= $timestamp);
+ my $section = $changes{$chg}{'logentry'}{'section'};
if (($viewablesec ne '') && ($section ne '')) {
next if ($viewablesec ne $section);
}
- next if ($start >= $timestamp);
+ my $role = $changes{$chg}{'logentry'}{'role'};
+ my $uname = $changes{$chg}{'uname'};
+ my $udom = $changes{$chg}{'udom'};
if ($role eq 'st') {
$stucounted{$uname.':'.$udom.':'.$section} = $start.':'.$end;
} else {
@@ -1385,12 +1388,13 @@ sub getactivated {
}
}
}
- $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};
@@ -1408,63 +1412,64 @@ sub getrolechanges {
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,
@@ -1556,7 +1561,7 @@ sub getloggedin {
}
}
return $logincount;
-}
+}
sub checkversions {
my ($cdom,$crs,$navmap,$changed,$starttime) = @_;
@@ -1574,7 +1579,7 @@ sub checkversions {
'lastrevisiondate');
$revdate = &Apache::lonlocal::locallocaltime($revdate);
my $linkurl=&Apache::lonnet::clutter($key);
- my $usedversion=$navmap->usedVersion('version_'.$linkurl);
+ my $usedversion=$navmap->usedVersion($linkurl);
my @resources = $navmap->getResourceByUrl($linkurl,1);
if (($usedversion) && ($usedversion ne 'mostrecent')) {
$version = $usedversion;
@@ -1613,13 +1618,13 @@ sub display_handgrade {
foreach my $res (@{$tograde}) {
$rowNum ++;
my $css_class = $rowNum%2?' class="LC_odd_row"':'';
- my ($map,$id,$url)=&Apache::lonnet::decode_symb($res);
- my $linkurl=&Apache::lonnet::clutter($url);
- $linkurl .= '?symb='.&escape($res);
+ my $linkurl='/adm/grades';
if ($$ungraded{$res}{'enclink'}) {
- $linkurl =
- $$ungraded{$res}{'enclink'}.'?symb='.$$ungraded{$res}{'encsymb'};
- }
+ $linkurl.='?symb='.$$ungraded{$res}{'encsymb'};
+ } else {
+ $linkurl.='?symb='.&escape($res);
+ }
+ $linkurl.='&command=ungraded';
$r->print(''.$$ungraded{$res}{title}.' '.$$ungraded{$res}{count}.' ');
}
} elsif ($itemserror) {
@@ -1672,12 +1677,9 @@ sub display_abovethreshold {
);
if (@{$warnings} > 0) {
@{$warnings} = sort { &cmp_title($a,$b,$res_title) } @{$warnings};
- $r->print('');
+ $r->print(' ');
} elsif ($itemserror) {
$r->print(''.$itemserror.' ');
} else {
@@ -1759,7 +1761,7 @@ sub display_versionchanges {
}
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',
@@ -1778,6 +1780,7 @@ sub display_rolechanges {
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}}) {
@@ -1795,8 +1798,14 @@ sub display_rolechanges {
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(''.
''.&Apache::lonlocal::locallocaltime($item).' '.
''.$link.' '.
@@ -1816,7 +1825,8 @@ sub display_rolechanges {
}
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',
@@ -1824,18 +1834,20 @@ sub display_crslogins {
'number' => 'Total number of logins',
);
if ($logincount) {
- $r->print(' '.
+
+ my $hdr = ' '.
''.$lt{'user'}.' '.
''.$lt{'role'}.' '.
''.$lt{'sec'}.' '.
''.
''.$lt{'number'}.' '.
''.$lt{'role'}.' '.
- ''.$lt{'sec'}.' ');
+ ''.$lt{'sec'};
my (%bylastname,%counts);
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}}) {
@@ -1852,7 +1864,12 @@ sub display_crslogins {
$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}},
@@ -1863,32 +1880,33 @@ sub display_crslogins {
}
}
}
+ my $table;
foreach my $person (sort(keys(%bylastname))) {
- if (ref($bylastname{$person}) eq 'ARRAY') {
- foreach my $item (@{$bylastname{$person}}) {
+ if (ref($bylastname{$person}) eq 'ARRAY') {
+ foreach my $item (@{$bylastname{$person}}) {
$numlogin ++;
my $css_class = $numlogin%2?' class="LC_odd_row"':'';
- $r->print(' '.$item.' ');
+ $table .= ''.$item.' ';
}
}
}
my $numrow = 0;
foreach my $role (sort(keys(%counts))) {
my $showrole = &Apache::lonnet::plaintext($role,$crstype);
- if (ref($counts{$role}) eq 'HASH') {
+ if (ref($counts{$role}) eq 'HASH') {
foreach my $sec (sort { $b <=> $a } (keys(%{$counts{$role}}))) {
$numrow ++;
my $css_class = $numrow%2?' class="LC_odd_row"':'';
- $r->print(''.
+ $table .= ' '.
''.$counts{$role}{$sec}.' '.
''.$showrole.' '.
- ''.$sec.' ');
+ ''.$sec.' ';
}
}
}
- $r->print(' ');
+ '" />'.$table);
}
} else {
$r->print(''.
@@ -1928,7 +1946,7 @@ sub display_coursediscussion {
my $forum_title = $$unread{$ressymb}{'title'};
my $type = 'Resource';
my $feedurl=&Apache::lonfeedback::get_feedurl($ressymb);
- my $disclink = $feedurl.'?symb='.$$unread{$ressymb}{symb};
+ my $disclink = $feedurl.'?symb='. &escape($$unread{$ressymb}{symb});
if ($feedurl =~ /bulletinboard/) {
$type = 'Discussion Board';
}
@@ -2068,19 +2086,19 @@ sub store_interval_setting {
\%interval_settings,$udom,$uname);
if ($outcome eq 'ok') {
if (ref($interval_titles->{$context}) eq 'HASH') {
- $result = &mt('New filter setting: [_1].',''.
- $interval_titles->{$context}->{$env{'form.interval'}}.' ').' ';
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt('New filter setting: [_1].',''.
+ $interval_titles->{$context}->{$env{'form.interval'}}.' ').' ');
}
} else {
my $lctype = lc(&Apache::loncommon::course_type());
&Apache::lonnet::logthis('Error saving whatsnew '.$context.' interval setting'.
' '.$outcome.' for '.$uname.':'.$udom.' in '.$lctype.' '.$cid);
- $result = &mt('Unable to set interval to [_1] due to [_2].',
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt('Unable to set interval to [_1] due to [_2].',
''.$interval_titles->{$context}->{$env{'form.interval'}}.' ',
- ''.$outcome.' . ');
+ ''.$outcome.' '),1);
}
}
- return $result;
+ return &Apache::loncommon::confirmwrapper($result);
}
sub store_discussion_setting {
@@ -2092,20 +2110,20 @@ sub store_discussion_setting {
my $outcome = &Apache::lonnet::put('nohist_whatsnew',
\%discussion_settings,$udom,$uname);
if ($outcome eq 'ok') {
- $result = &mt('Count unread posts in discussions display set to [_1]',
- ''.&mt($env{'form.countunread'}).' ').' ';
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt('Count unread posts in discussions display set to [_1]',
+ ''.&mt($env{'form.countunread'}).' ').' ');
} else {
my $lctype = lc(&Apache::loncommon::course_type());
&Apache::lonnet::logthis('Error saving whatsnew countunread setting'.
' '.$outcome.' for '.$uname.':'.$udom.' in '.$lctype.' '.$cid);
- $result = &mt('Unable to set "number unread posts display" to [_1]'.
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt('Unable to set "number unread posts display" to [_1]'.
' due to [_2].',
''.&mt($env{'form.countunread'}).' ',
- ''.$outcome.' . ');
+ ''.$outcome.' '),1);
}
}
- return $result;
+ return &Apache::loncommon::confirmwrapper($result);
}
sub store_courseinit_setting {
@@ -2130,30 +2148,29 @@ sub store_courseinit_setting {
\%courseinit_settings,$udom,$uname);
if ($outcome eq 'ok') {
if ($page_control eq 'global preferences') {
- $result = &mt("Page displayed after role selection in $lctype now set by [_1]user's global preferences[_2].",'',' ');
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt("Page displayed after role selection in $lctype now set by [_1]user's global preferences[_2].",'',' '));
} else {
- $result = &mt('Page displayed after role selection in this '.$lctype.' set to [_1].'
- ,''.$$initpage{$env{'form.courseinit_page'}}.' ');
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt('Page displayed after role selection in this '.$lctype.' set to [_1].'
+ ,''.$$initpage{$env{'form.courseinit_page'}}.' '));
}
} else {
&Apache::lonnet::logthis('Error saving whatsnew courseinit '.
'setting: '.$outcome.' for '.$uname.
':'.$udom.' in '.$lctype.' '.$cid);
if ($page_control eq 'global preferences') {
- $result = &mt('Unable to set control of page display to [_1]'.
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt('Unable to set control of page display to [_1]'.
' due to [_2].',
''.$page_control.' ',
- ''.$outcome.' . ');
+ ''.$outcome.' '),1);
} else {
- $result = &mt('Unable to set page display, after role selection, for this '.$lctype.' to [_1] due to [_2].'
+ $result = &Apache::lonhtmlcommon::confirm_success(&mt('Unable to set page display, after role selection, for this '.$lctype.' to [_1] due to [_2].'
,''.$$initpage{$env{'form.courseinit_page'}}.' '
- ,''.$outcome.' ')
- .' ';
+ ,''.$outcome.' '),1);
}
}
}
}
- return $result;
+ return &Apache::loncommon::confirmwrapper($result);
}
sub start_box {
@@ -2216,14 +2233,14 @@ sub start_box {
');
}
- } elsif (($caller eq 'crslogin') && ($$show{$caller})) {
- if ($$show{$caller}) {
- $r->print('
+ } elsif (($caller eq 'crslogin') && ($$show{$caller})) {
+ if ($$show{$caller}) {
+ $r->print('
');
- }
- }
+ }
+ }
$r->print('