Diff for /loncom/interface/lonmsg.pm between versions 1.147 and 1.156

version 1.147, 2005/06/06 20:31:24 version 1.156, 2005/11/23 22:32:11
Line 114  use HTML::Entities(); Line 114  use HTML::Entities();
 use Mail::Send;  use Mail::Send;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::loncommunicate;  use Apache::loncommunicate;
   use Apache::lonfeedback;
   use Apache::lonrss();
   
 # Querystring component with sorting type  # Querystring component with sorting type
 my $sqs;  my $sqs;
Line 124  my $interdis; Line 126  my $interdis;
   
 sub packagemsg {  sub packagemsg {
     my ($subject,$message,$citation,$baseurl,$attachmenturl,      my ($subject,$message,$citation,$baseurl,$attachmenturl,
  $recuser,$recdomain)=@_;   $recuser,$recdomain,$msgid)=@_;
     $message =&HTML::Entities::encode($message,'<>&"');      $message =&HTML::Entities::encode($message,'<>&"');
     $citation=&HTML::Entities::encode($citation,'<>&"');      $citation=&HTML::Entities::encode($citation,'<>&"');
     $subject =&HTML::Entities::encode($subject,'<>&"');      $subject =&HTML::Entities::encode($subject,'<>&"');
Line 139  sub packagemsg { Line 141  sub packagemsg {
     $msgcount++;      $msgcount++;
     my $partsubj=$subject;      my $partsubj=$subject;
     $partsubj=&Apache::lonnet::escape($partsubj);      $partsubj=&Apache::lonnet::escape($partsubj);
     my $msgid=&Apache::lonnet::escape(      unless(defined($msgid)) {
           $msgid=&Apache::lonnet::escape(
            $now.':'.$partsubj.':'.$env{'user.name'}.':'.             $now.':'.$partsubj.':'.$env{'user.name'}.':'.
            $env{'user.domain'}.':'.$msgcount.':'.             $env{'user.domain'}.':'.$msgcount.':'.
            $env{'request.course.id'}.':'.$$);             $env{'request.course.id'}.':'.$$);
       }
     my $result='<sendername>'.$env{'user.name'}.'</sendername>'.      my $result='<sendername>'.$env{'user.name'}.'</sendername>'.
            '<senderdomain>'.$env{'user.domain'}.'</senderdomain>'.             '<senderdomain>'.$env{'user.domain'}.'</senderdomain>'.
            '<subject>'.$subject.'</subject>'.             '<subject>'.$subject.'</subject>'.
Line 159  sub packagemsg { Line 163  sub packagemsg {
    '<coursesec>'.$env{'request.course.sec'}.'</coursesec>'.     '<coursesec>'.$env{'request.course.sec'}.'</coursesec>'.
    '<role>'.$env{'request.role'}.'</role>'.     '<role>'.$env{'request.role'}.'</role>'.
    '<resource>'.$env{'request.filename'}.'</resource>'.     '<resource>'.$env{'request.filename'}.'</resource>'.
            '<msgid>'.$msgid.'</msgid>'.             '<msgid>'.$msgid.'</msgid>';
    '<recuser>'.$recuser.'</recuser>'.      if (ref($recuser) eq 'ARRAY') {
    '<recdomain>'.$recdomain.'</recdomain>'.          for (my $i=0; $i<@{$recuser}; $i++) {
    '<message>'.$message.'</message>';              $result .= '<recuser>'.$$recuser[$i].'</recuser>'.
                          '<recdomain>'.$$recdomain[$i].'</recdomain>';
           }
       } else {
           $result .= '<recuser>'.$recuser.'</recuser>'.
                      '<recdomain>'.$recdomain.'</recdomain>';
       }
       $result .= '<message>'.$message.'</message>';
     if (defined($citation)) {      if (defined($citation)) {
  $result.='<citation>'.$citation.'</citation>';   $result.='<citation>'.$citation.'</citation>';
     }      }
Line 186  sub unpackagemsg { Line 197  sub unpackagemsg {
        if ($token->[0] eq 'S') {         if ($token->[0] eq 'S') {
    my $entry=$token->[1];     my $entry=$token->[1];
            my $value=$parser->get_text('/'.$entry);             my $value=$parser->get_text('/'.$entry);
            $content{$entry}=$value;             if (($entry eq 'recuser') || ($entry eq 'recdomain')) {
                  push(@{$content{$entry}},$value);
              } else {
                  $content{$entry}=$value;
              }
        }         }
     }      }
     if ($content{'attachmenturl'}) {      if ($content{'attachmenturl'}) {
Line 337  sub del_url_author_res_msg { Line 352  sub del_url_author_res_msg {
     }      }
     return &Apache::lonnet::del('nohist_res_msgs',\@delmsgs,$domain,$author);      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  # ================= Return hash with URLs for which there is a resource message
   
 sub all_url_author_res_msg {  sub all_url_author_res_msg {
Line 459  sub user_crit_received { Line 487  sub user_crit_received {
   
 sub user_normal_msg_raw {  sub user_normal_msg_raw {
     my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,      my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,
  $toperm)=@_;   $toperm,$newid)=@_;
 # Check if allowed missing  # Check if allowed missing
     my $status='';      my $status='';
     my $msgid='undefined';      my $msgid='undefined';
Line 477  sub user_normal_msg_raw { Line 505  sub user_normal_msg_raw {
 # Save new message received time  # Save new message received time
        &Apache::lonnet::put         &Apache::lonnet::put
                          ('email_status',{'recnewemail'=>time},$domain,$user);                           ('email_status',{'recnewemail'=>time},$domain,$user);
 # Into sent-mail folder  # Into sent-mail folder unless a broadcast message
        $status.=' '.&Apache::lonnet::critical(         unless (($env{'request.course.id'}) && ($env{'form.sendmode'} eq 'group')) {
            'put:'.$env{'user.domain'}.':'.$env{'user.name'}.             $status .= &store_sent_mail($msgid,$message);
       ':nohist_email_sent:'.         }
            &Apache::lonnet::escape($msgid).'='.  
            &Apache::lonnet::escape($message),$env{'user.home'});  
     } else {      } else {
        $status='no_host';         $status='no_host';
     }      }
       if (defined($newid)) {
           $$newid = $msgid;
       }
 # Notifications  # Notifications
     my %userenv = &Apache::lonnet::get('environment',['notification',      my %userenv = &Apache::lonnet::get('environment',['notification',
                                                       'permanentemail'],                                                        'permanentemail'],
Line 535  sub user_normal_msg { Line 564  sub user_normal_msg {
     return $status;      return $status;
 }  }
   
   sub store_sent_mail {
       my ($msgid,$message) = @_;
           my $status =' '.&Apache::lonnet::critical(
                      'put:'.$env{'user.domain'}.':'.$env{'user.name'}.
                                                 ':nohist_email_sent:'.
                      &Apache::lonnet::escape($msgid).'='.
                      &Apache::lonnet::escape($message),$env{'user.home'});
       return $status;
   }
   
 # ============================================================ List all folders  # ============================================================ List all folders
   
Line 564  sub scrollbuttons { Line 602  sub scrollbuttons {
     my ($start,$maxdis,$first,$finish,$total)=@_;      my ($start,$maxdis,$first,$finish,$total)=@_;
     unless ($total>0) { return ''; }      unless ($total>0) { return ''; }
     $start++; $maxdis++;$first++;$finish++;      $start++; $maxdis++;$first++;$finish++;
     return       return
      &mt('Page').': '. 
    '<input type="submit" name="firstview" value="'.&mt('First').'" />'.     '<input type="submit" name="firstview" value="'.&mt('First').'" />'.
    '<input type="submit" name="prevview" value="'.&mt('Previous').'" />'.     '<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="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="nextview" value="'.&mt('Next').'" />'.
    '<input type="submit" name="lastview" value="'.&mt('Last').'" /><br />'.     '<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  # =============================================================== Folder suffix
Line 596  sub statuschange { Line 635  sub statuschange {
     if (($newstatus eq 'deleted') || ($newstatus eq 'new')) {      if (($newstatus eq 'deleted') || ($newstatus eq 'new')) {
  &Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});   &Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});
     }      }
       if ($newstatus eq 'deleted') {
          &movemsg(&Apache::lonnet::unescape($msgid),$folder,'trash');
      }
 }  }
   
 # ============================================================= Make new folder  # ============================================================= Make new folder
Line 869  sub disnew { Line 911  sub disnew {
 TABLEHEAD  TABLEHEAD
         foreach my $msg (@newmsgs) {          foreach my $msg (@newmsgs) {
             $r->print(<<"ENDLINK");              $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>  <td><a href="/adm/email?dismode=new&display=$msg->{'msgid'}">$lt{'op'}</a></td>
 ENDLINK  ENDLINK
             foreach ('sendtime','from','fromdom','shortsub') {              foreach ('sendtime','from','fromdom','shortsub') {
Line 996  ENDDISHEADER Line 1039  ENDDISHEADER
  my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @{$temp[$n]};   my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @{$temp[$n]};
  if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {   if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {
     if ($status eq 'new') {      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') {      } 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') {      } 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 {      } 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.       $r->print('<td><input type="checkbox" name="delmark_'.$origID.'" /></td><td><a href="/adm/email?display='.$origID.$sqs. 
       '">'.&mt('Open').'</a></td><td>'.        '">'.&mt('Open').'</a></td><td>'.
Line 1095  sub compout { Line 1138  sub compout {
  '<label><input type="checkbox" name="sendbck" /> '.&mt('Send as critical message').'  ' .   '<label><input type="checkbox" name="sendbck" /> '.&mt('Send as critical message').'  ' .
  &mt('and return receipt') . '</label>' . $crithelp .    &mt('and return receipt') . '</label>' . $crithelp . 
  '</p><p><label><input type="checkbox" name="permanent" /> '.   '</p><p><label><input type="checkbox" name="permanent" /> '.
 &mt('Send copy to permanent email address (if known)').'</label></p>';  &mt('Send copy to permanent email address (if known)').'</label></p>'.
      }  '<p><label><input type="checkbox" name="rsspost" /> '.
     &mt('Include in course RSS newsfeed').'</label></p>';      }
     my %message;      my %message;
     my %content;      my %content;
     my $defdom=$env{'user.domain'};      my $defdom=$env{'user.domain'};
Line 1215  ENDUPLOAD Line 1259  ENDUPLOAD
        &discourse;         &discourse;
     }      }
     $r->print('</form>'.      $r->print('</form>'.
         &Apache::lonfeedback::generate_preview_button('compemail','message').
       &Apache::lonhtmlcommon::htmlareaselectactive('message'));        &Apache::lonhtmlcommon::htmlareaselectactive('message'));
 }  }
   
Line 1777  sub displaymessage { Line 1822  sub displaymessage {
       '<td><a href="/adm/email?markunread='.&Apache::lonnet::escape($msgid).$sqs.        '<td><a href="/adm/email?markunread='.&Apache::lonnet::escape($msgid).$sqs.
       '"><b>'.&mt('Mark Unread').'</b></a></td>'.        '"><b>'.&mt('Mark Unread').'</b></a></td>'.
       '<td><a href="/adm/email?markdel='.&Apache::lonnet::escape($msgid).$sqs.        '<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.        '<td><a href="/adm/email?'.$sqs.
       ($env{'form.dismode'} eq 'new'?'&folder=new':'').        ($env{'form.dismode'} eq 'new'?'&folder=new':'').
       '"><b>'.&mt('Back to Folder Display').'</b></a></td>');        '"><b>'.&mt('Back to Folder Display').'</b></a></td>');
Line 1792  sub displaymessage { Line 1837  sub displaymessage {
     $r->print('</tr></table>');      $r->print('</tr></table>');
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
  $r->print('<table border="2" width="100%"><tr bgcolor="#FFAAAA"><td>'.&mt('Currently available actions (will open extra window)').':</td>');   $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'})) {   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>');   $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'})) {   if (&Apache::lonnet::allowed('opa',$env{'request.course.id'}) && $symb) {
     my $symb=&Apache::lonnet::symbread($content{'baseurl'});  
     $r->print('<td><b>'.&Apache::loncommon::pprmlink(&mt('Set/Change parameters'),$content{'sendername'},$content{'senderdomain'},$symb,'check').'</b></td>');      $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'})) {   if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'}) && $symb) {
     my $symb=&Apache::lonnet::symbread($content{'baseurl'});  
     $r->print('<td><b>'.&Apache::loncommon::pgrdlink(&mt('Set/Change grades'),$content{'sendername'},$content{'senderdomain'},$symb,'check').'</b></td>');      $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('</tr></table>');
     }      }
       my $tolist;
       my @recipients = ();
       for (my $i=0; $i<@{$content{'recuser'}}; $i++) {
           $recipients[$i] =  &Apache::loncommon::aboutmewrapper(
              &Apache::loncommon::plainname($content{'recuser'}[$i],
                                         $content{'recdomain'}[$i]),
                 $content{'recuser'}[$i],$content{'recdomain'}[$i]).
          ' ('.$content{'recuser'}[$i].' at '.$content{'recdomain'}[$i].') ';
       }
       $tolist = join(', ',@recipients);
     $r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}.      $r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}.
       ($folder ne 'sent'?'<br /><b>'.&mt('From').':</b> '.        ($folder ne 'sent'?'<br /><b>'.&mt('From').':</b> '.
       &Apache::loncommon::aboutmewrapper(        &Apache::loncommon::aboutmewrapper(
Line 1813  sub displaymessage { Line 1866  sub displaymessage {
  $content{'sendername'},$content{'senderdomain'}).' ('.   $content{'sendername'},$content{'senderdomain'}).' ('.
       $content{'sendername'}.' at '.        $content{'sendername'}.' at '.
       $content{'senderdomain'}.') ':'<br /><b>'.&mt('To').':</b> '.        $content{'senderdomain'}.') ':'<br /><b>'.&mt('To').':</b> '.
       &Apache::loncommon::aboutmewrapper(                $tolist).
  &Apache::loncommon::plainname($content{'recuser'},$content{'recdomain'}),  
  $content{'recuser'},$content{'recdomain'}).' ('.  
       $content{'recuser'}.' at '.  
       $content{'recdomain'}.') ').  
       ($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}.        ($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}.
        ($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):'').         ($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):'').
       '<br /><b>'.&mt('Time').':</b> '.$content{'time'}.        '<br /><b>'.&mt('Time').':</b> '.$content{'time'}.
Line 1932  sub sendoffmail { Line 1981  sub sendoffmail {
     my ($r,$folder)=@_;      my ($r,$folder)=@_;
     my $suffix=&foldersuffix($folder);      my $suffix=&foldersuffix($folder);
     my $sendstatus='';      my $sendstatus='';
       my %broadcast_status;
       my $numbroadcast = 0;
     if ($env{'form.send'}) {      if ($env{'form.send'}) {
  &printheader($r,'','Messages being sent.');   &printheader($r,'','Messages being sent.');
  $r->rflush();   $r->rflush();
Line 1976  sub sendoffmail { Line 2027  sub sendoffmail {
  $toaddr{$auname.':'.$audom}='';   $toaddr{$auname.':'.$audom}='';
     }      }
  }   }
   
           my $basicmsg;
           my $msgtype;
           if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) &&
               (&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) {
               $basicmsg=&Apache::lonfeedback::clear_out_html($env{'form.message'},1);
               $msgtype = '(critical)';
           } else {
               $basicmsg=&Apache::lonfeedback::clear_out_html($env{'form.message'});
           }
   
  foreach (keys %toaddr) {   foreach (keys %toaddr) {
     my ($recuname,$recdomain)=split(/\:/,$_);      my ($recuname,$recdomain)=split(/\:/,$_);
             my $msgtxt;              my $msgtxt = $basicmsg;
             if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) &&  
                 (&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) {  
                 $msgtxt=&Apache::lonfeedback::clear_out_html($env{'form.message'},1);  
             } else {    
         $msgtxt=&Apache::lonfeedback::clear_out_html($env{'form.message'});  
             }  
     if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; }      if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; }
     my $thismsg;          my $thismsg;
     if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) &&       if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && 
  (&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) {   (&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) {
  $r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': ');   $r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': ');
Line 2001  sub sendoffmail { Line 2056  sub sendoffmail {
   &Apache::lonfeedback::clear_out_html($env{'form.subject'}),    &Apache::lonfeedback::clear_out_html($env{'form.subject'}),
   $msgtxt,    $msgtxt,
   $content{'citation'},undef,undef,$env{'form.permanent'});    $content{'citation'},undef,undef,$env{'form.permanent'});
  if (($env{'request.course.id'}) && ($env{'form.sendmode'} eq 'group')) {              }
     &user_normal_msg_raw(      if (($env{'request.course.id'}) && 
  $env{'course.'.$env{'request.course.id'}.'.num'},                                           ($env{'form.sendmode'} eq 'group')) {
  $env{'course.'.$env{'request.course.id'}.'.domain'},          $broadcast_status{$recuname.':'.$recdomain}  = $thismsg;
  'Broadcast ['.$recuname.':'.$recdomain.']',                  if ($thismsg eq 'ok') {
  $msgtxt);                      $numbroadcast ++;
  }                  }
     }      }
     $r->print($thismsg.'<br />');      $r->print($thismsg.'<br />');
     $sendstatus.=' '.$thismsg;      $sendstatus.=' '.$thismsg;
  }   }
           if (($env{'request.course.id'}) && ($env{'form.sendmode'} eq 'group')) {
               my $subj_prefix;
               if ($msgtype eq 'critical') {
                   $subj_prefix = 'Critical broadcast';
               } else {
                   $subj_prefix = 'Broadcast';
               }
               my ($broadmsgid,$broadresult);
               if ($numbroadcast) {
                   $broadresult = &user_normal_msg_raw(
                       $env{'course.'.$env{'request.course.id'}.'.num'},
                       $env{'course.'.$env{'request.course.id'}.'.domain'},                $subj_prefix.' to: '.$env{'course.'.$env{'request.course.id'}.'.description'}.
                       ' ('.$numbroadcast.' sent)',$basicmsg,undef,undef,undef,
                       undef,\$broadmsgid);
               }
               if ($broadresult eq 'ok') {
                   my $record_sent;
                   my @recusers = ();
                   my @recudoms = ();
                   foreach my $recipient (sort(keys(%toaddr))) {
                       if ($broadcast_status{$recipient} eq 'ok') {
                           my ($uname,$udom) = split/:/,$recipient;
                           push(@recusers,$uname);
                           push(@recudoms,$udom);
                       }
                   }
                   if (@recusers) {
                       my $broadmessage;
                       ($broadmsgid,$broadmessage)=&packagemsg(&Apache::lonfeedback::clear_out_html($env{'form.subject'}),$basicmsg,undef,undef,undef,\@recusers,\@recudoms,$broadmsgid);
                       $record_sent = &store_sent_mail($broadmsgid,$broadmessage);
                   }
               } else {
                   &Apache::lonnet::logthis('Failed to create record of broadcast in '.$env{'course.'.$env{'request.course.id'}.'.num'}.' at '.$env{'course.'.$env{'request.course.id'}.'.domain'}.' - no msgid generated');
               }
           }
     } else {      } else {
  &printheader($r,'','No messages sent.');    &printheader($r,'','No messages sent.'); 
     }      }
Line 2177  sub handler { Line 2267  sub handler {
  if ($env{'form.storebasecomment'}) {   if ($env{'form.storebasecomment'}) {
     &storecomment($r);      &storecomment($r);
  }   }
    if (($env{'form.rsspost'}) && ($env{'request.course.id'})) {
       &Apache::lonrss::addentry($env{'course.'.$env{'request.course.id'}.'.num'},
         $env{'course.'.$env{'request.course.id'}.'.domain'},
         'Course_Announcements',
         $env{'form.subject'},
         $env{'form.message'},'/adm/communicate','public');
    }
  &disall($r,($folder?$folder:$dismode));   &disall($r,($folder?$folder:$dismode));
     } elsif ($env{'form.newfolder'}) {      } elsif ($env{'form.newfolder'}) {
  &printheader($r,'','New Folder');   &printheader($r,'','New Folder');

Removed from v.1.147  
changed lines
  Added in v.1.156


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>