--- loncom/interface/lonmsg.pm 2004/09/10 06:38:24 1.106 +++ loncom/interface/lonmsg.pm 2004/09/10 08:42:21 1.107 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines for messaging # -# $Id: lonmsg.pm,v 1.106 2004/09/10 06:38:24 www Exp $ +# $Id: lonmsg.pm,v 1.107 2004/09/10 08:42:21 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -552,17 +552,25 @@ sub makefolder { sub movemsg { my ($msgid,$srcfolder,$trgfolder)=@_; + my $unmsgid=&Apache::lonnet::unescape($msgid); my $srcsuffix=&foldersuffix($srcfolder); my $trgsuffix=&foldersuffix($trgfolder); - my $srcstatus=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]); - my $trgstatus=$srcstatus; - if ($trgstatus eq 'deleted') { $trgstatus='read'; } - &Apache::lonnet::put( - 'nohist_email'.$trgsuffix,{$msgid => - &Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid])}); - &statuschange($msgid,$trgstatus,$trgfolder); + +# Copy message + my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]); + &Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}}); + +# Copy status + my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]); + &Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}}); +# See if was deleted -> becomes "read" in trash + my $currentstatus=(&unpackmsgid($status{$unmsgid})); + if ($currentstatus eq 'deleted') { + &statuschange($msgid,'read',$trgfolder); + } +# Delete orginals &Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]); - &Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]); + &Apache::lonnet::del('email_status'.$srcsuffix,[$unmsgid]); } # ======================================================= Display a course list @@ -1538,16 +1546,17 @@ sub displaymessage { my $numblocked = 0; # info to generate "next" and "previous" buttons and check if message is blocked &blockcheck(\%setters,\$startblock,\$endblock); - my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked); + my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder); if ( $blocked{$msgid} eq 'ON' ) { &printheader($r,'/adm/email',&mt('Display a Message')); $r->print(&mt('You attempted to display a message that is currently blocked because you are enrolled in one or more courses for which there is an ongoing online exam.')); &build_block_table($r,$startblock,$endblock,\%setters); return; } - &statuschange($msgid,'read'); + &statuschange($msgid,'read',$folder); my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]); my %content=&unpackagemsg($message{$msgid}); + my $counter=0; $r->print('
');
     my $escmsgid=&Apache::lonnet::escape($msgid);
@@ -1573,6 +1582,7 @@ sub displaymessage {
 	      'Delete'.
 	      ''.&mt('Display all Messages').'');
     if ($counter > 0){
 	$r->print('