--- loncom/interface/lonmsgdisplay.pm	2008/06/06 05:24:28	1.86
+++ loncom/interface/lonmsgdisplay.pm	2008/08/27 08:57:15	1.92
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines for messaging display
 #
-# $Id: lonmsgdisplay.pm,v 1.86 2008/06/06 05:24:28 raeburn Exp $
+# $Id: lonmsgdisplay.pm,v 1.92 2008/08/27 08:57:15 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -513,22 +513,34 @@ sub discourse {
     
     $result .= '<input type="hidden" name="sendmode" value="group" />'."\n";
 
-    $result .= &Apache::lonselstudent::render_student_list($current_members,
-							   "compemail",
-							   "current",
-							   \%defaultUsers,
-							   1,"selectedusers",1);
-
-    $result .= &Apache::lonselstudent::render_student_list($expired_members,
-							   "compemail",
-							   "expired",
-							   \%defaultUsers,
-							   1, "selectedusers",0);
-    $result .= &Apache::lonselstudent::render_student_list($future_members,
-							   "compemail",
-							   "future",
-							   \%defaultUsers,
-							   1, "selectedusers", 0);
+    my $tmptext;
+    if ($tmptext = &Apache::lonselstudent::render_student_list($current_members,
+                                                               "compemail",
+                                                               "current",
+                                                               \%defaultUsers,
+                                                               1,"selectedusers",1)
+       ) {
+       $result .= '<h2>'.&mt('Course members with current access').'</h2>';
+       $result .= $tmptext;
+    }
+    if ($tmptext = &Apache::lonselstudent::render_student_list($expired_members,
+                                                               "compemail",
+                                                               "expired",
+                                                               \%defaultUsers,
+                                                               1, "selectedusers",0)
+       ) {
+       $result .= '<h2>'.&mt('Course members with expired access').'</h2>';
+       $result .= $tmptext;
+    }
+    if ($tmptext = &Apache::lonselstudent::render_student_list($future_members,
+                                                               "compemail",
+                                                               "future",
+                                                               \%defaultUsers,
+                                                               1, "selectedusers", 0)
+       ) {
+       $result .= '<h2>'.&mt('Course members with future access').'</h2>';
+       $result .= $tmptext;
+    }
     return $result;
 }
 
