[LON-CAPA-cvs] cvs: loncom /interface lonmsg.pm

www lon-capa-cvs@mail.lon-capa.org
Tue, 02 Mar 2004 02:51:09 -0000


This is a MIME encoded message

--www1078195869
Content-Type: text/plain

www		Mon Mar  1 21:51:09 2004 EDT

  Modified files:              
    /loncom/interface	lonmsg.pm 
  Log:
  * Bug #2500: Reply now has "additional recipient"
  * Removal of redundant code
  
  
--www1078195869
Content-Type: text/plain
Content-Disposition: attachment; filename="www-20040301215109.txt"

Index: loncom/interface/lonmsg.pm
diff -u loncom/interface/lonmsg.pm:1.91 loncom/interface/lonmsg.pm:1.92
--- loncom/interface/lonmsg.pm:1.91	Mon Mar  1 15:57:47 2004
+++ loncom/interface/lonmsg.pm	Mon Mar  1 21:51:09 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines for messaging
 #
-# $Id: lonmsg.pm,v 1.91 2004/03/01 20:57:47 www Exp $
+# $Id: lonmsg.pm,v 1.92 2004/03/02 02:51:09 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -508,7 +508,7 @@
             'cfs' => 'Check for Section/Group',
             'cfn' => 'Check for None');
     $r->print(<<ENDDISHEADER);
-<input type=hidden name=sendmode value=group>
+<input type="hidden" name="sendmode" value="group" />
 <script>
     function checkall() {
 	for (i=0; i<document.forms.compemail.elements.length; i++) {
@@ -538,10 +538,10 @@
         }
     }
 </script>
-<input type=button onClick="checkall()" value="$lt{'cfa'}">&nbsp;
-<input type=button onClick="checksec()" value="$lt{'cfs'}">
-<input type=text size=5 name=chksec>&nbsp;
-<input type=button onClick="uncheckall()" value="$lt{'cfn'}">
+<input type="button" onClick="checkall()" value="$lt{'cfa'}" />&nbsp;
+<input type="button" onClick="checksec()" value="$lt{'cfs'}" />
+<input type="text" size="5" name=chksec />&nbsp;
+<input type="button" onClick="uncheckall()" value="$lt{'cfn'}" />
 <p>
 ENDDISHEADER
     my %coursepersonnel=
@@ -618,51 +618,6 @@
     $r->print('<input type=hidden name="displayedcrit" value="true"></form>');
 }
 
