--- loncom/interface/lonwhatsnew.pm 2015/03/12 03:28:51 1.105.2.10 +++ loncom/interface/lonwhatsnew.pm 2015/07/21 21:26:32 1.118 @@ -1,5 +1,5 @@ # -# $Id: lonwhatsnew.pm,v 1.105.2.10 2015/03/12 03:28:51 raeburn Exp $ +# $Id: lonwhatsnew.pm,v 1.118 2015/07/21 21:26:32 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1275,29 +1275,36 @@ sub process_update { sub getnormalmail { my ($newmsgs) = @_; -# Check for unread mail in course +# Check for unread messages in user's INBOX (which were sent in context of current course). my $msgcount = 0; - - my @messages = sort(&Apache::lonnet::getkeys('nohist_email')); - foreach my $message (@messages) { - my $msgid=&escape($message); - my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)= - &Apache::lonmsg::unpackmsgid($msgid); - if (($fromcid) && ($fromcid eq $env{'request.course.id'})) { - if (defined($sendtime) && $sendtime!~/error/) { - if ($status eq 'new') { - $sendtime = &Apache::lonlocal::locallocaltime($sendtime); - $msgcount ++; - if ($shortsubj eq '') { - $shortsubj = &mt('No subject'); + my @messages = &Apache::lonnet::getkeys('nohist_email'); + return $msgcount if (!@messages); + my %emailstatus = &Apache::lonnet::dump('email_status'); + foreach my $msgid (sort(@messages)) { + if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) { + my $skipstatus; + if ($emailstatus{$msgid} eq 'new') { + $skipstatus = 1; + } + my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)= + &Apache::lonmsg::unpackmsgid($msgid,undef,$skipstatus,undef, + $env{'request.course.id'}); + if (($fromcid) && ($fromcid eq $env{'request.course.id'})) { + if (defined($sendtime) && $sendtime!~/error/) { + if (($emailstatus{$msgid} eq 'new') || ($status eq 'new')) { + $sendtime = &Apache::lonlocal::locallocaltime($sendtime); + $msgcount ++; + if ($shortsubj eq '') { + $shortsubj = &mt('No subject'); + } + push(@{$newmsgs}, { + msgid => $msgid, + sendtime => $sendtime, + shortsub => $shortsubj, + from => $fromname, + fromdom => $fromdom + }); } - push(@{$newmsgs}, { - msgid => $msgid, - sendtime => $sendtime, - shortsub => $shortsubj, - from => $fromname, - fromdom => $fromdom - }); } } } @@ -1307,13 +1314,14 @@ sub getnormalmail { sub getcritmail { my ($critmsgs) = @_; -# Check for critical messages in course +# Check for critical messages which were sent in context of current course. my %what=&Apache::lonnet::dump('critical'); my $result = ''; my $critmsgcount = 0; foreach my $msgid (sort(keys(%what))) { my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)= - &Apache::lonmsg::unpackmsgid($msgid); + &Apache::lonmsg::unpackmsgid($msgid,undef,1,undef, + $env{'request.course.id'}); if (($fromcid) && ($fromcid eq $env{'request.course.id'})) { if (defined($sendtime) && $sendtime!~/error/) { $sendtime = &Apache::lonlocal::locallocaltime($sendtime); @@ -1622,13 +1630,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) { @@ -1950,7 +1958,7 @@ sub display_coursediscussion { my $forum_title = $$unread{$ressymb}{'title'}; my $type = 'Resource'; my $feedurl=&Apache::lonfeedback::get_feedurl($ressymb); - my $disclink = $feedurl.'?symb='.&escape($$unread{$ressymb}{symb}); + my $disclink = $feedurl.'?symb='. &escape($$unread{$ressymb}{symb}); if ($feedurl =~ /bulletinboard/) { $type = 'Discussion Board'; }