@@ -721,23 +733,34 @@ sub groupmail_sent {
 
 sub discrit {
     my $r=shift;
-    my $header = '<h1><font color="red">'.&mt('Critical Messages').'</font></h1>'.
-        '<form action="/adm/email" method="POST">'.
-        '<input type="hidden" name="confirm" value="true" />';
+    my $header = '<h1>'.&mt('Critical Messages').'</h1>'
+                .'<div class="LC_warning">'
+                .&mt('Access to other pages will be prevented until you have moved all critical messages to your inbox.')
+                .'</div><br />'
+                .'<form action="/adm/email" method="POST">'
+                .'<input type="hidden" name="confirm" value="true" />';
     my %what=&Apache::lonnet::dump('critical');
     my $result = '';
     foreach my $key (sort(keys(%what))) {
         my %content=&Apache::lonmsg::unpackagemsg($what{$key});
         next if ($content{'senderdomain'} eq '');
-        $result.='<hr />'.&mt('From').': <b>'.
-&Apache::loncommon::aboutmewrapper(
- &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b> ('.
-$content{'sendername'}.':'.
-            $content{'senderdomain'}.') '.$content{'time'}.
-            '<br />'.&mt('Subject').': '.$content{'subject'}.
-            '<br /><pre>'.
-              &Apache::lontexconvert::msgtexconverted($content{'message'}).
-            '</pre><div class="LC_error">';
+        $result .= &Apache::lonhtmlcommon::start_pick_box()
+                  .&Apache::lonhtmlcommon::row_title(&mt('From'),undef,'LC_oddrow_value')
+                  .'<b>'.&Apache::loncommon::aboutmewrapper(
+                   &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b>'
+                  .' ('.$content{'sendername'}.':'.$content{'senderdomain'}.')'
+                  .&Apache::lonhtmlcommon::row_closure(1)
+                  .&Apache::lonhtmlcommon::row_title(&mt('Date'),undef,'LC_evenrow_value')
+                  .$content{'time'}
+                  .&Apache::lonhtmlcommon::row_closure(1)
+                  .&Apache::lonhtmlcommon::row_title(&mt('Subject'),undef,'LC_oddrow_value')
+                  .$content{'subject'}
+                  .&Apache::lonhtmlcommon::row_closure(1)
+                  .&Apache::lonhtmlcommon::row_title(&mt('Message'),undef,'LC_evenrow_value')
+                  .'<pre>'.&Apache::lontexconvert::msgtexconverted($content{'message'}).'</pre>'
+                  .&Apache::lonhtmlcommon::row_closure()
+                  .&Apache::lonhtmlcommon::row_title('',undef,'LC_oddrow_value')
+                  .'<div class="LC_warning">';
         my ($rec_button,$reprec_button);
         $rec_button = &mt('Move to Inbox');
         if (!$content{'noreplies'}) {
@@ -752,12 +775,17 @@ $content{'sendername'}.':'.
         } else {
             $result .= &mt('Access to other pages will be prevented until you have moved the message to your inbox.'); 
         }
-        $result .= '</div><br />'.
-            '<input type="submit" name="rec_'.$key.'" value="'.$rec_button.'" />';
+        $result .= '</div>'
+                  .&Apache::lonhtmlcommon::row_closure(1)
+                  .&Apache::lonhtmlcommon::row_title('',undef,'LC_evenrow_value')
+                  .'<input type="submit" name="rec_'.$key.'" value="'.$rec_button.'" />';
         if (!$content{'noreplies'}) {
-            $result .= '<input type="submit" name="reprec_'.$key.'" '.
-                  'value="'.$reprec_button.'" />';
+            $result .= '<input type="submit" name="reprec_'.$key.'" '
+                      .'value="'.$reprec_button.'" />'
         }
+        $result .= &Apache::lonhtmlcommon::row_closure(1)
+                  .&Apache::lonhtmlcommon::end_pick_box()
+                  .'<br />';
     }
     # Check to see if there were any messages.
     if ($result eq '') {
@@ -2068,7 +2096,6 @@ sub displaymessage {
     my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
     my %content=&Apache::lonmsg::unpackagemsg($message{$msgid});
     my $counter=0;
-    $r->print('<pre>');
     my $escmsgid=&escape($msgid);
     foreach (@messages) {
 	if ($_->[5] eq $escmsgid){
@@ -2076,7 +2103,6 @@ sub displaymessage {
 	}
 	$counter++;
     }
-    $r->print('</pre>');
 
     my $see_anonymous;
     my $from_student = 0;
@@ -2127,18 +2153,33 @@ sub displaymessage {
         $symb=&Apache::lonnet::symbread($content{'baseurl'});
     }
     if ($env{'user.adv'}) {
-	my $adv_actions;
-	$r->print('<table border="2" width="100%"><tr bgcolor="#FFAAAA"><td>'.&mt('Currently available actions (will open extra window)').':</td>');
+        my $actionlist='';
 	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>');
-	    }
+		$actionlist.='<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>');
+	    $actionlist.='<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>');
+	    $actionlist.='<td><b>'
+                       .&Apache::loncommon::pgrdlink(
+                            &mt('Set/Change grades'),$content{'sendername'},$content{'senderdomain'},$symb,'check')
+                       .'</b></td>';
 	}
-	$r->print('</tr></table>');
+        if ($actionlist) {
+            $r->print('<table border="2" width="100%">'
+                     .'<tr bgcolor="#FFAAAA"><td>'
+                     .&mt('Currently available actions (will open extra window):')
+                     .'</td>'
+                     .$actionlist
+                     .'</tr></table>');
+        }
     }
     my ($tolist,$cclist);
     my (@recipients,@ccs);
@@ -2171,46 +2212,83 @@ sub displaymessage {
 	$r->print(&Apache::loncommon::student_image_tag($content{'senderdomain'},$content{'sendername'}));
     }
 
-    $r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'});
+    # Display LON-CAPA Message (Start)
+    # Subject
+    $r->print('<br />'
+             .&Apache::lonhtmlcommon::start_pick_box()
+             .&Apache::lonhtmlcommon::row_title(&mt('Subject'))
+             .$content{'subject'}
+             .&Apache::lonhtmlcommon::row_closure()
+    );
     if ($folder eq 'sent') {
-        $r->print('<br /><b>'.&mt('To').':</b> '.$tolist);
+        # To
+        $r->print(&Apache::lonhtmlcommon::row_title(&mt('To'))
+                 .$tolist
+                 .&Apache::lonhtmlcommon::row_closure()
+        );
         if ($content{'replytoaddr'}) {
             my ($replytoname,$replytodom) = split(/:/,$content{'replytoaddr'});
             if ($replytoname ne '' && $replytodom ne '') {
-                $r->print('<br /><b>'.&mt('Reply To').':</b> '.
-                          $replytoname.' '.&mt('at').' '.$replytodom);
+                $r->print(&Apache::lonhtmlcommon::row_title(&mt('Reply To'))
+                         .&mt('[_1] at [_2]',$replytoname,$replytodom)
+                         .&Apache::lonhtmlcommon::row_closure()
+                );
             }
         }
     } else {
-        $r->print('<br /><b>'.&mt('From').':</b> '.
-	      &Apache::loncommon::aboutmewrapper(
-						 &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),
-						 $content{'sendername'},$content{'senderdomain'}));
+        # From, Reply
+        $r->print(&Apache::lonhtmlcommon::row_title(&mt('From'))
+                 .&Apache::loncommon::aboutmewrapper(
+                     &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),
+                                                 $content{'sendername'},$content{'senderdomain'})
+        );
         if ($content{'noreplies'}) {
-            $r->print(' ('.&mt('No replies to sender').')'); 
+            $r->print(' ('.&mt('No replies to sender').')'
+                     .&Apache::lonhtmlcommon::row_closure()
+            ); 
         } else {
             if ($content{'replytoaddr'}) {
                 my ($replytoname,$replytodom) = split(/:/,$content{'replytoaddr'});
                 if ($replytoname ne '' && $replytodom ne '') {
-                    $r->print('<br /><b>'.&mt('Reply To').':</b> '.
-                              $replytoname.' '.&mt('at').' '.$replytodom);
+                    $r->print(&Apache::lonhtmlcommon::row_closure()
+                             .&Apache::lonhtmlcommon::row_title(&mt('Reply To'))
+                             .&mt('[_1] at [_2]',$replytoname,$replytodom)
+                             .&Apache::lonhtmlcommon::row_closure()
+                    );
+                } else {
+                    $r->print(&Apache::lonhtmlcommon::row_closure());
                 }
             } else {
-                $r->print(' ('.$content{'sendername'}.' '.&mt('at').' '.
-                          $content{'senderdomain'}.') ');
+                $r->print(' ('.&mt('[_1] at [_2]',$content{'sendername'},$content{'senderdomain'}).') '
+                         .&Apache::lonhtmlcommon::row_closure()
+                );
             }
             if ($cclist) {
-                $r->print('<br /><b>'.&mt('Cc').':</b> '.$cclist);
+                $r->print(&Apache::lonhtmlcommon::row_title(&mt('Cc'))
+                         .$cclist
+                         .&Apache::lonhtmlcommon::row_closure()
+                    );
+
             }
-        } 
+        }
     }
+
+    # Course
     if ($content{'courseid'}) {
-        $r->print('<br /><b>'.&mt($crstype).':</b> '.$courseinfo{'description'});
+        $r->print(&Apache::lonhtmlcommon::row_title(&mt($crstype))
+                 .$courseinfo{'description'}
+        );
         if ($content{'coursesec'}) {
             $r->print(' ('.&mt('Section').': '.$content{'coursesec'}.')');
         }
+        $r->print(&Apache::lonhtmlcommon::row_closure());
     }
-    $r->print('<br /><b>'.&mt('Time').':</b> '.$content{'time'});
+    $r->print(&Apache::lonhtmlcommon::row_title(&mt('Time'))
+             .$content{'time'}
+             .&Apache::lonhtmlcommon::row_closure()
+    );
+
+    # Refers to
     if ($baseurl) {
         if (defined($content{'courseid'}) && defined($env{'request.course.id'})) {
             if ($content{'courseid'} eq $env{'request.course.id'}) {
@@ -2228,7 +2306,10 @@ sub displaymessage {
                 if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) {
                     $showurl = $baseurl;
                 }
-                $r->print('<br /><b>'.&mt('Refers to').':</b> <a href="'.$showurl.$symblink.'">'.$restitle.'</a>');
+                $r->print(&Apache::lonhtmlcommon::row_title(&mt('Refers to'))
+                         .'<a href="'.$showurl.$symblink.'">'.$restitle.'</a>'
+                         .&Apache::lonhtmlcommon::row_closure()
+                );
                 $refers_to = 1;
             }
         }
@@ -2241,25 +2322,41 @@ sub displaymessage {
                                                         $content{'courseid'});
                         if ($unencurl ne '') {
                             if (&Apache::lonnet::allowed('bre',$unencurl)) {
-                                $r->print('<br /><b>'.&mt('Refers to').
-                                          ':</b> <a href="'.$unencurl.'">'.
-                                          $restitle.'</a>');
+                                $r->print(&Apache::lonhtmlcommon::row_title(&mt('Refers to'))
+                                         .'<a href="'.$unencurl.'">'.$restitle.'</a>'
+                                         .&Apache::lonhtmlcommon::row_closure()
+                                );
                             }
                         }
                     }
                 }
             } else {
                 if (&Apache::lonnet::allowed('bre',$baseurl)) {
-                    $r->print('<br /><b>'.&mt('Refers to').
-                              ':</b> <a href="'.$baseurl.
-                              '">'.$restitle.'</a>');
+                    $r->print(&Apache::lonhtmlcommon::row_title(&mt('Refers to'))
+                             .'<a href="'.$baseurl.'">'.$restitle.'</a>'
+                             .&Apache::lonhtmlcommon::row_closure()
+                    );
+
                 }
             }
         }
     }
-    $r->print('<p><pre>'.
-	      &Apache::lontexconvert::msgtexconverted($content{'message'},1).
-	      '</pre><hr />'.&displayresource(%content).'</p>');
+
+    # Message
+    $r->print(&Apache::lonhtmlcommon::row_title(&mt('Message'))
+             .'<pre>'
+	     .&Apache::lontexconvert::msgtexconverted($content{'message'},1)
+	     .'</pre>'
+    );
+    if (&displayresource(%content)) {
+        $r->print(&Apache::lonhtmlcommon::row_closure()
+                 .&Apache::lonhtmlcommon::row_title(&mt('Resource Details'))
+                 .&displayresource(%content)
+        );
+    } 
+    $r->print(&Apache::lonhtmlcommon::row_closure(1).
+              &Apache::lonhtmlcommon::end_pick_box());
+    # Display LON-CAPA Message (End)
     return;
 }