--- loncom/interface/lonmsg.pm	2005/06/04 21:11:30	1.144
+++ loncom/interface/lonmsg.pm	2005/07/08 10:39:49	1.152
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines for messaging
 #
-# $Id: lonmsg.pm,v 1.144 2005/06/04 21:11:30 albertel Exp $
+# $Id: lonmsg.pm,v 1.152 2005/07/08 10:39:49 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -337,7 +337,20 @@ sub del_url_author_res_msg {
     }
     return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);
 }
+# =================================== Clear out all author messages in URL path
 
+sub clear_author_res_msg {
+    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/) {
+	    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 {
@@ -564,13 +577,14 @@ sub scrollbuttons {
     my ($start,$maxdis,$first,$finish,$total)=@_;
     unless ($total>0) { return ''; }
     $start++; $maxdis++;$first++;$finish++;
-    return 
+    return
+   &mt('Page').': '. 
    '<input type="submit" name="firstview" value="'.&mt('First').'" />'.
    '<input type="submit" name="prevview" value="'.&mt('Previous').'" />'.
    '<input type="text" size="5" name="startdis" value="'.$start.'" onChange="this.form.submit()" /> of '.$maxdis.
    '<input type="submit" name="nextview" value="'.&mt('Next').'" />'.
    '<input type="submit" name="lastview" value="'.&mt('Last').'" /><br />'.
-   &mt('Messages [_1] through [_2] of [_3]',$first,$finish,$total).'</form>';
+   &mt('Showing messages [_1] through [_2] of [_3]',$first,$finish,$total).'</form>';
 }
 
 # =============================================================== Folder suffix
@@ -596,6 +610,9 @@ sub statuschange {
     if (($newstatus eq 'deleted') || ($newstatus eq 'new')) {
 	&Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});
     }
+    if ($newstatus eq 'deleted') {
+       &movemsg(&Apache::lonnet::unescape($msgid),$folder,'trash');
+   }
 }
 
 # ============================================================= Make new folder
@@ -869,7 +886,8 @@ sub disnew {
 TABLEHEAD
         foreach my $msg (@newmsgs) {
             $r->print(<<"ENDLINK");
-<tr bgcolor="#FFBB77">
+<tr class="new" bgcolor="#FFBB77" onMouseOver="javascript:style.backgroundColor='#DD9955'" 
+onMouseOut="javascript:style.backgroundColor='#FFBB77'">
 <td><a href="/adm/email?dismode=new&display=$msg->{'msgid'}">$lt{'op'}</a></td>
 ENDLINK
             foreach ('sendtime','from','fromdom','shortsub') {
@@ -996,13 +1014,13 @@ ENDDISHEADER
 	my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @{$temp[$n]};
 	if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {
 	    if ($status eq 'new') {
-		$r->print('<tr bgcolor="#FFBB77">');
+		$r->print('<tr bgcolor="#FFBB77" onMouseOver="javascript:style.backgroundColor=\'#DD9955\'"  onMouseOut="javascript:style.backgroundColor=\'#FFBB77\'">');
 	    } elsif ($status eq 'read') {
-		$r->print('<tr bgcolor="#BBBB77">');
+		$r->print('<tr bgcolor="#BBBB77" onMouseOver="javascript:style.backgroundColor=\'#999944\'"  onMouseOut="javascript:style.backgroundColor=\'#BBBB77\'">');
 	    } elsif ($status eq 'replied') {
-		$r->print('<tr bgcolor="#AAAA88">'); 
+		$r->print('<tr bgcolor="#AAAA88" onMouseOver="javascript:style.backgroundColor=\'#888855\'"  onMouseOut="javascript:style.backgroundColor=\'#AAAA88\'">'); 
 	    } else {
-		$r->print('<tr bgcolor="#99BBBB">');
+		$r->print('<tr bgcolor="#99BBBB" onMouseOver="javascript:style.backgroundColor=\'#669999\'"  onMouseOut="javascript:style.backgroundColor=\'#99BBBB\'">');
 	    }
 	    $r->print('<td><input type="checkbox" name="delmark_'.$origID.'" /></td><td><a href="/adm/email?display='.$origID.$sqs. 
 		      '">'.&mt('Open').'</a></td><td>'.
@@ -1236,8 +1254,8 @@ sub retrieve_instructor_comments {
         my %content=&unpackagemsg($records{$_});
         next if ($content{'senderdomain'} eq '');
         next if ($content{'subject'} !~ /^Record/);
-        # $content{'message'}=~s/\n/\<br\>/g;
-        $result.='Recorded by '.
+	# &Apache::lonfeedback::newline_to_br(\$content{'message'});
+	$result.='Recorded by '.
             $content{'sendername'}.'@'.$content{'senderdomain'}."\n";
         $result.=
             &Apache::lontexconvert::msgtexconverted($content{'message'})."\n";
@@ -1260,7 +1278,7 @@ sub disfacetoface {
     foreach (sort keys %records) {
         my %content=&unpackagemsg($records{$_});
         next if ($content{'senderdomain'} eq '');
-        $content{'message'}=~s/\n/\<br\>/g;
+	&Apache::lonfeedback::newline_to_br(\$content{'message'});
         if ($content{'subject'}=~/^Record/) {
 	    $result.='<h3>'.&mt('Record').'</h3>';
         } elsif ($content{'subject'}=~/^Broadcast/) {
@@ -1777,7 +1795,7 @@ sub displaymessage {
 	      '<td><a href="/adm/email?markunread='.&Apache::lonnet::escape($msgid).$sqs.
 	      '"><b>'.&mt('Mark Unread').'</b></a></td>'.
 	      '<td><a href="/adm/email?markdel='.&Apache::lonnet::escape($msgid).$sqs.
-	      '"><b>Delete</b></a></td>'.
+	      '"><b>'.&mt('Delete').'</b></a></td>'.
 	      '<td><a href="/adm/email?'.$sqs.
 	      ($env{'form.dismode'} eq 'new'?'&folder=new':'').
 	      '"><b>'.&mt('Back to Folder Display').'</b></a></td>');
@@ -1790,6 +1808,20 @@ sub displaymessage {
 		  '"><b>'.&mt('Next').'</b></a></td>');
     }
     $r->print('</tr></table>');
+    if ($env{'user.adv'}) {
+	$r->print('<table border="2" width="100%"><tr bgcolor="#FFAAAA"><td>'.&mt('Currently available actions (will open extra window)').':</td>');
+	my $symb=&Apache::lonnet::symbread($content{'baseurl'});      
+	if (&Apache::lonnet::allowed('vgr',$env{'request.course.id'})) {
+		$r->print('<td><b>'.&Apache::loncommon::track_student_link(&mt('View recent activity'),$content{'sendername'},$content{'senderdomain'},'check').'</b></td>');
+	    }
+	if (&Apache::lonnet::allowed('opa',$env{'request.course.id'}) && $symb) {
+	    $r->print('<td><b>'.&Apache::loncommon::pprmlink(&mt('Set/Change parameters'),$content{'sendername'},$content{'senderdomain'},$symb,'check').'</b></td>');
+	}
+	if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'}) && $symb) {
+	    $r->print('<td><b>'.&Apache::loncommon::pgrdlink(&mt('Set/Change grades'),$content{'sendername'},$content{'senderdomain'},$symb,'check').'</b></td>');
+	}
+	$r->print('</tr></table>');
+    }
     $r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}.
 	      ($folder ne 'sent'?'<br /><b>'.&mt('From').':</b> '.
 	      &Apache::loncommon::aboutmewrapper(