--- loncom/interface/lonmsg.pm 2004/03/01 01:06:10 1.86 +++ loncom/interface/lonmsg.pm 2004/03/01 01:19:51 1.87 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines for messaging # -# $Id: lonmsg.pm,v 1.86 2004/03/01 01:06:10 www Exp $ +# $Id: lonmsg.pm,v 1.87 2004/03/01 01:19:51 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1010,12 +1010,12 @@ sub handler { my $r=shift; # ----------------------------------------------------------- Set document type - - &Apache::loncommon::content_type($r,'text/html'); - $r->send_http_header; - - return OK if $r->header_only; - + + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + + return OK if $r->header_only; + # --------------------------- Get query string for limited number of parameters &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['display','replyto','forward','markread','markdel','markunread', @@ -1023,222 +1023,221 @@ sub handler { 'recordftf','sortedby']); $sqs='&sortedby='.$ENV{'form.sortedby'}; # ------------------------------------------------------ They checked for email - &Apache::lonnet::put('email_status',{'recnewemail'=>0}); + &Apache::lonnet::put('email_status',{'recnewemail'=>0}); # --------------------------------------------------------------- Render Output - if (!$ENV{'form.display'}) { - $r->print('EMail and Messaging'. - &Apache::loncommon::studentbrowser_javascript().''. - &Apache::loncommon::bodytag('EMail and Messages'). - &Apache::loncommon::help_open_faq(12). - &Apache::loncommon::help_open_bug('Communication Tools')); - } - if ($ENV{'form.display'}) { - my $msgid=$ENV{'form.display'}; - &statuschange($msgid,'read'); - my %message=&Apache::lonnet::get('nohist_email',[$msgid]); - my %content=&unpackagemsg($message{$msgid}); + if (!$ENV{'form.display'}) { + $r->print('EMail and Messaging'. + &Apache::loncommon::studentbrowser_javascript().''. + &Apache::loncommon::bodytag('EMail and Messages'). + &Apache::loncommon::help_open_faq(12). + &Apache::loncommon::help_open_bug('Communication Tools')); + } + if ($ENV{'form.display'}) { + my $msgid=$ENV{'form.display'}; + &statuschange($msgid,'read'); + my %message=&Apache::lonnet::get('nohist_email',[$msgid]); + my %content=&unpackagemsg($message{$msgid}); # info to generate "next" and "previous" buttons - my @messages=&sortedmessages(); - my $counter=0; - $r->print('
');
-      my $escmsgid=&Apache::lonnet::escape($msgid);
-      foreach (@messages) {
- 	  if ($_->[5] eq $escmsgid){
- 	      last;
- 	  }
- 	  $counter++;
-      }
-      $r->print('
'); - my $number_of_messages = scalar(@messages); #subtract 1 for last index + my @messages=&sortedmessages(); + my $counter=0; + $r->print('
');
+	my $escmsgid=&Apache::lonnet::escape($msgid);
+	foreach (@messages) {
+	    if ($_->[5] eq $escmsgid){
+		last;
+	    }
+	    $counter++;
+	}
+	$r->print('
'); + my $number_of_messages = scalar(@messages); #subtract 1 for last index # start output - $r->print('EMail and Messaging'); - if (defined($content{'baseurl'})) { - $r->print(""); - } - $r->print(&Apache::loncommon::studentbrowser_javascript(). - ''. - &Apache::loncommon::bodytag('EMail and Messages'). - &Apache::loncommon::help_open_faq(12). - &Apache::loncommon::help_open_bug('Communication Tools')); - my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'}); - - $r->print('
'.&mt('Subject').': '.$content{'subject'}. - '
'.&mt('From').': '. -&Apache::loncommon::aboutmewrapper( -&Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}), -$content{'sendername'},$content{'senderdomain'}).' ('. - $content{'sendername'}.' at '. - $content{'senderdomain'}.') '. - ($content{'courseid'}?'
'.&mt('Course').': '.$courseinfo{'description'}. -($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):''). - '
'.&mt('Time').': '.$content{'time'}.'

'. - ''. - ''. - ''. - ''. - ''. - ''); - if ($counter > 0){ - $r->print(''); - } - if ($counter < $number_of_messages - 1){ - $r->print(''); - } - $r->print('
'.&mt('Functions').':'.&mt('Reply').''.&mt('Forward').''.&mt('Mark Unread').'Delete'.&mt('Display all Messages').''.&mt('Previous').''.&mt('Next').'

'.
-             &Apache::lontexconvert::msgtexconverted($content{'message'},1).
-             '

'.$content{'citation'}); - } elsif ($ENV{'form.replyto'}) { - &comprep($r,$ENV{'form.replyto'}); - } elsif ($ENV{'form.sendreply'}) { - if ($ENV{'form.send'}) { - my $msgid=$ENV{'form.sendreply'}; - my %message=&Apache::lonnet::get('nohist_email',[$msgid]); - my %content=&unpackagemsg($message{$msgid},1); - &statuschange($msgid,'replied'); - if ((($ENV{'form.critmsg'}) || ($ENV{'form.sendbck'})) && - (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))) { - $r->print(&mt('Sending critical message').': '. - &user_crit_msg($content{'sendername'}, - $content{'senderdomain'}, - &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), - &Apache::lonfeedback::clear_out_html($ENV{'form.message'}), - $ENV{'form.sendbck'})); - } else { - $r->print(&mt('Sending').': '.&user_normal_msg($content{'sendername'}, - $content{'senderdomain'}, - &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), - &Apache::lonfeedback::clear_out_html($ENV{'form.message'}))); - } - } - if ($ENV{'form.displayedcrit'}) { - &discrit($r); - } else { - &disall($r); - } - } elsif ($ENV{'form.confirm'}) { - foreach (keys %ENV) { - if ($_=~/^form\.rec\_(.*)$/) { - $r->print('Confirming Receipt: '. - &user_crit_received($1).'
'); - } - if ($_=~/^form\.reprec\_(.*)$/) { - my $msgid=$1; - $r->print('Confirming Receipt: '. - &user_crit_received($msgid).'
'); - &comprep($r,$msgid); - } - } - &discrit($r); - } elsif ($ENV{'form.critical'}) { - &discrit($r); - } elsif ($ENV{'form.forward'}) { - &compout($r,$ENV{'form.forward'}); - } elsif ($ENV{'form.markread'}) { - } elsif ($ENV{'form.markdel'}) { - &statuschange($ENV{'form.markdel'},'deleted'); - &disall($r); - } elsif ($ENV{'form.markeddel'}) { - my $total=0; - foreach (keys %ENV) { - if ($_=~/^form\.delmark_(.*)$/) { - &statuschange(&Apache::lonnet::unescape($1),'deleted'); - $total++; - } - } - $r->print('Deleted '.$total.' message(s)

'); - &disall($r); - } elsif ($ENV{'form.markunread'}) { - &statuschange($ENV{'form.markunread'},'new'); - &disall($r); - } elsif ($ENV{'form.compose'}) { - &compout($r,'',$ENV{'form.compose'}); - } elsif ($ENV{'form.recordftf'}) { - &facetoface($r,$ENV{'form.recordftf'}); - } elsif ($ENV{'form.sendmail'}) { - my $sendstatus=''; - if ($ENV{'form.send'}) { - my %content=(); - undef %content; - if ($ENV{'form.forwid'}) { - my $msgid=$ENV{'form.forwid'}; - my %message=&Apache::lonnet::get('nohist_email',[$msgid]); - %content=&unpackagemsg($message{$msgid},1); - &statuschange($msgid,'forwarded'); - $ENV{'form.message'}.="\n\n-- Forwarded message --\n\n". - $content{'message'}; - } - my %toaddr=(); - undef %toaddr; - if ($ENV{'form.sendmode'} eq 'group') { - foreach (keys %ENV) { - if ($_=~/^form\.send\_to\_\&\&\&[^\&]*\&\&\&\_(.+)$/) { - $toaddr{$1}=''; - } - } - } elsif ($ENV{'form.sendmode'} eq 'upload') { - foreach (split(/[\n\r\f]+/,$ENV{'form.upfile'})) { - my ($rec,$txt)=split(/\s*\:\s*/,$_); - if ($txt) { - $rec=~s/\@/\:/; - $toaddr{$rec}.=$txt."\n"; - } - } - } else { - $toaddr{$ENV{'form.recuname'}.':'.$ENV{'form.recdomain'}}=''; - } - if ($ENV{'form.additionalrec'}) { - foreach (split(/\,/,$ENV{'form.additionalrec'})) { - my ($auname,$audom)=split(/\@/,$_); - $toaddr{$auname.':'.$audom}=''; - } - } - foreach (keys %toaddr) { - my ($recuname,$recdomain)=split(/\:/,$_); - my $msgtxt=&Apache::lonfeedback::clear_out_html($ENV{'form.message'}); - if ($toaddr{$_}) { $msgtxt.='


'.$toaddr{$_}; } - if ((($ENV{'form.critmsg'}) || ($ENV{'form.sendbck'})) && - (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))) { - $r->print(&mt('Sending critical message').' ...'); - $sendstatus.=' '.&user_crit_msg($recuname,$recdomain, - &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), - $msgtxt, - $ENV{'form.sendbck'}); - } else { - $r->print(&mt('Sending').' ...'); - $sendstatus.=' '.&user_normal_msg($recuname,$recdomain, - &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), - $msgtxt, - $content{'citation'}); - } - $r->print('
'); - } - } - if ($sendstatus=~/^(\s*(?:ok|con_delayed)\s*)*$/) { - $r->print('
'.&mt('Completed.').''); - if ($ENV{'form.displayedcrit'}) { - &discrit($r); - } else { - &disall($r); - } - } else { - $r->print( - '

'.&mt('Could not deliver message').'

'. - &mt('Please use the browser "Back" button and correct the recipient addresses') - ); - } - } else { - &disall($r); - } - $r->print(''); - return OK; - + $r->print('EMail and Messaging'); + if (defined($content{'baseurl'})) { + $r->print(""); + } + $r->print(&Apache::loncommon::studentbrowser_javascript(). + ''. + &Apache::loncommon::bodytag('EMail and Messages'). + &Apache::loncommon::help_open_faq(12). + &Apache::loncommon::help_open_bug('Communication Tools')); + my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'}); + + $r->print('
'.&mt('Subject').': '.$content{'subject'}. + '
'.&mt('From').': '. + &Apache::loncommon::aboutmewrapper( + &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}), + $content{'sendername'},$content{'senderdomain'}).' ('. + $content{'sendername'}.' at '. + $content{'senderdomain'}.') '. + ($content{'courseid'}?'
'.&mt('Course').': '.$courseinfo{'description'}. + ($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):''). + '
'.&mt('Time').': '.$content{'time'}.'

'. + ''. + ''. + ''. + ''. + ''. + ''); + if ($counter > 0){ + $r->print(''); + } + if ($counter < $number_of_messages - 1){ + $r->print(''); + } + $r->print('
'.&mt('Functions').':'.&mt('Reply').''.&mt('Forward').''.&mt('Mark Unread').'Delete'.&mt('Display all Messages').''.&mt('Previous').''.&mt('Next').'

'.
+		  &Apache::lontexconvert::msgtexconverted($content{'message'},1).
+		  '

'.$content{'citation'}); + } elsif ($ENV{'form.replyto'}) { + &comprep($r,$ENV{'form.replyto'}); + } elsif ($ENV{'form.sendreply'}) { + if ($ENV{'form.send'}) { + my $msgid=$ENV{'form.sendreply'}; + my %message=&Apache::lonnet::get('nohist_email',[$msgid]); + my %content=&unpackagemsg($message{$msgid},1); + &statuschange($msgid,'replied'); + if ((($ENV{'form.critmsg'}) || ($ENV{'form.sendbck'})) && + (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))) { + $r->print(&mt('Sending critical message').': '. + &user_crit_msg($content{'sendername'}, + $content{'senderdomain'}, + &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), + &Apache::lonfeedback::clear_out_html($ENV{'form.message'}), + $ENV{'form.sendbck'})); + } else { + $r->print(&mt('Sending').': '.&user_normal_msg($content{'sendername'}, + $content{'senderdomain'}, + &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), + &Apache::lonfeedback::clear_out_html($ENV{'form.message'}))); + } + } + if ($ENV{'form.displayedcrit'}) { + &discrit($r); + } else { + &disall($r); + } + } elsif ($ENV{'form.confirm'}) { + foreach (keys %ENV) { + if ($_=~/^form\.rec\_(.*)$/) { + $r->print('Confirming Receipt: '. + &user_crit_received($1).'
'); + } + if ($_=~/^form\.reprec\_(.*)$/) { + my $msgid=$1; + $r->print('Confirming Receipt: '. + &user_crit_received($msgid).'
'); + &comprep($r,$msgid); + } + } + &discrit($r); + } elsif ($ENV{'form.critical'}) { + &discrit($r); + } elsif ($ENV{'form.forward'}) { + &compout($r,$ENV{'form.forward'}); + } elsif ($ENV{'form.markread'}) { + } elsif ($ENV{'form.markdel'}) { + &statuschange($ENV{'form.markdel'},'deleted'); + &disall($r); + } elsif ($ENV{'form.markeddel'}) { + my $total=0; + foreach (keys %ENV) { + if ($_=~/^form\.delmark_(.*)$/) { + &statuschange(&Apache::lonnet::unescape($1),'deleted'); + $total++; + } + } + $r->print('Deleted '.$total.' message(s)

'); + &disall($r); + } elsif ($ENV{'form.markunread'}) { + &statuschange($ENV{'form.markunread'},'new'); + &disall($r); + } elsif ($ENV{'form.compose'}) { + &compout($r,'',$ENV{'form.compose'}); + } elsif ($ENV{'form.recordftf'}) { + &facetoface($r,$ENV{'form.recordftf'}); + } elsif ($ENV{'form.sendmail'}) { + my $sendstatus=''; + if ($ENV{'form.send'}) { + my %content=(); + undef %content; + if ($ENV{'form.forwid'}) { + my $msgid=$ENV{'form.forwid'}; + my %message=&Apache::lonnet::get('nohist_email',[$msgid]); + %content=&unpackagemsg($message{$msgid},1); + &statuschange($msgid,'forwarded'); + $ENV{'form.message'}.="\n\n-- Forwarded message --\n\n". + $content{'message'}; + } + my %toaddr=(); + undef %toaddr; + if ($ENV{'form.sendmode'} eq 'group') { + foreach (keys %ENV) { + if ($_=~/^form\.send\_to\_\&\&\&[^\&]*\&\&\&\_(.+)$/) { + $toaddr{$1}=''; + } + } + } elsif ($ENV{'form.sendmode'} eq 'upload') { + foreach (split(/[\n\r\f]+/,$ENV{'form.upfile'})) { + my ($rec,$txt)=split(/\s*\:\s*/,$_); + if ($txt) { + $rec=~s/\@/\:/; + $toaddr{$rec}.=$txt."\n"; + } + } + } else { + $toaddr{$ENV{'form.recuname'}.':'.$ENV{'form.recdomain'}}=''; + } + if ($ENV{'form.additionalrec'}) { + foreach (split(/\,/,$ENV{'form.additionalrec'})) { + my ($auname,$audom)=split(/\@/,$_); + $toaddr{$auname.':'.$audom}=''; + } + } + foreach (keys %toaddr) { + my ($recuname,$recdomain)=split(/\:/,$_); + my $msgtxt=&Apache::lonfeedback::clear_out_html($ENV{'form.message'}); + if ($toaddr{$_}) { $msgtxt.='


'.$toaddr{$_}; } + if ((($ENV{'form.critmsg'}) || ($ENV{'form.sendbck'})) && + (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))) { + $r->print(&mt('Sending critical message').' ...'); + $sendstatus.=' '.&user_crit_msg($recuname,$recdomain, + &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), + $msgtxt, + $ENV{'form.sendbck'}); + } else { + $r->print(&mt('Sending').' ...'); + $sendstatus.=' '.&user_normal_msg($recuname,$recdomain, + &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}), + $msgtxt, + $content{'citation'}); + } + $r->print('
'); + } + } + if ($sendstatus=~/^(\s*(?:ok|con_delayed)\s*)*$/) { + $r->print('
'.&mt('Completed.').''); + if ($ENV{'form.displayedcrit'}) { + &discrit($r); + } else { + &disall($r); + } + } else { + $r->print( + '

'.&mt('Could not deliver message').'

'. + &mt('Please use the browser "Back" button and correct the recipient addresses') + ); + } + } else { + &disall($r); + } + $r->print(''); + return OK; } # ================================================= Main program, reset counter