--- loncom/interface/lonmsg.pm 2001/07/27 20:17:14 1.10 +++ loncom/interface/lonmsg.pm 2001/08/03 14:00:07 1.12 @@ -12,6 +12,8 @@ # # 10/19,10/20,10/30, # 02/06/01 Gerd Kortemeyer +# 07/27 Guy Albertelli +# 07/27,07/28,07/30,08/03 Gerd Kortemeyer package Apache::lonmsg; @@ -141,8 +143,9 @@ sub user_crit_msg { # =================================================== Critical message received sub user_crit_received { - my $message=shift; - my %contents=&unpackagemsg($message); + my $msgid=shift; + my %message=&Apache::lonnet::get('critical',[$msgid]); + my %contents=&unpackagemsg($message{$msgid}); my $status='rec: '. &user_normal_msg($contents{'sendername'},$contents{'senderdomain'}, 'Receipt: '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}, @@ -151,13 +154,15 @@ sub user_crit_received { $contents{'subject'}.'" dated '.$contents{'time'}.".\n\n" .'Message ID: '.$contents{'msgid'}); $status.=' trans: '. - &Apache::lonnet::put('nohist_email',{$contents{'msgid'} => $message}); + &Apache::lonnet::put( + 'nohist_email',{$contents{'msgid'} => $message{$msgid}}); $status.=' del: '. &Apache::lonnet::del('critical',[$contents{'msgid'}]); &Apache::lonnet::log($ENV{'user.domain'},$ENV{'user.name'}, $ENV{'user.home'},'Received critical message '. $contents{'msgid'}. ', '.$status); + return $status; } # ======================================================== Normal communication @@ -199,6 +204,23 @@ sub statuschange { } # ===================================================================== Handler +sub discrit { + my $r=shift; + $r->print('

Critical Messages

'. + '
'. + ''); + my %what=&Apache::lonnet::dump('critical'); + map { + my %content=&unpackagemsg($what{$_}); + $content{'message'}=~s/\n/\/g; + $r->print('
From: '.$content{'sendername'}.'@'. + $content{'senderdomain'}.' ('.$content{'time'}. + ')
'.$content{'message'}.'
'. + ''); + } sort keys %what; + $r->print(''); +} + sub handler { my $r=shift; @@ -217,7 +239,8 @@ sub handler { $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; if (($name eq 'display') || ($name eq 'replyto') || ($name eq 'forward') || ($name eq 'mark') || - ($name eq 'sendreply')) { + ($name eq 'sendreply') || ($name eq 'compose') || + ($name eq 'sendmail') || ($name eq 'critical')) { unless ($ENV{'form.'.$name}) { $ENV{'form.'.$name}=$value; } @@ -251,6 +274,11 @@ sub handler { $quotemsg=~s/\f/\n/g; $quotemsg=~s/\n+/\n\> /g; my $subject='Re: '.$content{'subject'}; + my $dispcrit=''; + if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) { + $dispcrit= + ' Send as critical message

'; + } $r->print(<<"ENDREPLY");

@@ -258,6 +286,7 @@ Subject: $quotemsg

+$dispcrit

ENDREPLY @@ -266,12 +295,48 @@ ENDREPLY my %message=&Apache::lonnet::get('nohist_email',[$msgid]); my %content=&unpackagemsg($message{$msgid}); &statuschange($msgid,'replied'); - $r->print('Sending: '.&user_normal_msg($content{'sendername'}, + if (($ENV{'form.critmsg'}) && + (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))) { + $r->print('Sending critical: '. + &user_crit_msg($content{'sendername'}, + $content{'senderdomain'}, + $ENV{'form.subject'}, + $ENV{'form.message'})); + } else { + $r->print('Sending: '.&user_normal_msg($content{'sendername'}, $content{'senderdomain'}, $ENV{'form.subject'}, $ENV{'form.message'})); + } + } elsif ($ENV{'form.confirm'}) { + map { + if ($_=~/^form\.rec\_(.*)$/) { + $r->print('Confirming Receipt: '. + &user_crit_received($1).'
'); + } + } keys %ENV; + &discrit($r); + } elsif ($ENV{'form.critical'}) { + &discrit($r); } elsif ($ENV{'form.forward'}) { } elsif ($ENV{'form.mark'}) { + } elsif ($ENV{'form.compose'}) { + my $dispcrit=''; + if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) { + $dispcrit= + ' Send as critical message

'; + } + $r->print(<<"ENDCOMP"); +

+ +Subject:

+

+$dispcrit + +

+ENDCOMP + } elsif ($ENV{'form.sendmail'}) { } else { $r->print(''. '');
 DateUsernameDomainSubjectStatus