--- loncom/interface/lonwhatsnew.pm 2006/05/31 14:25:02 1.57 +++ loncom/interface/lonwhatsnew.pm 2006/12/20 23:02:33 1.67 @@ -1,5 +1,5 @@ # -# $Id: lonwhatsnew.pm,v 1.57 2006/05/31 14:25:02 raeburn Exp $ +# $Id: lonwhatsnew.pm,v 1.67 2006/12/20 23:02:33 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -145,7 +145,7 @@ sub display_main_box { my $domain=&Apache::loncommon::determinedomain(); my $function = &Apache::loncommon::get_users_function(); my $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); - my $lctype = lc($env{'course.'.$env{'request.course.id'}.'.type'}); + my $lctype = lc(&Apache::loncommon::course_type()); $r->print('
');
my %threshold_titles = &Apache::lonlocal::texthash (
@@ -228,8 +228,9 @@ END
';
}
- return &Apache::loncommon::start_page(&mt('[_1] Action Items',
- $env{'course.'.$env{'request.course.id'}.'.type'}),$scripttag);
+ my $course_type=&Apache::loncommon::course_type();
+ return &Apache::loncommon::start_page($course_type.' Action Items',
+ $scripttag);
}
#-------------------------------
@@ -248,14 +249,14 @@ sub display_actions_box {
my $udom = $env{'user.domain'};
my $uname = $env{'user.name'};
my $cid = $env{'request.course.id'};
- my $crstype = $env{'course.'.$cid.'.type'};
+ my $crstype = &Apache::loncommon::course_type();
my $lctype = lc($crstype);
my %stulabel = (
'Course' => 'students',
'Group' => 'members',
);
my %lt = &Apache::lonlocal::texthash(
- 'yacc' => 'You are accessing an invalid course or group',
+ 'yacc' => 'You are accessing an invalid course',
'gtfr' => 'Go to first resource',
'hial' => 'Hide all',
'shal' => 'Show all',
@@ -285,11 +286,7 @@ sub display_actions_box {
$result = &store_courseinit_setting($uname,$udom,$cid,$initpage);
}
- my %threshold = (
- av_attempts => 2,
- degdiff => 0.5,
- numstudents => 2,
- );
+ my %threshold = ();
my %pagedesc = &Apache::lonlocal::texthash (
firstres => 'First resource',
whatsnew => "What's New? page",
@@ -315,10 +312,10 @@ sub display_actions_box {
' '); } } - $r->print(&mt('Page set to be displayed after you have selected a role in this [_1]',$lctype). + $r->print(&mt('Page set to be displayed after you have selected a role in this '.$lctype). '. '); + &mt('Change for just this '.$lctype.'',$refpage).' '. + &mt('or for all your courses',$refpage).' '); if ($command eq 'reset') { $result = &process_reset($cdom,$crs); @@ -372,7 +369,10 @@ sub display_actions_box { &get_curr_thresholds(\%threshold,$uname,$udom,$cid,$cdom,$crs); } - $headings{'abovethreshold'} = &mt('Problems with av. attempts').' ≥ '.$threshold{'av_attempts'}.' '.&mt('or deg. difficulty').' ≥ '.$threshold{'degdiff'}.' '.&mt('and total number of [_1] with submissions',$stulabel{$crstype}).' ≥ '.$threshold{'numstudents'}; + $headings{'abovethreshold'} = + &mt('Problems with av. attempts ≥ [_1] or deg. difficulty ≥ [_2] and total number of '.$stulabel{$crstype}.' with submissions ≥ [_3]', + $threshold{'av_attempts'},$threshold{'degdiff'}, + $threshold{'numstudents'}); my @actionorder = ('handgrading','haserrors','abovethreshold','versionchanges','coursediscussion','coursenormalmail','coursecritmail'); @@ -464,9 +464,6 @@ sub display_threshold_config { my $rowColor; my @thresholditems = ("av_attempts","degdiff","numstudents"); - foreach my $item (@thresholditems) { - $threshold{$item} = ''; - } my %threshold_titles = &Apache::lonlocal::texthash( av_attempts => 'Average number of attempts', degdiff => 'Degree of difficulty', @@ -530,10 +527,10 @@ sub display_threshold_config { sub display_interval_config { my ($r,$refpage,$interval_titles) = @_; - my $lctype = lc($env{'course.'.$env{'request.course.id'}.'.type'}); + my $lctype = lc(&Apache::loncommon::course_type()); my $current = &get_current($env{'user.name'},$env{'user.domain'}, $env{'request.course.id'},'interval'); - $r->print(' '.&mt('Choose the time window to use for display of version changes for resources in the [_1].',$lctype)); + $r->print(' '.&mt('Choose the time window to use for display of version changes for resources in the '.$lctype.'.')); unless ($current eq '') { $r->print(' '.&mt('Current value is [_1]',''. $$interval_titles{$current}.'.')); @@ -612,7 +609,7 @@ sub courseinit_config { my ($control,$current) = &curr_courseinit(); my @chgstate = ('userpref','coursespecific'); my @chgentry = ('firstres','whatsnew'); - my $lctype = lc($env{'course.'.$env{'request.course.id'}.'.type'}); + my $lctype = lc(&Apache::loncommon::course_type()); my %lt = &Apache::lonlocal::texthash( 'chwp' => "Choose which page will be displayed when you enter this $lctype after selecting a role.", 'cuva' => 'Current value is determined by', @@ -683,7 +680,7 @@ sub display_launcher { $critmsgcount,$critmsgs,$interval,$countunread) = @_; if ($$checkallowed{$action}) { - &start_box($r,$tabbg,$show,$headings,$action,$refpage); + &start_box($r,$tabbg,$show,$headings,$action,$refpage,$action); if ($$show{$action}) { if ($action eq 'handgrading') { # UNGRADED ITEMS &display_handgrade($r,$tograde,$rowColor1,$rowColor2, @@ -697,7 +694,7 @@ sub display_launcher { } elsif ($action eq 'abovethreshold') { # DEGDIFF/AV. TRIES TRIGGERS &display_abovethreshold($r,$refpage,$warnings,$triggered, - $res_title); + $res_title); } elsif ($action eq 'coursediscussion') { # UNREAD COURSE DISCUSSION &display_coursediscussion($r,$newdiscussions,$unread, $countunread,$res_title,$rowColor1,$rowColor2); @@ -735,7 +732,6 @@ sub getitems { $cdom,$crs); } - my $warningnum = 0; foreach my $resource (@allres) { my $result = ''; my $applies = 0; @@ -744,6 +740,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(); @@ -769,9 +769,8 @@ 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); } } @@ -786,12 +785,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'); } } @@ -812,7 +816,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); } } } @@ -835,8 +843,7 @@ 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; @@ -881,46 +888,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] = ' +part - '.$part.' | '; } else { - $$triggered{$symb}{text} .= ' -single part | '; + $$triggered{$symb}{text}[$partcount] = ' +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; @@ -1012,7 +1015,7 @@ sub process_update { next if ($_!~/^form\.(.+)\_setparmval$/); my $name = $1; my $value = $env{'form.'.$name.'_value'}; - if ($name && defined($value)) { + if ($name && defined($value) && ($value ne '')) { my $put_result = &Apache::lonnet::put('nohist_whatsnew', {$name=>$value},$udom,$uname); @@ -1155,7 +1158,10 @@ sub display_handgrade { my ($map,$id,$url)=&Apache::lonnet::decode_symb($res); my $linkurl=&Apache::lonnet::clutter($url); $linkurl .= '?symb='.&escape($res); - + if ($$ungraded{$res}{'enclink'}) { + $linkurl = + $$ungraded{$res}{'enclink'}.'?symb='.$$ungraded{$res}{'encsymb'}; + } $r->print(' | |||||||||||||||||||||
'.$$ungraded{$res}{title}.' | '.$$ungraded{$res}{count}.' | |||||||||||||||||||||||||||||||||
'.$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?'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(' '.$lt{'nopr'}.' | '.$forum_title.' | '.$type.' | ');
+ $r->print(''.$forum_title.' | '.$type.' | ');
if ($countunread eq 'on') {
my $unreadnum = $$unread{$ressymb}{'unreadcount'};
$r->print(''.$lastpost.' | '.
@@ -1324,7 +1359,7 @@ sub display_coursediscussion {
sub display_coursenormalmail {
my ($r,$msgcount,$newmsgs,$rowColor1,$rowColor2) = @_;
my $rowColor;
- my $lctype = lc($env{'course.'.$env{'request.course.id'}.'.type'});
+ my $lctype = lc(&Apache::loncommon::course_type());
if ($msgcount > 0) {
$r->print(' | '.&mt('Number').' | '.&mt('Subject').' | '.&mt('Sender').' | '.&mt('Date/Time').' | '.&mt('No new [_1] messages',$lctype).' '.&mt('No new '.$lctype.' messages').' '.&mt('Number').' | '.&mt('Subject').' | '.&mt('Sender').' | '.&mt('Date/Time').' | '.&mt('No unread critical messages in [_1]',$lctype).' '.&mt('No unread critical messages in '.$lctype).' '); } else { - my $lctype = lc($env{'course.'.$env{'request.course.id'}.'.type'}); + my $lctype = lc(&Apache::loncommon::course_type()); &Apache::lonnet::logthis('Error storing whatsnew interval setting'. ' '.$outcome.' for '.$uname.':'.$udom.' in '.$lctype.' '.$cid); $result = &mt('Unable to set interval to [_1] due to [_2].', @@ -1448,7 +1483,7 @@ sub store_discussion_setting { ''.$env{'form.countunread'}.' '); } else { - my $lctype = lc($env{'course.'.$env{'request.course.id'}.'.type'}); + my $lctype = lc(&Apache::loncommon::course_type()); &Apache::lonnet::logthis('Error storing whatsnew countunread setting'. ' '.$outcome.' for '.$uname.':'.$udom.' in '.$lctype.' '.$cid); $result = &mt('Unable to set "number unread posts display" to [_1]'. @@ -1477,14 +1512,14 @@ sub store_courseinit_setting { } } if ($page_control) { - my $lctype = lc($env{'course.'.$env{'request.course.id'}.'.type'}); + my $lctype = lc(&Apache::loncommon::course_type()); my $outcome = &Apache::lonnet::put('nohist_whatsnew', \%courseinit_settings,$udom,$uname); if ($outcome eq 'ok') { if ($page_control eq 'global preferences') { - $result = &mt("Page displayed after role selection in [_1] now set by user's global preferences.",$lctype); + $result = &mt("Page displayed after role selection in $lctype now set by user's global preferences."); } else { - $result = &mt('Page displayed after role selection in this [_1] set to [_2]',$lctype,$$initpage{$env{'form.courseinit_page'}}); + $result = &mt('Page displayed after role selection in this '.$lctype.' set to [_2]',$lctype,$$initpage{$env{'form.courseinit_page'}}); } } else { &Apache::lonnet::logthis('Error storing whatsnew courseinit '. @@ -1496,7 +1531,7 @@ sub store_courseinit_setting { ''.$page_control.'', ''.$outcome.'. '); } else { - $result = &mt('Unable to set page display, after role selection, for this [_1] to [_2] due to [_3]. ',$lctype, + $result = &mt('Unable to set page display, after role selection, for this '.$lctype.' to [_2] due to [_3]. ', $$initpage{$env{'form.courseinit_page'}},$outcome); } } @@ -1512,7 +1547,7 @@ sub start_box { chin => 'Change interval?', chop => 'Change options?', ); - my $showhide; + my ($showhide,$class); if ($$show{$caller}) { $showhide = 'Hide'; @@ -1544,6 +1579,7 @@ sub start_box { '.$lt{'chth'}.' |
| ||||||||||||||||||
- |