-# =============================================================== Compose reply
-
-sub comprep {
-    my ($r,$msgid)=@_;
-      my %message=&Apache::lonnet::get('nohist_email',[$msgid]);
-      my %content=&unpackagemsg($message{$msgid},1);
-      my $quotemsg='> '.$content{'message'};
-      $quotemsg=~s/\r/\n/g;
-      $quotemsg=~s/\f/\n/g;
-      $quotemsg=~s/\n+/\n\> /g;
-      my $torepl=&Apache::loncommon::aboutmewrapper(
- &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).' ('.
-$content{'sendername'}.'@'.
-            $content{'senderdomain'}.')';
-      my $subject=&mt('Re').': '.$content{'subject'};
-      my $dispcrit='';
-      if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
-	 my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message");
-         $dispcrit=
- '<input type=checkbox name=critmsg> '.&mt('Send as critical message').' ' . $crithelp . 
- '<br>'.
- '<input type=checkbox name=sendbck> '.&mt('Send as critical message').' ' .
- &mt('and return receipt') . $crithelp . '<p>';
-      }
-    my %lt=&Apache::lonlocal::texthash(
-				   'to' => 'To',
-				   'sb' => 'Subject',
-				   'sr' => 'Send Reply',
-				   'ca' => 'Cancel'
-				   );
-      $r->print(<<"ENDREPLY");
-<form action="/adm/email" method="post">
-<input type="hidden" name="sendreply" value="$msgid">
-$lt{'to'}: $torepl<br />
-$lt{'sb'}: <input type="text" size=50 name="subject" value="$subject"><p>
-<textarea name="message" cols="84" rows="10" wrap="hard">
-$quotemsg
-</textarea></p><br />
-$dispcrit
-<input type="submit" name="send" value="$lt{'sr'}" />
-<input type="submit" name="cancel" value="$lt{'ca'}"/ >
-</form>
-ENDREPLY
-}
-
 sub sortedmessages {
     my @messages = &Apache::lonnet::getkeys('nohist_email');
     #unpack the varibles and repack into temp for sorting
@@ -783,7 +738,7 @@
 	    }
 	    $r->print('<td><a href="/adm/email?display='.$origID.$sqs. 
 		      '">'.&mt('Open').'</a></td><td><a href="/adm/email?markdel='.$origID.$sqs.
-		      '">'.&mt('Delete').'</a><input type=checkbox name="delmark_'.$origID.'"></td>'.
+		      '">'.&mt('Delete').'</a><input type=checkbox name="delmark_'.$origID.'" /></td>'.
 		      '<td>'.&Apache::lonlocal::locallocaltime($sendtime).'</td><td>'.
 		      $fromname.'</td><td>'.$fromdomain.'</td><td>'.
 		      &Apache::lonnet::unescape($shortsubj).'</td><td>'.
@@ -794,16 +749,38 @@
               '<a href="javascript:checkall()">'.&mt('Check All').'</a>&nbsp;'.
               '<a href="javascript:uncheckall()">'.&mt('Uncheck All').'</a><p>'.
 	      '<input type="hidden" name="sortedby" value="'.$ENV{'form.sortedby'}.'" />'.
-              '<input type=submit name="markeddel" value="'.&mt('Delete Checked').'">'.
+              '<input type="submit" name="markeddel" value="'.&mt('Delete Checked').'" />'.
               '</form></body></html>');
 }
 
 # ============================================================== Compose output
 
 sub compout {
-    my ($r,$forwarding,$broadcast)=@_;
-    &printheader($r,'/adm/email?compose=upload',
-	     'Distribute from uploaded file');
+    my ($r,$forwarding,$replying,$broadcast)=@_;
+
+    if ($broadcast eq 'individual') {
+	&printheader($r,'/adm/email?compose=individual',
+	     'Send a Message');
+    } elsif ($broadcast) {
+	&printheader($r,'/adm/email?compose=group',
+	     'Broadcast Message');
+    } elsif ($forwarding) {
+	&Apache::lonhtmlcommon::add_breadcrumb
+        ({href=>"/adm/email?display=".&Apache::lonnet::escape($forwarding),
+          text=>"Display Message"});
+	&printheader($r,'/adm/email?forward='.&Apache::lonnet::escape($forwarding),
+	     'Forwarding a Message');
+    } elsif ($replying) {
+	&Apache::lonhtmlcommon::add_breadcrumb
+        ({href=>"/adm/email?display=".&Apache::lonnet::escape($replying),
+          text=>"Display Message"});
+	&printheader($r,'/adm/email?replyto='.&Apache::lonnet::escape($replying),
+	     'Replying to a Message');
+    } else {
+	&printheader($r,'/adm/email?compose=upload',
+	     'Distribute from Uploaded File');
+    }
+
     my $dispcrit='';
     my $dissub='';
     my $dismsg='';
@@ -818,39 +795,64 @@
     if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
 	 my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message");
          $dispcrit=
- '<input type="checkbox" name="critmsg"> '.&mt('Send as critical message').' ' . $crithelp . 
+ '<input type="checkbox" name="critmsg" /> '.&mt('Send as critical message').' ' . $crithelp . 
  '<br>'.
- '<input type="checkbox" name="sendbck"> '.&mt('Send as critical message').'  ' .
+ '<input type="checkbox" name="sendbck" /> '.&mt('Send as critical message').'  ' .
  &mt('and return receipt') . $crithelp . '<p>';
-      }
+     }
+    my %message;
+    my %content;
+    my $defdom=$ENV{'user.domain'};
     if ($forwarding) {
-       $dispcrit.='<input type="hidden" name="forwid" value="'.
-	   $forwarding.'">';
-       $func=&mt('Forward');
-      my %message=&Apache::lonnet::get('nohist_email',[$forwarding]);
-      my %content=&unpackagemsg($message{$forwarding});
-
-       $dissub=&mt('Forwarding').': '.$content{'subject'};
-       $dismsg=&mt('Forwarded message from').' '.
-	   $content{'sendername'}.' '.&mt('at').' '.$content{'senderdomain'};
+	%message=&Apache::lonnet::get('nohist_email',[$forwarding]);
+	%content=&unpackagemsg($message{$forwarding});
+	$dispcrit.='<input type="hidden" name="forwid" value="'.
+	    $forwarding.'" />';
+	$func=&mt('Forward');
+	
+	$dissub=&mt('Forwarding').': '.$content{'subject'};
+	$dismsg=&mt('Forwarded message from').' '.
+	    $content{'sendername'}.' '.&mt('at').' '.$content{'senderdomain'};
+    }
+    if ($replying) {
+	%message=&Apache::lonnet::get('nohist_email',[$replying]);
+	%content=&unpackagemsg($message{$replying});
+	$dispcrit.='<input type="hidden" name="forwid" value="'.
+	    $forwarding.'" />';
+	$func=&mt('Replying to');
+	
+	$dissub=&mt('Reply').': '.$content{'subject'};       
+	$dismsg='> '.$content{'message'};
+	$dismsg=~s/\r/\n/g;
+	$dismsg=~s/\f/\n/g;
+	$dismsg=~s/\n+/\n\> /g;
     }
