--- loncom/interface/lonmsg.pm 2005/04/07 06:56:23 1.140 +++ loncom/interface/lonmsg.pm 2005/11/01 15:59:18 1.153 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines for messaging # -# $Id: lonmsg.pm,v 1.140 2005/04/07 06:56:23 albertel Exp $ +# $Id: lonmsg.pm,v 1.153 2005/11/01 15:59:18 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -114,6 +114,7 @@ use HTML::Entities(); use Mail::Send; use Apache::lonlocal; use Apache::loncommunicate; +use Apache::lonfeedback; # Querystring component with sorting type my $sqs; @@ -141,7 +142,8 @@ sub packagemsg { $partsubj=&Apache::lonnet::escape($partsubj); my $msgid=&Apache::lonnet::escape( $now.':'.$partsubj.':'.$env{'user.name'}.':'. - $env{'user.domain'}.':'.$msgcount.':'.$$); + $env{'user.domain'}.':'.$msgcount.':'. + $env{'request.course.id'}.':'.$$); my $result=''.$env{'user.name'}.''. ''.$env{'user.domain'}.''. ''.$subject.''. @@ -209,13 +211,13 @@ sub unpackmsgid { my ($msgid,$folder)=@_; $msgid=&Apache::lonnet::unescape($msgid); my $suffix=&foldersuffix($folder); - my ($sendtime,$shortsubj,$fromname,$fromdomain)=split(/\:/, + my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid)=split(/\:/, &Apache::lonnet::unescape($msgid)); my %status=&Apache::lonnet::get('email_status'.$suffix,[$msgid]); if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; } unless ($status{$msgid}) { $status{$msgid}='new'; } - return ($sendtime,$shortsubj,$fromname,$fromdomain,$status{$msgid}); -} + return ($sendtime,$shortsubj,$fromname,$fromdomain,$status{$msgid},$fromcid); +} sub sendemail { @@ -336,7 +338,20 @@ sub del_url_author_res_msg { } return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author); } +# =================================== Clear out all author messages in URL path +sub clear_author_res_msg { + my $url=shift; + $url=&Apache::lonnet::declutter($url); + my ($domain,$author)=($url=~/^(\w+)\/(\w+)\//); + my @delmsgs=(); + foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) { + if ($_=~/^\Q$url\E/) { + push (@delmsgs,$_); + } + } + return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author); +} # ================= Return hash with URLs for which there is a resource message sub all_url_author_res_msg { @@ -563,13 +578,14 @@ sub scrollbuttons { my ($start,$maxdis,$first,$finish,$total)=@_; unless ($total>0) { return ''; } $start++; $maxdis++;$first++;$finish++; - return + return + &mt('Page').': '. ''. ''. ' of '.$maxdis. ''. '
'. - &mt('Messages [_1] through [_2] of [_3]',$first,$finish,$total).''; + &mt('Showing messages [_1] through [_2] of [_3]',$first,$finish,$total).''; } # =============================================================== Folder suffix @@ -595,6 +611,9 @@ sub statuschange { if (($newstatus eq 'deleted') || ($newstatus eq 'new')) { &Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus}); } + if ($newstatus eq 'deleted') { + &movemsg(&Apache::lonnet::unescape($msgid),$folder,'trash'); + } } # ============================================================= Make new folder @@ -612,6 +631,7 @@ sub makefolder { sub movemsg { my ($msgid,$srcfolder,$trgfolder)=@_; + if ($srcfolder eq 'new') { $srcfolder=''; } my $srcsuffix=&foldersuffix($srcfolder); my $trgsuffix=&foldersuffix($trgfolder); @@ -705,6 +725,8 @@ ENDDISHEADER &Apache::loncoursedata::CL_FULLNAME(), &Apache::loncoursedata::CL_SECTION()]); next if ($status ne 'Active'); + next if ($env{'request.course.sec'} && + $section ne $env{'request.course.sec'}); my $key = 'send_to_&&&'.$section.'&&&_'.$student; if (! defined($fullname) || $fullname eq '') { $fullname = $sname; } $r->print('