--- loncom/interface/lonwhatsnew.pm 2006/06/03 21:28:07 1.59
+++ loncom/interface/lonwhatsnew.pm 2006/12/20 23:02:33 1.67
@@ -1,5 +1,5 @@
#
-# $Id: lonwhatsnew.pm,v 1.59 2006/06/03 21:28:07 albertel Exp $
+# $Id: lonwhatsnew.pm,v 1.67 2006/12/20 23:02:33 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -256,7 +256,7 @@ sub display_actions_box {
'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',
@@ -286,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",
@@ -319,7 +315,7 @@ sub display_actions_box {
$r->print(&mt('Page set to be displayed after you have selected a role in this '.$lctype).
'. '.&mt('Currently: [_1]',$currinit).'. '.
&mt('Change for just this '.$lctype.'',$refpage).' '.
- &mt('or for all your courses/groups',$refpage).'
');
+ &mt('or for all your courses',$refpage).'
');
if ($command eq 'reset') {
$result = &process_reset($cdom,$crs);
@@ -468,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',
@@ -687,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,
@@ -701,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);
@@ -739,7 +732,6 @@ sub getitems {
$cdom,$crs);
}
- my $warningnum = 0;
foreach my $resource (@allres) {
my $result = '';
my $applies = 0;
@@ -748,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();
@@ -773,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);
}
}
@@ -790,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');
}
}
@@ -816,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);
}
}
}
@@ -839,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;
@@ -885,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} .= ''."\n";
- }
if (@parts > 1) {
- $$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}.' |
- |
-
';
- $$triggered{$symb}{numparts} ++;
+ $$triggered{$symb}{text}[$partcount] .= '
+ '.$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;
@@ -1016,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);
@@ -1159,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}.' |
');
$rowNum ++;
}
@@ -1214,8 +1216,14 @@ sub display_abovethreshold {
' '."\n".
' '.
"\n");
- $r->print(''.$lt{'reso'}.' | '.$lt{'part'}.' | '.$lt{'nust'}.' | '.$lt{'avat'}.' | '.$lt{'dedi'}.' | '.$lt{'lare'}.' | '.$lt{'reco'}.' |
');
+ $r->print(''.
+ ''.$lt{'reso'}.' | '.
+ ''.$lt{'part'}.' | '.$lt{'nust'}.' | '.
+ ''.$lt{'avat'}.' | '.$lt{'dedi'}.' | '.
+ ''.$lt{'lare'}.' | '.$lt{'reco'}.' |
');
+ my $row;
foreach my $res (@{$warnings}) {
+ $row++;
my ($map,$id,$url)=&Apache::lonnet::decode_symb($res);
my $linkurl=&Apache::lonnet::clutter($url);
my $rowspan;
@@ -1223,11 +1231,30 @@ sub display_abovethreshold {
$rowspan = 'rowspan="'.$$triggered{$res}{numparts}.'"';
}
$linkurl .= '?symb='.&escape($res);
- $r->print(''.$$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('
');
+ if (ref($$triggered{$res}{text}) eq 'ARRAY') {
+ if (@{$$triggered{$res}{text}} > 1) {
+ for (my $i=1; $i<@{$$triggered{$res}{text}}; $i++) {
+ $r->print(''.
+ $$triggered{$res}{text}[$i].'
');
+ }
+ }
+ }
}
- $r->print(' ');
+ $r->print('
| ');
} else {
- $r->print(' '.$lt{'nopr'}.'
| ');
+ $r->print(''.$lt{'nopr'}.' | ');
}
}
@@ -1298,9 +1325,13 @@ 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};
if ($feedurl =~ /bulletinboard/) {
$type = 'Bulletin Board';
}
+ if ($$unread{$ressymb}{'enclink'}) {
+ $disclink = $$unread{$ressymb}{'enclink'}.'?symb='.$$unread{$ressymb}{'encsymb'};
+ }
if ($rowNum %2 == 1) {
$rowColor = $rowColor1;
} else {
@@ -1308,7 +1339,7 @@ sub display_coursediscussion {
}
my $lastpost = &Apache::lonnavmaps::timeToHumanString(
$$unread{$ressymb}{'lastpost'});
- $r->print(''.$forum_title.' | '.$type.' | ');
+ $r->print(' '.$forum_title.' | '.$type.' | ');
if ($countunread eq 'on') {
my $unreadnum = $$unread{$ressymb}{'unreadcount'};
$r->print(''.$lastpost.' | '.
@@ -1516,7 +1547,7 @@ sub start_box {
chin => 'Change interval?',
chop => 'Change options?',
);
- my $showhide;
+ my ($showhide,$class);
if ($$show{$caller}) {
$showhide = 'Hide';
@@ -1548,6 +1579,7 @@ sub start_box {
| '.$lt{'chth'}.' |
');
}
+ $class='class="LC_whatsnew"';
} elsif (($caller eq 'versionchanges') && ($$show{$caller})) {
if ($$show{$caller}) {
$r->print('
@@ -1563,10 +1595,10 @@ sub start_box {
|
');
}
}
- $r->print('
+ $r->print('
- |