--- loncom/interface/lonwhatsnew.pm 2006/06/03 21:28:07 1.59 +++ loncom/interface/lonwhatsnew.pm 2012/05/10 19:01:40 1.105.2.1 @@ -1,5 +1,5 @@ # -# $Id: lonwhatsnew.pm,v 1.59 2006/06/03 21:28:07 albertel Exp $ +# $Id: lonwhatsnew.pm,v 1.105.2.1 2012/05/10 19:01:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,11 +36,13 @@ use Apache::lonlocal; use Apache::loncoursedata(); use Apache::lonnavmaps(); use Apache::lonuserstate; +use Apache::lonuserutils; use Apache::Constants qw(:common :http); use Time::Local; use GDBM_File; use lib '/home/httpd/lib/perl/'; use LONCAPA; +use HTML::Entities; #---------------------------- # handler @@ -68,6 +70,8 @@ sub handler { ['vgr','abovethreshold',1], ['opa','haserrors',1], ['mdc','versionchanges',0], + ['vcl','newroles',1], + ['vcl','oldroles',1], ) { my ($perm,$key,$check_section) = @{ $perm_check }; my $scope = $env{'request.course.id'}; @@ -84,7 +88,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; } @@ -96,35 +100,49 @@ sub handler { &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/whatsnew', - text=>"Display Action Items"}); + text=>"What's New?"}); if (($command eq 'chgthreshold') && $checkallowed{'abovethreshold'}) { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>'/adm/whatsnew?command=chgthreshold&refpage='.$refpage, + ({href=>'/adm/whatsnew?command=chgthreshold&refpage='.$refpage, text=>"Change thresholds"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs ("What's New?",#'Course_Action_Items_Thresholds' )); } elsif (($command eq 'chginterval') && $checkallowed{'versionchanges'} ) { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>'/adm/whatsnew?command=chginterval&refpage='.$refpage, + ({href=>'/adm/whatsnew?command=chginterval&refpage='.$refpage, text=>"Change interval"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs ("What's New?",#'Course_Action_Items_Intervals' )); } elsif (($command eq 'chgdisc') && $checkallowed{'coursediscussion'}) { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>'/adm/whatsnew?command=chgdisc&refpage='.$refpage, + ({href=>'/adm/whatsnew?command=chgdisc&refpage='.$refpage, text=>"Change discussion display"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs ("What's New?",#'Course_Action_Items_Intervals' )); } elsif ($command eq 'courseinit') { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>'/adm/whatsnew?command=courseinit&refpage='.$refpage, + ({href=>'/adm/whatsnew?command=courseinit&refpage='.$refpage, text=>"Course initialization preference"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs ("What's New?",#'Course_Action_Items_Initialization' )); + } elsif ($command eq 'chgoldroleinterval' && $checkallowed{'oldroles'}) { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/whatsnew?command=chgoldroleinterval&refpage='.$refpage, + text=>"Change interval"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs + ("What's New?",#'Course_Action_Items_Intervals' + )); + } elsif ($command eq 'chgnewroleinterval' && $checkallowed{'newroles'}) { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/whatsnew?command=chgnewroleinterval&refpage='.$refpage, + text=>"Change interval"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs + ("What's New?",#'Course_Action_Items_Intervals' + )); } else { $r->print(&Apache::lonhtmlcommon::breadcrumbs ("What's New?",#'Course_Action_Items_Display' @@ -144,7 +162,6 @@ sub display_main_box { my ($r,$command,$refpage,$checkallowed) = @_; my $domain=&Apache::loncommon::determinedomain(); my $function = &Apache::loncommon::get_users_function(); - my $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); my $lctype = lc(&Apache::loncommon::course_type()); $r->print('
');
@@ -153,17 +170,32 @@ sub display_main_box {
degdiff => 'Degree of difficulty',
numstudents => 'Total number of students with submissions',
);
-
- my %interval_titles = &Apache::lonlocal::texthash (
- -1 => "since start of $lctype",
- 2592000 => 'since last month',
- 604800 => 'since last week',
- 86400 => 'since yesterday',
+ my %versions = (
+ -1 => "version changes since start of $lctype",
+ 2592000 => 'version changes since last month',
+ 604800 => 'version changes since last week',
+ 86400 => 'version changes since yesterday',
+ );
+ my %newroles = (
+ -1 => "roles which have become active since start of $lctype",
+ 2592000 => 'roles which have become active since last month',
+ 604800 => 'roles which have become active since last week',
+ 86400 => 'roles which have become active since yesterday',
+ );
+ my %oldroles = (
+ -1 => "roles which expired since start of $lctype",
+ 2592000 => 'roles which expired since last month',
+ 604800 => 'roles which expired since last week',
+ 86400 => 'roles which expired since yesterday',
+ );
+ my %interval_titles = (
+ versions => \%versions,
+ newroles => \%newroles,
+ oldroles => \%oldroles,
);
-
my %initpage = &Apache::lonlocal::texthash (
firstres => "first resource in the $lctype",
- whatsnew => "what's new? page",
+ whatsnew => "What's New Page",
userpref => 'your general user preferences',
coursespecific => "specific setting for this $lctype",
);
@@ -172,18 +204,24 @@ sub display_main_box {
if (($command eq 'chgthreshold')
&& $checkallowed->{'abovethreshold'}) {
- &display_threshold_config($r,$refpage,$tabbg,\%threshold_titles,
+ &display_threshold_config($r,$refpage,\%threshold_titles,
$cdom,$crs);
} elsif (($command eq 'chginterval')
&& $checkallowed->{'versionchanges'}) {
- &display_interval_config($r,$refpage,\%interval_titles);
+ &display_interval_config($r,$refpage,\%interval_titles,'versions');
} elsif (($command eq 'chgdisc')
&& $checkallowed->{'coursediscussion'}) {
&display_discussion_config($r,$refpage);
} elsif ($command eq 'courseinit') {
&courseinit_config($r,$refpage,\%initpage);
+ } elsif (($command eq 'chgnewroleinterval')
+ && $checkallowed->{'newroles'}) {
+ &display_interval_config($r,$refpage,\%interval_titles,'newroles');
+ } elsif (($command eq 'chgoldroleinterval')
+ && $checkallowed->{'oldroles'}) {
+ &display_interval_config($r,$refpage,\%interval_titles,'oldroles');
} else {
- &display_actions_box($r,$tabbg,$command,$refpage,\%threshold_titles,
+ &display_actions_box($r,$command,$refpage,\%threshold_titles,
\%interval_titles,\%initpage,$cdom,$crs,$checkallowed);
}
my $end_page = &Apache::loncommon::end_page();
@@ -206,12 +244,13 @@ sub display_header {
my ($command,$checkallowed) = @_;
my $scripttag;
- unless ($command eq 'chgthreshold' || $command eq 'chginterval') {
+ unless ($command eq 'chgthreshold' || $command eq 'chginterval' ||
+ $command eq 'chgoldroleinterval' || $command eq 'chgnewroleinterval') {
$scripttag = <<"END";
');
- $r->print(' '.&mt('Choose whether or not to display a count of the number of new posts for each resource or bulletin board which has unread posts.').' '.&mt('This can increase the time taken to gather data for the [_1] page by a few seconds.',"What's New?").' '.&mt('Currently set to [_1].',''.$current.'')); + $r->print(' ' + .&mt('Choose whether or not to display a count of the number of new posts for each resource or discussion board which has unread posts.') + .' ' + .&mt("This can increase the time taken to gather data for the [_1]What's New Page[_2] by a few seconds.",'','') + .' ' + .&mt('Currently set to [_1].',''.$current.'.') + ); $r->print(' '); @@ -623,7 +731,7 @@ sub courseinit_config { 'anis' => 'and is set to display', 'padc' => 'Page display controlled by', 'chce' => 'Choose '.$lctype.' entry', - 'moce' => 'Modify '.$lctype.' entry', + 'moce' => 'Save', ); $r->print(<<"END"); $lt{'chwp'} @@ -640,9 +748,9 @@ END if ($choice eq $control) { $chkstring = ' checked="checked" '; } - $r->print(' '.&mt('If').' '.$$initpage{'coursespecific'}. ' - '.$lt{'chce'}.": \n"); @@ -651,9 +759,9 @@ END if (($choice eq $current) && ($control eq 'coursespecific')) { $chkstring = ' checked="checked" '; } - $r->print(' '); @@ -681,36 +789,37 @@ sub curr_courseinit { } sub display_launcher { - my ($r,$action,$refpage,$checkallowed,$tabbg,$rowColor1,$rowColor2,$show, - $headings,$res_title,$tograde,$ungraded,$bombs,$bombed,$changed, - $warnings,$triggered,$newdiscussions,$unread,$msgcount,$newmsgs, - $critmsgcount,$critmsgs,$interval,$countunread) = @_; + my ($r,$action,$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) = @_; if ($$checkallowed{$action}) { - &start_box($r,$tabbg,$show,$headings,$action,$refpage); + &start_box($r,$show,$headings,$action,$refpage,$action); if ($$show{$action}) { if ($action eq 'handgrading') { # UNGRADED ITEMS - &display_handgrade($r,$tograde,$rowColor1,$rowColor2, - $ungraded); + &display_handgrade($r,$tograde,$ungraded,$itemserror); } elsif ($action eq 'haserrors') { # BOMBS - &display_haserrors($r,$bombs,$rowColor1,$rowColor2,$bombed, - $res_title); + &display_haserrors($r,$bombs,$bombed,$res_title,$itemserror); } elsif ($action eq 'versionchanges') { # VERSION CHANGES - &display_versionchanges($r,$changed,$res_title,$rowColor1, - $rowColor2,$interval); - + &display_versionchanges($r,$changed,$res_title,$interval->{'versions'},$itemserror); } elsif ($action eq 'abovethreshold') { # DEGDIFF/AV. TRIES TRIGGERS &display_abovethreshold($r,$refpage,$warnings,$triggered, - $res_title); + $res_title,$itemserror); } elsif ($action eq 'coursediscussion') { # UNREAD COURSE DISCUSSION &display_coursediscussion($r,$newdiscussions,$unread, - $countunread,$res_title,$rowColor1,$rowColor2); + $countunread,$res_title,$itemserror); } elsif ($action eq 'coursenormalmail') { # NORMAL MESSAGES - &display_coursenormalmail($r,$msgcount,$newmsgs,$rowColor1, - $rowColor2); + &display_coursenormalmail($r,$msgcount,$newmsgs); } elsif ($action eq 'coursecritmail') { # CRITICAL MESSAGES - &display_coursecritmail($r,$critmsgcount,$critmsgs,$rowColor1, - $rowColor2); + &display_coursecritmail($r,$critmsgcount,$critmsgs); + } elsif ($action eq 'newroles') { # ACTIVATED ROLES + &display_rolechanges($r,$activecount,$activated,$interval->{'newroles'}, + $crstype); + } elsif ($action eq 'oldroles') { # EXPIRED ROLES + &display_rolechanges($r,$expirecount,$expired,$interval->{'oldroles'}, + $crstype); } } &end_box($r); @@ -720,9 +829,13 @@ sub display_launcher { sub getitems { my ($unread,$ungraded,$bombed,$triggered,$changed,$newdiscussions, - $tograde,$bombs,$warnings,$rowColor1,$rowColor2,$threshold,$cdom,$crs, - $res_title,$show,$starttime,$countunread) = @_; + $tograde,$bombs,$warnings,$threshold,$cdom,$crs,$res_title,$show, + $starttime,$countunread) = @_; my $navmap = Apache::lonnavmaps::navmap->new(); + if (!defined($navmap)) { + my $itemserror = ''.&mt('An error occurred retrieving information about the course.').' '.&mt('It is recommended that you [_1]re-select the course[_2].','','').''; + return $itemserror; + } # force retrieve Resource to seed the part id cache we'll need it later my @allres=$navmap->retrieveResources(undef, sub {if ($_[0]->is_problem) { $_[0]->parts();} return 1;}); @@ -739,7 +852,6 @@ sub getitems { $cdom,$crs); } - my $warningnum = 0; foreach my $resource (@allres) { my $result = ''; my $applies = 0; @@ -748,6 +860,10 @@ sub getitems { %{$$ungraded{$symb}} = (); %{$$triggered{$symb}} = (); $$triggered{$symb}{numparts} = 0; + if ($resource->encrypted()) { + $$triggered{$symb}{'enclink'} = $resource->link(); + $$triggered{$symb}{'encsymb'} = $resource->shown_symb(); + } my $title = $resource->compTitle(); $$res_title{$symb} = $title; my $ressymb = $resource->wrap_symb(); @@ -773,12 +889,12 @@ sub getitems { # Maxtries and degree of difficulty for problem parts, unless handgradeable if ($$show{'abovethreshold'}) { - $warningnum = &check_thresholds($resource,$symb,\%resourcetracker, - $triggered,$threshold,$warnings, - $warningnum,$rowColor1,$rowColor2); + &check_thresholds($resource,$symb,\%resourcetracker, + $triggered,$threshold,$warnings); } } + return; } sub check_discussions { @@ -790,12 +906,17 @@ sub check_discussions { %{$$unread{$ressymb}} = (); $$unread{$ressymb}{'title'} = $title; $$unread{$ressymb}{'symb'} = $symb; + if ($resource->encrypted()) { + $$unread{$ressymb}{'enclink'} = $resource->link(); + $$unread{$ressymb}{'encsymb'} = $resource->shown_symb(); + } push(@{$newdiscussions}, $ressymb); $$unread{$ressymb}{'lastpost'} = $resource->last_post_time(); if ($countunread eq 'on') { - $$unread{$ressymb}{'unreadcount'} = $resource->unread_discussion(); + $$unread{$ressymb}{'unreadcount'} = + $resource->discussion_info('unread'); } } @@ -816,7 +937,11 @@ sub check_handgraded { if (@ungraded > 0) { $$ungraded{$symb}{count} = scalar(@ungraded); $$ungraded{$symb}{title} = $title; - push(@{$tograde}, $symb); + if ($resource->encrypted()) { + $$ungraded{$symb}{'enclink'} = $resource->link(); + $$ungraded{$symb}{'encsymb'} = $resource->shown_symb(); + } + push(@{$tograde},$symb); } } } @@ -839,18 +964,19 @@ sub check_bombed { } sub check_thresholds { - my ($resource,$symb,$resourcetracker,$triggered,$threshold,$warnings, - $warningnum,$rowColor1,$rowColor2) = @_; + my ($resource,$symb,$resourcetracker,$triggered,$threshold,$warnings) = @_; # Compile maxtries and degree of difficulty for problem parts, unless handgradeable my @parts = @{$resource->parts()}; my %stats; my %lastreset = (); my $warning = 0; - my $rowColor; foreach my $part (@parts) { if ($resource->handgrade($part) eq 'yes') { next; } + if ($resource->is_anonsurvey($part)) { + next; + } if ($resource->is_survey($part)) { next; } @@ -873,6 +999,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; @@ -885,46 +1012,42 @@ sub check_thresholds { } } if ($warning) { - if ($warningnum%2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } - $$triggered{$symb}{rowColor} = $rowColor; $$triggered{$symb}{title} = $resource->title; + my $partcount = 0; + @{$$triggered{$symb}{text}} = (); foreach my $part (@parts) { if (exists($stats{$part}{users})) { my $resetname = 'reset_'.&escape($symb."\0".$part); my $resettitle = 'title_'.&escape($symb."\0".$part); - if ($$triggered{$symb}{numparts}) { - $$triggered{$symb}{text} .= ' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
part - '.$part.' | '; + $$triggered{$symb}{text}[$partcount] = ' +'.&mt('part - ').$part.' | '; } else { - $$triggered{$symb}{text} .= ' -single part | '; + $$triggered{$symb}{text}[$partcount] = ' +'.&mt('single part').' | '; } - $$triggered{$symb}{text} .= ' -'.$stats{$part}{users}.' | -'.$stats{$part}{attempts}.' | -'.$stats{$part}{degdiff}.' | -'.$lastreset{$part}.' | -- | '.$stats{$part}{users}.' | +'.$stats{$part}{attempts}.' | +'.$stats{$part}{degdiff}.' | +'.$lastreset{$part}.' | +'; + $partcount ++; } + $$triggered{$symb}{numparts} = $partcount; } push(@{$warnings},$symb); - $warningnum ++; } - return $warningnum; } sub get_curr_thresholds { my ($threshold,$uname,$udom,$cid,$cdom,$crs) = @_; + # set default values + %$threshold = (av_attempts => 2, + degdiff => 0.5, + numstudents => 2 + ); my %thresholdsettings = &Apache::lonnet::dump('nohist_whatsnew',$udom, $uname,$cid.':threshold'); my $thresholdcount = 0; @@ -1011,28 +1134,28 @@ sub process_reset { sub process_update { my ($uname,$udom,$threshold_titles) = @_; - my $setoutput = 'Changes to threshold(s) for problem tracking: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$lt{'prna'}.' | '.$lt{'nmun'}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'. + $lt{'prna'}.' | '. + $lt{'nmun'}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$$ungraded{$res}{title}.' | '.$$ungraded{$res}{count}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$$ungraded{$res}{title}.' | '.$$ungraded{$res}{count}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$itemserror.' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$lt{'nopr'}.' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$lt{'reso'}.' | '.$lt{'nmer'}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'. + $lt{'reso'}.' | '. + $lt{'nmer'}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$$bombed{$bomb}{errorlink}.' | '.$$bombed{$bomb}{errorcount}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$$bombed{$bomb}{errorlink}. + ' | '. + $$bombed{$bomb}{errorcount}.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$itemserror.' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$lt{'noer'}.' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$lt{'reso'}.' | '.$lt{'part'}.' | '.$lt{'nust'}.' | '.$lt{'avat'}.' | '.$lt{'dedi'}.' | '.$lt{'lare'}.' | '.$lt{'reco'}.' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$lt{'reso'}.' | '. + ''.$lt{'part'}.' | '.$lt{'nust'}.' | '. + ''.$lt{'avat'}.' | '.$lt{'dedi'}.' | '. + ''.$lt{'lare'}.' | '. + $lt{'reco'}.' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'.$$triggered{$res}{title}.' | '.$$triggered{$res}{text}); + if ($$triggered{$res}{'enclink'}) { + $linkurl = + $$triggered{$res}{'enclink'}.'?symb='.$$triggered{$res}{'encsymb'}; + } + my $css_class = $row%2?' class="LC_odd_row"':''; + $r->print('|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'. + $$triggered{$res}{title}.' | '); + if (ref($$triggered{$res}{text}) eq 'ARRAY') { + $r->print($$triggered{$res}{text}[0]); + } + $r->print('|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'); + $r->print(' '.$itemserror.' | '.$lt{'nopr'}.' | '.$lt{'reso'}.' | '.$lt{'revd'}.' | '.$lt{'newv'}.' | '.$lt{'veru'}.' | '.
+ $lt{'reso'}.' | '.$lt{'revd'}.' | '.
+ $lt{'newv'}.' | '.
+ $lt{'veru'}.' | '.$$res_title{$item}.' | '.$$changed{$item}{'revdate'}.' | '.$$changed{$item}{'current'}.' | '.$$changed{$item}{'version'}.' | '.
+ $$res_title{$item}.' | '.
+ $$changed{$item}{'revdate'}.' | '.
+ $$changed{$item}{'current'}.' | '.
+ $$changed{$item}{'version'}.' | '.$itemserror.' | '
+ .&mt('No '.$interval).' | '.$lt{'tich'}.' | '.
+ ''.$lt{'user'}.' | '.
+ ''.$lt{'role'}.' | '.
+ ''.$lt{'sec'}.' | '.
+ ''.$lt{'status'}.' | '.&Apache::lonlocal::locallocaltime($item).' | '.
+ ''.$link.' | '.
+ ''.$role.' | '.
+ ''.$section.' | '.
+ ''.$status.' | '
+ .&mt('There are no '.$interval).' | '.$lt{'loca'}.
- ' | '.$lt{'type'}.
- '');
+ $r->print(' | '.
+ $lt{'loca'}.' | '.
+ $lt{'type'}.' | ');
if ($countunread eq 'on') {
- $r->print(''.$lt{'tmlp'}.' | '.
- ''.$lt{'numn'}.
- ' | ');
+ $r->print(''.$lt{'tmlp'}.' | '.
+ ''.$lt{'numn'}.' | ');
} else {
- $r->print(''.$lt{'tmlp'}.
- ' | ');
+ $r->print(''.$lt{'tmlp'}.' | ');
}
$r->print("'.$forum_title.' | '.$type.' | ');
+ $r->print(''.$forum_title.' | '.&mt($type).' | ');
if ($countunread eq 'on') {
my $unreadnum = $$unread{$ressymb}{'unreadcount'};
- $r->print(''.$lastpost.' | '.
- '',$unreadnum.' | ');
+ $r->print(''.$lastpost.' | '.
+ $unreadnum.' | ');
} else {
- $r->print(''.$lastpost.' | ');
+ $r->print(''.$lastpost.' | ');
}
$r->print("'.$itemserror.' | '.$lt{'noun'}.' | '.&mt('Number').' | '.&mt('Subject').' | '.&mt('Sender').' | '.&mt('Date/Time').' | '.
+ &mt('Number').' | '.&mt('Subject').' | '.
+ &mt('Sender').' | '.
+ &mt('Date/Time').' | '.$mailcount.'. | '.$msg->{'shortsub'}.' | '.$msg->{'from'}.'@'.$msg->{'fromdom'}.' | '.$msg->{'sendtime'}.' | '.$mailcount
+ .'. | '
+ .$msg->{'shortsub'}.' | '
+ .$msg->{'from'}.':'.$msg->{'fromdom'}.' | '
+ .$msg->{'sendtime'}.' | '.&mt('No new '.$lctype.' messages').' '.
+ &mt('No new '.$lctype.' messages').' | '.&mt('Number').' | '.&mt('Subject').' | '.&mt('Sender').' | '.&mt('Date/Time').' | '.
+ &mt('Number').' | '.&mt('Subject').' | '.
+ &mt('Sender').' | '.
+ &mt('Date/Time').' | '.$mailcount.'. | '.$msg->{'shortsub'}.' | '.$msg->{'from'}.'@'.$msg->{'fromdom'}.' | '.$msg->{'sendtime'}.' | '.$mailcount.
+ '. | '.
+ $msg->{'shortsub'}.' | '.
+ $msg->{'from'}.':'.$msg->{'fromdom'}.' | '.
+ $msg->{'sendtime'}.' | '.&mt('No unread critical messages in '.$lctype).' '.
+ &mt('No unread critical messages in '.$lctype).
+ ' | '); - + if (ref($interval_titles->{$context}) eq 'HASH') { + $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 storing whatsnew interval setting'. + &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].', - ''.$$interval_titles{$env{'form.interval'}}.'', - ''.$outcome.'. '); + $result = &Apache::lonhtmlcommon::confirm_success(&mt('Unable to set interval to [_1] due to [_2].', + ''.$interval_titles->{$context}->{$env{'form.interval'}}.'', + ''.$outcome.''),1); } } - return $result; + return &Apache::loncommon::confirmwrapper($result); } sub store_discussion_setting { @@ -1448,20 +1867,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]', - ''.$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 storing whatsnew countunread setting'. + &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].', - ''.$env{'form.countunread'}.'', - ''.$outcome.'. '); + ''.&mt($env{'form.countunread'}).'', + ''.$outcome.''),1); } } - return $result; + return &Apache::loncommon::confirmwrapper($result); } sub store_courseinit_setting { @@ -1486,31 +1905,33 @@ 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 user's global preferences."); + $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 [_2]',$lctype,$$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 storing whatsnew courseinit '. + &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 [_2] due to [_3]. ', - $$initpage{$env{'form.courseinit_page'}},$outcome); + $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.''),1); } } } } - return $result; + return &Apache::loncommon::confirmwrapper($result); } sub start_box { - my ($r,$tabbg,$show,$heading,$caller,$refpage) = @_; + my ($r,$show,$heading,$caller,$refpage) = @_; my %lt = &Apache::lonlocal::texthash( chth => 'Change thresholds?', chin => 'Change interval?', @@ -1519,54 +1940,61 @@ sub start_box { my $showhide; if ($$show{$caller}) { $showhide = 'Hide'; + 'display_'.$caller.",'hide'".');">'. + &mt('Hide').''; } else { $showhide = 'Show'; + 'display_'.$caller.",'show'".');">'. + &mt('Show').''; } $r->print(' -
|