--- loncom/interface/lonmsgdisplay.pm 2008/02/22 18:08:35 1.85
+++ loncom/interface/lonmsgdisplay.pm 2008/06/06 05:24:28 1.86
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.85 2008/02/22 18:08:35 bisitz Exp $
+# $Id: lonmsgdisplay.pm,v 1.86 2008/06/06 05:24:28 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1210,6 +1210,7 @@ sub compout {
my $dissub='';
my $dismsg='';
my $disbase='';
+ my $attachrow;
my $func=&mt('Send New');
my %lt=&Apache::lonlocal::texthash('us' => 'Username',
'do' => 'Domain',
@@ -1224,7 +1225,15 @@ sub compout {
'gmt' => 'General message text',
'tff' => 'The file format for the uploaded portion of the message is',
'uas' => 'Upload and Send',
+ 'atta' => 'Attachment',
);
+ my %attachmax = (
+ text => '(128 KB max size)',
+ num => 131072,
+ );
+ if (!$forwarding && !$multiforward) {
+ $attachrow = '
'.$lt{'atta'}.' '.$attachmax{'text'}.': ';
+ }
if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
'/'.$env{'request.course.sec'})) {
@@ -1418,7 +1427,10 @@ $latexHelp.
$latexHelp
+
+$attachrow
+
+
$dispcrit
$disbase
ENDCOMP
@@ -2392,6 +2404,8 @@ sub sendoffmail {
my %msg_status;
my $numsent = 0;
my $nosentstore = 1;
+ my $attachmenturl;
+ my $now = time;
my ($cdom,$cnum,$group);
if (exists($env{'form.group'})) {
$group = $env{'form.group'};
@@ -2414,10 +2428,13 @@ sub sendoffmail {
if ($env{'form.forwid'}) {
my $msgid=$env{'form.forwid'};
my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
- %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1);
+ %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1,1);
&statuschange($msgid,'forwarded',$folder);
- $env{'form.message'}.="\n\n-- Forwarded message --\n\n".
- $content{'message'};
+ if ($content{'attachmenturl'} ne '') {
+ $attachmenturl = $content{'attachmenturl'};
+ }
+ $env{'form.message'} .= "\n\n-- Forwarded message --\n\n".
+ $content{'message'};
}
if ($env{'form.replyid'}) {
my $msgid=$env{'form.replyid'};
@@ -2516,7 +2533,18 @@ sub sendoffmail {
$env{'user.domain'},\%reciphash);
if ($recipstatus ne 'ok') {
&Apache::lonnet::logthis('Failed to store Bcc and Cc recipients for '.$env{'user.name'}.':'.$env{'user.domain'});
- }
+ }
+ if ($env{'form.attachment'}) {
+ if (length($env{'form.attachment'})<131072) {
+ $attachmenturl=&Apache::lonnet::userfileupload('attachment',undef,'feedback/'.$now);
+ } else {
+ $r->print(''.&mt('Attachment not included - exceeded permitted length').'
');
+ }
+ } elsif ($env{'form.multiforward'}) {
+ if ($env{'form.attachmenturl'} ne '') {
+ $attachmenturl = $env{'form.attachmenturl'};
+ }
+ }
my @recusers;
my @recudoms;
foreach my $address (sort(keys(%toaddr))) {
@@ -2542,7 +2570,7 @@ sub sendoffmail {
&Apache::lonmsg::user_normal_msg($recuname,$recdomain,
$msgsubj,$msgtxt,
$content{'citation'},
- undef,undef,
+ undef,$attachmenturl,
$env{'form.permanent'},
\$sentmessage{$address},
undef,undef,undef,
@@ -2575,7 +2603,7 @@ sub sendoffmail {
$specialresult =
&Apache::lonmsg::user_normal_msg_raw($cnum,$cdom,
$subj_prefix.' '.$course_str,$savemsg,undef,undef,
- undef,undef,undef,\$specialmsgid,undef,undef,undef,
+ $attachmenturl,undef,undef,\$specialmsgid,undef,undef,undef,
undef,undef,1);
$specialmsgid = &unescape($specialmsgid);
if ($specialresult eq 'ok') {
@@ -2592,7 +2620,7 @@ sub sendoffmail {
$pid);
&Apache::lonmsg::user_normal_msg_raw($cnum,$cdom,
$subj_prefix.' ['.$recipient.']',$msgsubj,
- undef,undef,undef,undef,$usermsgid,undef,
+ undef,undef,$attachmenturl,undef,$usermsgid,undef,
undef,$specialmsgid,undef,undef,undef,1);
}
}
@@ -2600,7 +2628,7 @@ sub sendoffmail {
&Apache::lonmsg::process_sent_mail($msgsubj,
$subj_prefix,$numsent,$stamp,$msgname,$msgdom,
$msgcount,$context,$pid,$savemsg,\@recusers,
- \@recudoms);
+ \@recudoms,undef,$attachmenturl);
}
} else {
&Apache::lonnet::logthis('Failed to create record of critical, broadcast or archived message in '.$env{'course.'.$env{'request.course.id'}.'.num'}.' '&mt('at').' '.$env{'course.'.$env{'request.course.id'}.'.domain'}.' - no msgid generated');
@@ -2612,7 +2640,7 @@ sub sendoffmail {
&Apache::lonmsg::process_sent_mail($msgsubj,$subj_prefix,
$numsent,$stamp,$env{'user.name'},
$env{'user.domain'},$msgcount,$context,
- $$,$savemsg,\@recusers,\@recudoms);
+ $$,$savemsg,\@recusers,\@recudoms,undef,$attachmenturl);
}
}
if (!$env{'form.multiforward'}) {
@@ -2864,7 +2892,7 @@ sub handler {
foreach my $item (@to_forward) {
my $msgid=&unescape($item);
my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
- my %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1);
+ my %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1,1);
if ($env{'form.showorigsubj'}) {
$env{'form.subject'} = $fixed_subj.$content{'subject'};
} else {
@@ -2878,8 +2906,10 @@ sub handler {
&Apache::loncommon::plainname($uname,$udom).' ('.
$uname.':'.$udom.')';
}
- $env{'form.message'} .= "\n\n-- Forwarded message --\n\n".
- $content{'message'};
+ $env{'form.message'}.="\n\n-- Forwarded message --\n\n".
+ $content{'message'};
+ $env{'form.attachmenturl'} = $content{'attachmenturl'};
+ $env{'form.multiforwid'} = $item;
$fwdcount ++;
$r->print($fwdcount.': ');
$sendresult{$msgid} = &sendoffmail($r,$folder);