--- loncom/interface/lonmsgdisplay.pm	2010/02/12 17:22:24	1.149
+++ loncom/interface/lonmsgdisplay.pm	2011/05/12 21:56:13	1.157
@@ -1,7 +1,7 @@
-# The LearningOnline Network with CAPA
+# $textareaclass The LearningOnline Network with CAPA
 # Routines for messaging display
 #
-# $Id: lonmsgdisplay.pm,v 1.149 2010/02/12 17:22:24 bisitz Exp $
+# $Id: lonmsgdisplay.pm,v 1.157 2011/05/12 21:56:13 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -110,7 +110,7 @@ use Apache::lonfeedback;
 use Apache::lonrss();
 use Apache::lonselstudent();
 use lib '/home/httpd/lib/perl/';
-use LONCAPA;
+use LONCAPA qw(:DEFAULT :match);
 
 # Querystring component with sorting type
 my $sqs='';
@@ -225,18 +225,18 @@ function folder_choice(targetform,caller
    <table border="0" cellspacing="2" cellpadding="8">
     <tr>
      <td><b>'.$lt{'fold'}.'</b><br />'."\n".
-         &Apache::loncommon::select_form($folder,'folder',%formhash).'
+         &Apache::loncommon::select_form($folder,'folder',\%formhash).'
      </td>
      <td><b>'.$lt{'show'}.'</b><br />'."\n".
          &Apache::loncommon::select_form($env{'form.interdis'},'interdis',
-					 %show).'
+					 \%show).'
      </td>
      <td><b>'.$lt{'status'}.'</b><br />'."\n".
-       &Apache::loncommon::select_form($msgstatus,'msgstatus',%statushash).'
+       &Apache::loncommon::select_form($msgstatus,'msgstatus',\%statushash).'
      </td>
      <td><b>'.$lt{'actn'}.'</b><br />'."\n".'
          <span class="LC_nobreak">'.
-         &Apache::loncommon::select_form('view','folderaction',%actions).
+         &Apache::loncommon::select_form('view','folderaction',\%actions).
          ' <input type="button" value="'.$lt{'go'}.
          '" onclick="javascript:folder_choice(this.form,'."'change'".');" />
          </span>
@@ -626,9 +626,7 @@ sub disgroup {
         return;
     } else {
         $hasfloat = 1;
-        unless($env{'environment.wysiwygeditor'} eq 'on') {
-            $r->print('<div class="LC_left_float">');
-        }
+        $r->print('<div class="LC_left_float">');
         my %Sortby = (
                          active   => {},
                          previous => {},
@@ -701,9 +699,7 @@ sub disgroup {
                 }
             }
         }
-        unless($env{'environment.wysiwygeditor'} eq 'on') {
-            $r->print('</div>');
-        }
+        $r->print('</div>');
     }
     return $hasfloat;
 }