-    my $defdom=$ENV{'user.domain'};
     if ($ENV{'form.recdom'}) { $defdom=$ENV{'form.recdom'}; }
       $r->print(
                 '<form action="/adm/email"  name="compemail" method="post"'.
                 ' enctype="multipart/form-data">'."\n".
-                '<input type="hidden" name="sendmail" value="on">'."\n".
+                '<input type="hidden" name="sendmail" value="on" />'."\n".
                 '<table>');
     unless (($broadcast eq 'group') || ($broadcast eq 'upload')) {
-        my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain');
-        my $selectlink=&Apache::loncommon::selectstudent_link
+	if ($replying) {
+	    $r->print('<tr><td colspan="2">'.&mt('Replying to').' '.
+		      &Apache::loncommon::aboutmewrapper(
+							 &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).' ('.
+		      $content{'sendername'}.'@'.
+		      $content{'senderdomain'}.')'.
+		      '<input type="hidden" name="recuname" value="'.$content{'sendername'}.'" />'.
+		      '<input type="hidden" name="recdomain" value="'.$content{'senderdomain'}.'" />'.
+		      '</td></tr>');
+	} else {
+	    my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain');
+	    my $selectlink=&Apache::loncommon::selectstudent_link
 	    ('compemail','recuname','recdomain');
-       $r->print(<<"ENDREC");
-<table>
+	    $r->print(<<"ENDREC");
 <tr><td>$lt{'us'}:</td><td><input type="text" size="12" name="recuname" value="$ENV{'form.recname'}"></td><td rowspan="2">$selectlink</td></tr>
 <tr><td>$lt{'do'}:</td>
 <td>$domform</td></tr>
 ENDREC
+        }
     }
     my $latexHelp = Apache::loncommon::helpLatexCheatsheet();
     if ($broadcast ne 'upload') {
@@ -861,7 +863,7 @@
 <tr><td>$lt{'sb'}:</td><td><input type="text" size="50" name="subject" value="$dissub" />
 </td></tr></table>
 $latexHelp
-<textarea name="message" cols="80" rows="10" wrap="hard">$dismsg
+<textarea name="message" cols="80" rows="15" wrap="hard">$dismsg
 </textarea></p><br />
 $dispcrit
 <input type="submit" name="send" value="$func $lt{'ma'}" />
@@ -892,7 +894,7 @@
 <p>
 <input type="file" name="upfile" size="40" /></p><p>
 $dispcrit
-<input type="submit" value="Upload and send" /></p>
+<input type="submit" value="Upload and Send" /></p>
 ENDUPLOAD
     }
     if ($broadcast eq 'group') {
@@ -924,7 +926,7 @@
             $result.='<h3>'.&mt('Sent Message').'</h3>';
             %content=&unpackagemsg($content{'message'});
             $content{'message'}=
-                '<b>Subject: '.$content{'subject'}.'</b><br />'.
+                '<b>'.&mt('Subject').': '.$content{'subject'}.'</b><br />'.
 		$content{'message'};
         }
         $result.=&mt('By').': <b>'.
@@ -932,13 +934,13 @@
  &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b> ('.
 $content{'sendername'}.'@'.
             $content{'senderdomain'}.') '.$content{'time'}.
-            '<br><blockquote>'.
+            '<br /><blockquote>'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).
 	      '</blockquote>';
      }
     # Check to see if there were any messages.
     if ($result eq '') {
-        $r->print("<p><b>No notes, face-to-face discussion records, or critical messages in this course.</b></p>");
+        $r->print("<p><b>".&mt("No notes, face-to-face discussion records, or critical messages in this course.")."</b></p>");
     } else {
        $r->print($result);
     }
@@ -1017,14 +1019,6 @@
     }
 }
 
