--- loncom/interface/lonmsg.pm	2003/12/30 14:57:49	1.73
+++ loncom/interface/lonmsg.pm	2004/02/02 22:27:08	1.85
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines for messaging
 #
-# $Id: lonmsg.pm,v 1.73 2003/12/30 14:57:49 www Exp $
+# $Id: lonmsg.pm,v 1.85 2004/02/02 22:27:08 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -25,23 +25,8 @@
 #
 # http://www.lon-capa.org/
 #
-#
-# (Routines to control the menu
-#
-# (TeX Conversion Module
-#
-# 05/29/00,05/30 Gerd Kortemeyer)
-#
-# 10/05 Gerd Kortemeyer)
-#
-# 10/19,10/20,10/30,
-# 02/06/01 Gerd Kortemeyer
-# 07/27 Guy Albertelli
-# 07/27,07/28,07/30,08/03,08/06,08/08,08/09,08/10,8/13,8/15,
-# 10/1,11/5 Gerd Kortemeyer
-# YEAR=2002
-# 1/1,3/18 Gerd Kortemeyer
-#
+
+
 package Apache::lonmsg;
 
 =pod
@@ -154,6 +139,7 @@ sub packagemsg {
            '<browsermathml>'.$ENV{'browser.mathml'}.'</browsermathml>'.
 	   '<browserraw>'.$ENV{'HTTP_USER_AGENT'}.'</browserraw>'.
 	   '<courseid>'.$ENV{'request.course.id'}.'</courseid>'.
+	   '<coursesec>'.$ENV{'request.course.sec'}.'</coursesec>'.
 	   '<role>'.$ENV{'request.role'}.'</role>'.
 	   '<resource>'.$ENV{'request.filename'}.'</resource>'.
            '<msgid>'.$msgid.'</msgid>'.
@@ -287,15 +273,17 @@ sub author_res_msg {
 # =========================================== Retrieve author resource messages
 
 sub retrieve_author_res_msg {
-    my ($author,$domain,$url)=@_;
+    my $url=shift;
     $url=&Apache::lonnet::declutter($url);
-    my %errormsgs=&Apache::lonnet::dump('nohist_res_msgs',$1,$2);
+    my ($domain,$author)=($url=~/^(\w+)\/(\w+)\//);
+    my %errormsgs=&Apache::lonnet::dump('nohist_res_msgs',$domain,$author);
     my $msgs='';
     foreach (keys %errormsgs) {
 	if ($_=~/^\Q$url\E\_\d+$/) {
 	    my %content=&unpackagemsg($errormsgs{$_});
-	    $msgs.='<b>'.$content{'time'}.'</b>: '.$content{'message'}.
-		      '<br />';
+	    $msgs.='<p><img src="/adm/lonMisc/bomb.gif" /><b>'.
+		$content{'time'}.'</b>: '.$content{'message'}.
+		'<br /></p>';
 	}
     } 
     return $msgs;     
@@ -305,14 +293,28 @@ sub retrieve_author_res_msg {
 # =============================== Delete all author messages related to one URL
 
 sub del_url_author_res_msg {
-    my ($author,$domain,$url)=@_;
+    my $url=shift;
     $url=&Apache::lonnet::declutter($url);
+    my ($domain,$author)=($url=~/^(\w+)\/(\w+)\//);
+    my @delmsgs=();
+    foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {
+	if ($_=~/^\Q$url\E\_\d+$/) {
+	    push (@delmsgs,$_);
+	}
+    }
+    return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);
 }
 
 # ================= Return hash with URLs for which there is a resource message
 
 sub all_url_author_res_msg {
     my ($author,$domain)=@_;
+    my %returnhash=();
+    foreach (&Apache::lonnet::getkeys('nohist_res_msgs',$domain,$author)) {
+	$_=~/^(.+)\_\d+/;
+	$returnhash{$1}=1;
+    }
+    return %returnhash;
 }
 
 # ================================================== Critical message to a user
@@ -395,7 +397,7 @@ sub user_crit_received {
     my %contents=&unpackagemsg($message{$msgid},1);
     my $status='rec: '.($contents{'sendback'}?
      &user_normal_msg($contents{'sendername'},$contents{'senderdomain'},
-                     &mt('Receipt').': '.$ENV{'user.name'}.' at '.$ENV{'user.domain'},
+                     &mt('Receipt').': '.$ENV{'user.name'}.' '.&mt('at').' '.$ENV{'user.domain'}.', '.$contents{'subject'},
                      &mt('User').' '.$ENV{'user.name'}.' '.&mt('at').' '.$ENV{'user.domain'}.
                      ' acknowledged receipt of message'."\n".'   "'.
                      $contents{'subject'}.'"'."\n".&mt('dated').' '.
@@ -598,7 +600,9 @@ $content{'sendername'}.'@'.
             '<br>'.&mt('Subject').': '.$content{'subject'}.
             '<br><blockquote>'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).
-            '</blockquote>'.
+            '</blockquote><small>'.
+&mt('You have to confirm that you received this message. After confirmation, this message will be moved to your regular inbox').
+            '</small><br />'.
             '<input type=submit name="rec_'.$_.'" value="'.&mt('Confirm Receipt').'">'.
             '<input type=submit name="reprec_'.$_.'" '.
                   'value="'.&mt('Confirm Receipt and Reply').'">';
@@ -1023,7 +1027,9 @@ sub handler {
   if (!$ENV{'form.display'}) {
       $r->print('<html><head><title>EMail and Messaging</title>'.
 		&Apache::loncommon::studentbrowser_javascript().'</head>'.
-		&Apache::loncommon::bodytag('EMail and Messages'));
+		&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'};
@@ -1050,15 +1056,21 @@ sub handler {
       }
       $r->print(&Apache::loncommon::studentbrowser_javascript().
 		'</head>'.
-		&Apache::loncommon::bodytag('EMail and Messages'));
-      $r->print('<b>'.&mt('Subject').':</b> '.$content{'subject'}.
-             '<br><b>'.&mt('From').':</b> '.
+		&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('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}.
+             '<br /><b>'.&mt('From').':</b> '.
 &Apache::loncommon::aboutmewrapper(
 &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),
 $content{'sendername'},$content{'senderdomain'}).' ('.
                                  $content{'sendername'}.' at '.
                                  $content{'senderdomain'}.') '.
-             '<br><b>'.&mt('Time').':</b> '.$content{'time'}.'<p>'.
+	     ($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}.
+($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):'').
+             '<br /><b>'.&mt('Time').':</b> '.$content{'time'}.'<p>'.
              '<table border=2><tr bgcolor="#FFFFAA"><td>'.&mt('Functions').':</td>'.
            '<td><a href="/adm/email?replyto='.&Apache::lonnet::escape($msgid).$sqs.
              '"><b>'.&mt('Reply').'</b></a></td>'.
@@ -1079,7 +1091,7 @@ $content{'sendername'},$content{'senderd
            '"><b>'.&mt('Next').'</b></a></td>');
        }
        $r->print('</tr></table><p><pre>'.
-             &Apache::lontexconvert::msgtexconverted($content{'message'}).
+             &Apache::lontexconvert::msgtexconverted($content{'message'},1).
              '</pre><hr>'.$content{'citation'});
   } elsif ($ENV{'form.replyto'}) {
       &comprep($r,$ENV{'form.replyto'});
@@ -1208,6 +1220,7 @@ $content{'sendername'},$content{'senderd
 	  }
       }
       if ($sendstatus=~/^(\s*(?:ok|con_delayed)\s*)*$/) {
+	  $r->print('<br /><font color="green">'.&mt('Completed.').'</font>');
 	  if ($ENV{'form.displayedcrit'}) {
 	      &discrit($r);
 	  } else {