--- loncom/interface/lonmsgdisplay.pm 2007/07/17 18:35:54 1.81 +++ 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.81 2007/07/17 18:35:54 albertel Exp $ +# $Id: lonmsgdisplay.pm,v 1.86 2008/06/06 05:24:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -555,7 +555,7 @@ sub disgroup { 'recipients to select.'); return $result; } else { - $result = &mt('Select message recipients from the group members listed below.
'); + $result = &mt('Select message recipients from the group members listed below.').'
'; my %Sortby = ( active => {}, previous => {}, @@ -737,7 +737,7 @@ $content{'sendername'}.':'. '
'.&mt('Subject').': '.$content{'subject'}. '
'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).
-            '
'; + '
'; my ($rec_button,$reprec_button); $rec_button = &mt('Move to Inbox'); if (!$content{'noreplies'}) { @@ -752,7 +752,7 @@ $content{'sendername'}.':'. } else { $result .= &mt('Access to other pages will be prevented until you have moved the message to your inbox.'); } - $result .= '
'. + $result .= '

'. ''; if (!$content{'noreplies'}) { $result .= ' $jscript - function checkfoldermove() { - if (document.disall.checkedaction.options[document.disall.checkedaction.selectedIndex].value == 'markedmove') { - if (document.disall.movetofolder.options[document.disall.movetofolder.selectedIndex].value == "") { - alert("$lt{'sede'}"); - return; - } - } - return; - } - function validate_checkedaction() { document.disall.markedaction.value = document.disall.checkedaction.options[document.disall.checkedaction.selectedIndex].value; if (document.disall.checkedaction.options[document.disall.checkedaction.selectedIndex].value == 'markedmove') { @@ -1110,7 +1100,7 @@ ENDDISHEADER ''."\n". ' '."\n". ''.&mt('Action').'
'."\n". - ' '."\n"); if ($folder ne 'trash') { $r->print(' '."\n"); @@ -1204,8 +1194,9 @@ sub compout { &printheader($r,'/adm/email?compose=multiforward', 'Forwarding Multiple Messages'); if ($multiforward > 1) { - $r->print(&mt('Each of the [quant,_1,message] you checked -will be forwarded to the recipient(s) you select below.',$multiforward).'
'); + $r->print(&mt('Each of the [quant,_1,message] you checked' + .' will be forwarded to the recipient(s) you select below.',$multiforward) + .'
'); } else { $r->print(&mt('The message you checked will be forwarded to the recipient(s) you select below.').'
'); } @@ -1219,6 +1210,7 @@ will be forwarded to the recipient(s) yo my $dissub=''; my $dismsg=''; my $disbase=''; + my $attachrow; my $func=&mt('Send New'); my %lt=&Apache::lonlocal::texthash('us' => 'Username', 'do' => 'Domain', @@ -1233,7 +1225,15 @@ will be forwarded to the recipient(s) yo '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'})) { @@ -1427,7 +1427,10 @@ $latexHelp. $latexHelp


+ +$attachrow +

+
$dispcrit $disbase ENDCOMP @@ -1514,9 +1517,10 @@ ENDREP sub additional_rec_row { my ($lt) = @_; my $cc = &mt('Cc:'); - my $bcc = &mt('Bcc:'); + my $bcc = &mt('Bcc:'); + my $exmpl = &mt('username:domain,username:domain,...'); my $output = <<"ENDADD"; -$lt->{'ad'} :
username:domain,username:domain, ... +$lt->{'ad'} :
($exmpl)  $cc
$bcc @@ -2073,6 +2077,22 @@ sub displaymessage { $counter++; } $r->print(''); + + my $see_anonymous; + my $from_student = 0; + if ($env{'request.course.id'} eq $content{'courseid'}) { + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $username = $content{'sendername'}.':'.$content{'senderdomain'}; + my %classlist_entry = + &Apache::lonnet::get('classlist',[$username],$cdom,$cnum); + if (exists($classlist_entry{$username})) { + $from_student = 1; + $see_anonymous = &Apache::lonnet::allowed('rin',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')); + } + } + + my $number_of_messages = scalar(@messages); #subtract 1 for last index # start output &printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'}); @@ -2107,6 +2127,7 @@ sub displaymessage { $symb=&Apache::lonnet::symbread($content{'baseurl'}); } if ($env{'user.adv'}) { + my $adv_actions; $r->print(''); if (&Apache::lonnet::allowed('vgr',$env{'request.course.id'})) { $r->print(''); @@ -2146,7 +2167,10 @@ sub displaymessage { if (defined($content{'baseurl'})) { $baseurl = &Apache::lonenc::check_encrypt($content{'baseurl'}); } - $r->print(&Apache::loncommon::student_image_tag($content{'senderdomain'},$content{'sendername'})); + if ($from_student && $see_anonymous ) { + $r->print(&Apache::loncommon::student_image_tag($content{'senderdomain'},$content{'sendername'})); + } + $r->print('
'.&mt('Subject').': '.$content{'subject'}); if ($folder eq 'sent') { $r->print('
'.&mt('To').': '.$tolist); @@ -2380,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'}; @@ -2402,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'}; @@ -2504,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))) { @@ -2530,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, @@ -2563,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') { @@ -2580,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); } } @@ -2588,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'); @@ -2600,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'}) { @@ -2617,7 +2657,7 @@ sub sendoffmail { } } else { $r->print('

'.&mt('Could not deliver message').' '. - &mt('Please use the browser "Back" button and correct the recipient addresses '."($sendstatus)").'

'); + &mt('Please use the browser "Back" button and correct the recipient addresses ([_1]).',$sendstatus).'

'); } } } @@ -2852,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 { @@ -2866,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);
'.&mt('Currently available actions (will open extra window)').':'.&Apache::loncommon::track_student_link(&mt('View recent activity'),$content{'sendername'},$content{'senderdomain'},'check').'