-# ----------------------------------------------- Generate the text input field
-
-sub textinputarea {
-    my ($r,$name,$quote)=@_;
-    $r->print('<textarea name="'.$name.
-	      '" cols="80" rows="12" wrap="hard">'.$quote.'</textarea>');
-}
-
 # ----------------------------------------------------------- Display a message
 
 sub displaymessage {
@@ -1046,7 +1040,7 @@
     $r->print('</pre>');
     my $number_of_messages = scalar(@messages); #subtract 1 for last index
 # start output
-    &printheader($r,'/adm/email?display='.$msgid,'Display a Message','',$content{'baseurl'});
+    &printheader($r,'/adm/email?display='.&Apache::lonnet::escape($msgid),'Display a Message','',$content{'baseurl'});
     my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'});
 # Functions
     $r->print('<table border="2" width="100%"><tr bgcolor="#FFFFAA"><td>'.&mt('Functions').':</td>'.
@@ -1145,53 +1139,29 @@
     if ($ENV{'form.display'}) {
 	&displaymessage($r,$ENV{'form.display'});
     } 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);
-	}
+	&compout($r,'',$ENV{'form.replyto'});
     } elsif ($ENV{'form.confirm'}) {
+	&printheader($r,'','Confirmed Receipt');
 	foreach (keys %ENV) {
 	    if ($_=~/^form\.rec\_(.*)$/) {
-		$r->print('<b>Confirming Receipt:</b> '.
+		$r->print('<b>'.&mt('Confirming Receipt').':</b> '.
 			  &user_crit_received($1).'<br>');
 	    }
 	    if ($_=~/^form\.reprec\_(.*)$/) {
 		my $msgid=$1;
-		$r->print('<b>Confirming Receipt:</b> '.
+		$r->print('<b>'.&mt('Confirming Receipt').':</b> '.
 			  &user_crit_received($msgid).'<br>');
 		&comprep($r,$msgid);
 	    }
 	}
 	&discrit($r);
     } elsif ($ENV{'form.critical'}) {
+	&printheader($r,'','Displaying Critical Messages');
 	&discrit($r);
     } elsif ($ENV{'form.forward'}) {
 	&compout($r,$ENV{'form.forward'});
-    } elsif ($ENV{'form.markread'}) {
     } elsif ($ENV{'form.markdel'}) {
+	&printheader($r,'','Deleted Message');
 	&statuschange($ENV{'form.markdel'},'deleted');
 	&disall($r);
     } elsif ($ENV{'form.markeddel'}) {
@@ -1202,18 +1172,22 @@
 		$total++;
 	    }
 	}
+	&printheader($r,'','Deleted Messages');
 	$r->print('Deleted '.$total.' message(s)<p>');
 	&disall($r);
     } elsif ($ENV{'form.markunread'}) {
+	&printheader($r,'','Marked Message as Unread');
 	&statuschange($ENV{'form.markunread'},'new');
 	&disall($r);
     } elsif ($ENV{'form.compose'}) {
-	&compout($r,'',$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'}) {
+	    &printheader($r,'','Messages being sent.');
+	    $r->rflush();
 	    my %content=();
 	    undef %content;
 	    if ($ENV{'form.forwid'}) {
@@ -1249,25 +1223,28 @@
 		    $toaddr{$auname.':'.$audom}='';
 		}
 	    }
+
 	    foreach (keys %toaddr) {
 		my ($recuname,$recdomain)=split(/\:/,$_);
 		my $msgtxt=&Apache::lonfeedback::clear_out_html($ENV{'form.message'});
-		if ($toaddr{$_}) { $msgtxt.='<hr>'.$toaddr{$_}; }    
+		if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; }
+		my $thismsg;    
 		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,
+		    $r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': ');
+		    $thismsg=&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,
+		    $r->print(&mt('Sending').' '.$recuname.'@'.$recdomain.': ');
+		    $thismsg=&user_normal_msg($recuname,$recdomain,
 						      &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}),
 						      $msgtxt,
 						      $content{'citation'});
 		}
-		$r->print('<br />');
+		$r->print($thismsg.'<br />');
+		$sendstatus.=' '.$thismsg;
 	    }
 	}
 	if ($sendstatus=~/^(\s*(?:ok|con_delayed)\s*)*$/) {
@@ -1284,6 +1261,7 @@
 		      );
 	}
     } else {
+	&printheader($r,'','Display All Messages');
 	&disall($r);
     }
     $r->print('</body></html>');

--www1078195869--