@@ -818,6 +814,15 @@ sub discrit {
     foreach my $key (sort(keys(%what))) {
         my %content=&Apache::lonmsg::unpackagemsg($what{$key});
         next if ($content{'senderdomain'} eq '');
+        my $description;
+        if ($content{'courseid'} ne '') {
+            if ($content{'courseid'} =~ m{/^$match_domain\_$match_courseid$}) {
+                my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'},{'one_time' => 1});
+                if ($courseinfo{'description'} ne '') {
+                    $description = $courseinfo{'description'};
+                }
+            }
+        }
         $result .= &Apache::lonhtmlcommon::start_pick_box()
                   .&Apache::lonhtmlcommon::row_title(&mt('From'),undef,'LC_oddrow_value')
                   .'<b>'.&Apache::loncommon::aboutmewrapper(
@@ -829,8 +834,13 @@ sub discrit {
                   .&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')
+                  .&Apache::lonhtmlcommon::row_closure(1);
+        if ($description ne '') {
+            $result .= &Apache::lonhtmlcommon::row_title(&mt('Course'),undef,'LC_oddrow_value')
+                      .$description
+                      .&Apache::lonhtmlcommon::row_closure(1);
+        }
+        $result .= &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')
@@ -985,10 +995,15 @@ sub get_course_desc {
             if (defined($env{'course.'.$fromcid.'.description'})) {
                 $description = $env{'course.'.$fromcid.'.description'};
             } else {
-                my %courseinfo=&Apache::lonnet::coursedescription($fromcid);
-                $description = $courseinfo{'description'};
+                if ($fromcid =~ m{/^$match_domain\_$match_courseid$}) {
+                    my %courseinfo=&Apache::lonnet::coursedescription($fromcid,
+                                                                      {'one_time' => 1});
+                    $description = $courseinfo{'description'};
+                }
+            }
+            if ($description ne '') {
+                $$descriptions{$fromcid} = $description;
             }
-            $$descriptions{$fromcid} = $description;
         }
         return $description;
     }
@@ -1257,7 +1272,7 @@ ENDDISHEADER
             $userfolders{$key} = $key;
         }
         $userfolders{''} = "";
-        $r->print(&Apache::loncommon::select_form('','movetofolder',%userfolders).
+        $r->print(&Apache::loncommon::select_form('','movetofolder',\%userfolders).
                   '</td>');
     }
     $r->print('<td>'.
@@ -1423,11 +1438,7 @@ sub compout {
         if ($group eq '') {
             my $studentsel = &discourse(\%access_status);
             if ($studentsel) {
-                if ($env{'environment.wysiwygeditor'} eq 'on') {
-                    $r->print($studentsel);
-                } else {
-                    $r->print('<div class="LC_left_float">'.$studentsel.'</div>');
-                }
+                $r->print('<div class="LC_left_float">'.$studentsel.'</div>');
                 $hasfloat = 1;
             }
         } else {
@@ -1523,11 +1534,7 @@ ENDREPSCRIPT
     if ($env{'form.text'}) { $dismsg=$env{'form.text'}; }
     if ($env{'form.subject'}) { $dissub=$env{'form.subject'}; }
     if ($hasfloat) {
-        if ($env{'environment.wysiwygeditor'} eq 'on') {
-            $r->print($broadcast_js);
-        } else {
-            $r->print($broadcast_js.'<div class="LC_left_float">');
-        }
+        $r->print($broadcast_js.'<div class="LC_left_float">');
         $onsubmit = ' onsubmit="javascript:courseRecipients();" ';
     }
     $r->print(
@@ -1637,7 +1644,11 @@ ENDREPSCRIPT
         }
     }
     my $latexHelp = &Apache::loncommon::helpLatexCheatsheet(undef,undef,1);
-    my $wysiwyglink=&Apache::lonhtmlcommon::htmlareaselectactive('message').'<br />';
+    my $textareaclass;
+    if (&Apache::lonhtmlcommon::htmlareabrowser()) {
+        $r->print(&Apache::lonhtmlcommon::htmlareaselectactive());
+        $textareaclass = 'class="LC_richDefaultOff"';
+    }
     my $subj_size;
     if ($multiforward) {
         $r->print(&additional_rec_row(\%lt));
@@ -1659,8 +1670,7 @@ ENDREPSCRIPT
 <tr><td align="left">'."\n".
 $latexHelp."<br />\n".
 &mt("Any new text to display before the text of the original messages:").'<br />'."\n".
-'<textarea name="message" id="message" cols="80" rows="5" wrap="hard"></textarea>'.
-$wysiwyglink);
+'<textarea name="message" id="message" cols="80" rows="5" wrap="hard" $textareaclass></textarea>');
         my @to_forward = &Apache::loncommon::get_env_multiple('form.delmark');
         foreach my $msg (@to_forward) {
             $r->print('<input type="hidden" name="delmark" value="'.$msg.'" />');
@@ -1680,8 +1690,9 @@ $wysiwyglink);
 $attachrow
 </table><br />
 $latexHelp<br />
-<textarea name="message" id="message" cols="80" rows="15" wrap="hard">$dismsg
-</textarea>$wysiwyglink
+<textarea name="message" id="message" cols="80" rows="15" wrap="hard" $textareaclass>$dismsg
+</textarea>
+<br />
 $sendmode
 $dispcrit
 $disbase
@@ -1706,8 +1717,8 @@ ENDCOMP
 Subject: <input type="text" size="50" name="subject" />
 </p>
 <p>$lt{'gmt'}:<br />
-<textarea name="message" id="message" cols="60" rows="10" wrap="hard">$dismsg
-</textarea>$wysiwyglink</p>
+<textarea name="message" id="message" cols="60" rows="10" wrap="hard" $textareaclass>$dismsg
+</textarea></p>
 <p>
 $lt{'tff'}:
 ENDBLOCK
@@ -1733,9 +1744,7 @@ ENDUPLOAD
     }
     $r->print('</form>');
     if ($hasfloat) {
-        unless($env{'environment.wysiwygeditor'} eq 'on') {
-            $r->print('</div><div class="LC_clear_float_footer"></div>');
-        }
+        $r->print('</div><div class="LC_clear_float_footer"></div>');
     }
     $r->print(&generate_preview_form);
 }
@@ -2009,6 +2018,7 @@ sub facetoface {
              .&Apache::lonhtmlcommon::end_pick_box()
              .'<br />'
              .'<input type="submit" value="'.$lt{'subm'}.'" />'
+             .'</form>'
     );
 
     if (($stage ne 'query') &&
@@ -2411,7 +2421,6 @@ sub displaymessage {
     my $number_of_messages = scalar(@messages); #subtract 1 for last index
 # start output
     &printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'});
-    my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'});
 
 # Prepare available functions
     my @functionlist;
@@ -2655,12 +2664,14 @@ sub displaymessage {
             }
             if ($content{'group'} ne '') {
                 if (&check_group_priv($content{'group'})) {
-                    $groupcclist = join(', ',@{$recipients{'group_cc_broadcast'}});
-                    if ($groupcclist) {
-                        $r->print(&Apache::lonhtmlcommon::row_title(&mt('Group Cc'))
-                                 .$groupcclist
-                                 .&Apache::lonhtmlcommon::row_closure()
-                        );
+                    if (ref($recipients{'group_cc_broadcast'}) eq 'ARRAY') { 
+                        $groupcclist = join(', ',@{$recipients{'group_cc_broadcast'}});
+                        if ($groupcclist) {
+                            $r->print(&Apache::lonhtmlcommon::row_title(&mt('Group Cc'))
+                                     .$groupcclist
+                                     .&Apache::lonhtmlcommon::row_closure()
+                            );
+                        }
                     }
                 }
             }
@@ -2668,14 +2679,22 @@ sub displaymessage {
     }
 
     # Course
-    if ($content{'courseid'}) {
-        $r->print(&Apache::lonhtmlcommon::row_title(&mt($crstype))
-                 .$courseinfo{'description'}
-        );
-        if ($content{'coursesec'}) {
-            $r->print(' ('.&mt('Section').': '.$content{'coursesec'}.')');
+    if ($content{'courseid'} ne '') {
+        if ($content{'courseid'} =~ m{^$match_domain\_$match_courseid$}) {
+            my %courseinfo;
+            %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'},
+                                                           {'one_time' => 1});
+            my $description = $courseinfo{'description'};
+            if ($description ne '') {
+                $r->print(&Apache::lonhtmlcommon::row_title(&mt($crstype))
+                         .$description
+                );
+                if ($content{'coursesec'}) {
+                    $r->print(' ('.&mt('Section').': '.$content{'coursesec'}.')');
+                }
+                $r->print(&Apache::lonhtmlcommon::row_closure());
+            }
         }
-        $r->print(&Apache::lonhtmlcommon::row_closure());
     }
     $r->print(&Apache::lonhtmlcommon::row_title(&mt('Time'))
              .$content{'time'}
@@ -3184,7 +3203,7 @@ sub sendoffmail {
 	    my ($recuname,$recdomain)=split(/\:/,$address);
             my $msgtxt = $savemsg;
             if ($toaddr{$address}) {
-	        $msgtxt.='<hr />'.$toaddr{$address};
+	        $msgtxt.="\n".'<hr />'."\n".$toaddr{$address};
             }
 	    my @thismsg;
 	    if ($msgtype eq 'critical') {
@@ -3309,6 +3328,9 @@ sub sendoffmail {
                 $r->print($message);
             }
         }
+    } else {
+        &printheader($r,'','Messages cancelled.');
+        return 'cancelled';
     }
     return $sendstatus;
 }