Diff for /loncom/interface/lonmsgdisplay.pm between versions 1.71 and 1.81

version 1.71, 2007/05/01 18:40:57 version 1.81, 2007/07/17 18:35:54
Line 390  sub renamefolder { Line 390  sub renamefolder {
     if ($env{'form.renamed'} eq '') {      if ($env{'form.renamed'} eq '') {
         return &mt('The folder "[_1]" may not be renamed to "[_2]" as the new name you requested is an invalid name.',$folder,$newname);          return &mt('The folder "[_1]" may not be renamed to "[_2]" as the new name you requested is an invalid name.',$folder,$newname);
     }      }
       if (defined($permfolders{$folder})) {
           return &mt('The folder "[_1]" may not be renamed as it is a folder provided by the system.',$folder);
       }
     if (defined($permfolders{$newname})) {      if (defined($permfolders{$newname})) {
         return &mt('The folder "[_1]" may not be renamed to "[_2]" as the new name you requested is reserved for folders provided automatically by the system.',$folder,$newname);          return &mt('The folder "[_1]" may not be renamed to "[_2]" as the new name you requested is reserved for folders provided automatically by the system.',$folder,$newname);
     }      }
Line 734  $content{'sendername'}.':'. Line 737  $content{'sendername'}.':'.
             '<br />'.&mt('Subject').': '.$content{'subject'}.              '<br />'.&mt('Subject').': '.$content{'subject'}.
             '<br /><pre>'.              '<br /><pre>'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).                &Apache::lontexconvert::msgtexconverted($content{'message'}).
             '</pre><small>'.              '</pre><small>';
 &mt('You have to confirm that you received this message. After confirmation, this message will be moved to your regular inbox').          my ($rec_button,$reprec_button);
             '</small><br />'.          $rec_button = &mt('Move to Inbox');
             '<input type="submit" name="rec_'.$key.'" value="'.&mt('Confirm Receipt').'" />'.          if (!$content{'noreplies'}) {
             '<input type="submit" name="reprec_'.$key.'" '.              $reprec_button = &mt('Move to Inbox/Compose reply');
                   'value="'.&mt('Confirm Receipt and Reply').'" />';          }
           if ($content{'sendback'}) {
               $rec_button = &mt('Confirm Receipt');
               if (!$content{'noreplies'}) {
                   $reprec_button = &mt('Confirm Receipt and Reply');
               }
               $result .= &mt('You have to confirm that you have received this message before you can view other pages. After confirmation, this message will be moved to your regular inbox');
           } else {
               $result .= &mt('Access to other pages will be prevented until you have moved the message to your inbox.'); 
           }
           $result .= '</small><br />'.
               '<input type="submit" name="rec_'.$key.'" value="'.$rec_button.'" />';
           if (!$content{'noreplies'}) {
               $result .= '<input type="submit" name="reprec_'.$key.'" '.
                     'value="'.$reprec_button.'" />';
           }
     }      }
     # Check to see if there were any messages.      # Check to see if there were any messages.
     if ($result eq '') {      if ($result eq '') {
Line 874  sub get_course_desc { Line 892  sub get_course_desc {
   
 sub disall {  sub disall {
     my ($r,$folder,$msgstatus)=@_;      my ($r,$folder,$msgstatus)=@_;
     my %saveable = ('folder'    => 'scalar',      my %saveable = ('msgstatus' => 'scalar',
     'msgstatus' => 'scalar',  
     'sortedby'  => 'scalar',      'sortedby'  => 'scalar',
     'interdis'  => 'scalar',      'interdis'  => 'scalar',
     );      );
Line 1206  will be forwarded to the recipient(s) yo Line 1223  will be forwarded to the recipient(s) yo
     my %lt=&Apache::lonlocal::texthash('us'  => 'Username',      my %lt=&Apache::lonlocal::texthash('us'  => 'Username',
        'do'  => 'Domain',         'do'  => 'Domain',
        'ad'  => 'Additional Recipients',         'ad'  => 'Additional Recipients',
                                          'rt'  => 'Reply to',
                                          'ar'  => 'Allow replies',
        'sb'  => 'Subject',         'sb'  => 'Subject',
        'ca'  => 'Cancel',         'ca'  => 'Cancel',
        'ma'  => 'Mail',         'ma'  => 'Mail',
Line 1273  will be forwarded to the recipient(s) yo Line 1292  will be forwarded to the recipient(s) yo
  if ($content{'baseurl'}) {   if ($content{'baseurl'}) {
     $disbase='<input type="hidden" name="baseurl" value="'.&escape($content{'baseurl'}).'" />';      $disbase='<input type="hidden" name="baseurl" value="'.&escape($content{'baseurl'}).'" />';
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
  $disbase.='<label><input type="checkbox" name="storebasecomment" />'.&mt('Store message for re-use').   $disbase.='<label><input type="checkbox" name="storebasecomment" />'.&mt('Save message for re-use').
     '</label> <a href="/adm/email?showcommentbaseurl='.      '</label> <a href="/adm/email?showcommentbaseurl='.
     &escape($content{'baseurl'}).'" target="comments">'.      &escape($content{'baseurl'}).'" target="comments">'.
     &mt('Show re-usable messages').'</a><br />';      &mt('Show re-usable messages').'</a><br />';
     }      }
  }   }
           my $jscript = &Apache::loncommon::check_uncheck_jscript();
           $r->print(<<"ENDREPSCRIPT");
   <script type="text/javascript">
   $jscript
   </script>
   ENDREPSCRIPT
     }      }
     my $citation=&displayresource(%content);      my $citation=&displayresource(%content);
     my ($can_grp_broadcast,$viewgrps,$editgrps);      my ($can_grp_broadcast,$viewgrps,$editgrps);
Line 1310  will be forwarded to the recipient(s) yo Line 1335  will be forwarded to the recipient(s) yo
     }       } 
     if (($broadcast ne 'group') && ($broadcast ne 'upload')) {      if (($broadcast ne 'group') && ($broadcast ne 'upload')) {
  if ($replying) {   if ($replying) {
     $r->print('<tr><td colspan="2">'.&mt('Replying to').' '.              if ($content{'noreplies'}) {
       &Apache::loncommon::aboutmewrapper(                  $r->print('<tr><td>'.&mt('This message was designated by the sender not to allow replies.').'</td></tr></table></form>');
                   return;
               }
               $r->print('<tr><td colspan="2">'.&mt('Replying to').' ');
               if ($content{'replytoaddr'}) {
                   my ($replytoname,$replytodom) = split(/:/,$content{'replytoaddr'});
                   if ($replytoname ne '' && $replytodom ne '') {
                       $r->print(&Apache::loncommon::plainname($replytoname,
                                    $replytodom).' ('.$replytoname.':'.
                                    $replytodom.')');
                       $r->print('<input type="hidden" name="recuname" value="'.
                             $replytoname.'" />'.
                             '<input type="hidden" name="recdomain" value="'.
                             $replytodom.'" /></td></tr>');
   
                   } else {
                       $r->print(&mt('The sender did not designate a reply to address for this message.').'</td></tr></table>');
                       return;
                   }
               } else {
           $r->print(&Apache::loncommon::aboutmewrapper(
  &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).' ('.   &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).' ('.
       $content{'sendername'}.':'.        $content{'sendername'}.':'.
       $content{'senderdomain'}.')'.        $content{'senderdomain'}.')');
       '<input type="hidden" name="recuname" value="'.$content{'sendername'}.'" />'.                  $r->print('<input type="hidden" name="recuname" value="'.
       '<input type="hidden" name="recdomain" value="'.$content{'senderdomain'}.'" />'.            $content{'sendername'}.'" />'.
       '</td></tr>');            '<input type="hidden" name="recdomain" value="'.
                             $content{'senderdomain'}.'" /></td></tr>');
               }
               if ($content{'recipid'}) {
                   my @ccs = &retrieve_cc_recips('replying',%content);
                   if (@ccs > 0) {
                       my $replyall = qq|
    <span class="LC_nobreak">
         <input type="button" value="check all"
           onclick="javascript:checkAll(document.compemail.replying_cc)" />
           &nbsp;&nbsp;
         <input type="button" value="uncheck all"
           onclick="javascript:uncheckAll(document.compemail.replying_cc)" />
    </span>
   |;
                       my $cclist = join(' ',@ccs);
                       $r->print('<tr><td>'.&mt('Reply to other recipients').':<br />'.$replyall.'</td><td>'.$cclist.'</td></tr>');
                   }
               }
  } else {   } else {
             $r->print(&recipient_input_row($defdom,%lt));              $r->print(&recipient_input_row($defdom,%lt));
         }          }
Line 1354  $latexHelp. Line 1417  $latexHelp.
     } elsif ($broadcast ne 'upload') {      } elsif ($broadcast ne 'upload') {
         $subj_size = '50';          $subj_size = '50';
         $r->print(&additional_rec_row(\%lt));          $r->print(&additional_rec_row(\%lt));
           if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})
               || &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
                                           '/'.$env{'request.course.sec'})) {
               $r->print(&reply_to_row(\%lt));
           }
         $r->print(&msg_subject_row($dissub,\%lt,$subj_size));          $r->print(&msg_subject_row($dissub,\%lt,$subj_size));
         $r->print(<<"ENDCOMP");          $r->print(<<"ENDCOMP");
 </table>  </table>
Line 1428  sub recipient_input_row { Line 1496  sub recipient_input_row {
       &Apache::loncommon::selectstudent_link('compemail','recuname',        &Apache::loncommon::selectstudent_link('compemail','recuname',
                                              'recdomain');                                               'recdomain');
     my $output = <<"ENDREC";      my $output = <<"ENDREC";
 <tr><td>$lt{'us'}:</td><td><input type="text" size="12" name="recuname" value="$env{'form.recname'}" /></td><td rowspan="2">$selectlink</td></tr>  <tr><td colspan="2"><span class="LC_nobreak">$lt{'us'}:&nbsp;<input type="text" size="12" name="recuname" value="$env{'form.recname'}" />&nbsp;$lt{'do'}:&nbsp;$domform&nbsp;&nbsp;$selectlink</span></td></tr>
 <tr><td>$lt{'do'}:</td>  
 <td>$domform</td></tr>  
 ENDREC  ENDREC
     return $output;      return $output;
 }  }
   
   sub reply_to_row {
       my ($lt) = @_;
       my $radioyes = &mt('Yes');
       my $radiono = &mt('No');
       my $output = <<"ENDREP";
   <tr><td colspan="2"><span class="LC_nobreak">$lt->{'ar'}:<label><input type="radio" name="can_reply" value="Y" checked="checked" />$radioyes</label>&nbsp;&nbsp;<label><input type="radio" name="can_reply" value="N" />$radiono</label></span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="LC_nobreak">$lt->{'rt'}:&nbsp;<input type="text" size="25" name="reply_to_addr" value="$env{'user.name'}:$env{'user.domain'}" /></span></td></tr>
   ENDREP
       return $output;
   }
   
 sub additional_rec_row {  sub additional_rec_row {
     my ($lt) = @_;      my ($lt) = @_;
       my $cc = &mt('Cc:');
       my $bcc = &mt('Bcc:'); 
     my $output = <<"ENDADD";      my $output = <<"ENDADD";
 <tr><td>$lt->{'ad'}:<br /><tt>username:domain,username:domain, ...  <tr><td>$lt->{'ad'} :<br /><tt>username:domain,username:domain, ...
 </tt></td><td>  </tt></td><td>&nbsp;<span class="LC_nobreak">$cc 
 <input type="text" size="50" name="additionalrec" /></td></tr>  <input type="text" size="50" name="additionalrec_cc" /></span><br />
   <span class="LC_nobreak">$bcc <input type="text" size="50" name="additionalrec_bcc" /></span></td></tr>
 ENDADD  ENDADD
     return $output;      return $output;
 }  }
Line 1458  sub submit_button_row { Line 1537  sub submit_button_row {
   
 sub msg_subject_row {  sub msg_subject_row {
     my ($dissub,$lt,$subj_size,$extra) = @_;      my ($dissub,$lt,$subj_size,$extra) = @_;
     my $output = '<tr><td>'.$lt->{'sb'}.':</td><td><input type="text" size="'.      my $output = '<tr><td colspan="2">'.$lt->{'sb'}.':&nbsp;<input type="text" size="'.
                  $subj_size.'" name="subject" value="'.$dissub.'" />'.$extra.                   $subj_size.'" name="subject" value="'.$dissub.'" />'.$extra.
                  '</td></tr>';                   '</td></tr>';
     return $output;      return $output;
Line 1680  sub examblock { Line 1759  sub examblock {
             'cbds' => 'Communication blocking during scheduled exams',              'cbds' => 'Communication blocking during scheduled exams',
             'desc' => "You can use communication blocking to prevent $usertype enrolled in this course from displaying LON-CAPA messages sent by other $usertype during an online exam. As blocking of communication could potentially interrupt legitimate communication between $usertype who are also both enrolled in a different LON-CAPA course, please be careful that you select the correct start and end times for your scheduled exam when setting or modifying these parameters.",              'desc' => "You can use communication blocking to prevent $usertype enrolled in this course from displaying LON-CAPA messages sent by other $usertype during an online exam. As blocking of communication could potentially interrupt legitimate communication between $usertype who are also both enrolled in a different LON-CAPA course, please be careful that you select the correct start and end times for your scheduled exam when setting or modifying these parameters.",
              'mecb' => 'Modify existing communication blocking periods',               'mecb' => 'Modify existing communication blocking periods',
              'ncbc' => 'No communication blocks currently stored',               'ncbc' => 'No communication blocks currently saved',
              'stor' => 'Store',               'stor' => 'Save',
     );      );
   
     my %ltext = &Apache::lonlocal::texthash(      my %ltext = &Apache::lonlocal::texthash(
Line 1984  sub displaymessage { Line 2063  sub displaymessage {
     }      }
     my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);      my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
     my %content=&Apache::lonmsg::unpackagemsg($message{$msgid});      my %content=&Apache::lonmsg::unpackagemsg($message{$msgid});
   
     my $counter=0;      my $counter=0;
     $r->print('<pre>');      $r->print('<pre>');
     my $escmsgid=&escape($msgid);      my $escmsgid=&escape($msgid);
Line 2000  sub displaymessage { Line 2078  sub displaymessage {
     &printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'});      &printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'});
     my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'});      my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'});
 # Functions  # Functions
     $r->print('<table border="2" width="100%"><tr bgcolor="#FFFFAA"><td>'.&mt('Functions').':</td>'.      $r->print('<table border="2" width="100%"><tr bgcolor="#FFFFAA"><td>'.&mt('Functions').':</td>');
       '<td><a href="/adm/email?replyto='.&escape($msgid).$sqs.      if (!$content{'noreplies'}) {
       '"><b>'.&mt('Reply').'</b></a></td>'.          $r->print('<td><a href="/adm/email?replyto='.&escape($msgid).$sqs.
       '<td><a href="/adm/email?forward='.&escape($msgid).$sqs.            '"><b>'.&mt('Reply').'</b></a></td>');
       }
       $r->print('<td><a href="/adm/email?forward='.&escape($msgid).$sqs.
       '"><b>'.&mt('Forward').'</b></a></td>'.        '"><b>'.&mt('Forward').'</b></a></td>'.
       '<td><a href="/adm/email?markunread='.&escape($msgid).$sqs.        '<td><a href="/adm/email?markunread='.&escape($msgid).$sqs.
       '"><b>'.&mt('Mark Unread').'</b></a></td>'.        '"><b>'.&mt('Mark Unread').'</b></a></td>'.
Line 2039  sub displaymessage { Line 2119  sub displaymessage {
  }   }
  $r->print('</tr></table>');   $r->print('</tr></table>');
     }      }
     my $tolist;      my ($tolist,$cclist);
     my @recipients = ();      my (@recipients,@ccs);
     for (my $i=0; $i<@{$content{'recuser'}}; $i++) {      if (ref($content{'recuser'}) eq 'ARRAY') {
         $recipients[$i] =  &Apache::loncommon::aboutmewrapper(          for (my $i=0; $i<@{$content{'recuser'}}; $i++) {
            &Apache::loncommon::plainname($content{'recuser'}[$i],              $recipients[$i] =  &Apache::loncommon::aboutmewrapper(
                  &Apache::loncommon::plainname($content{'recuser'}[$i],
                                       $content{'recdomain'}[$i]),                                        $content{'recdomain'}[$i]),
               $content{'recuser'}[$i],$content{'recdomain'}[$i]).                    $content{'recuser'}[$i],$content{'recdomain'}[$i]).
        ' ('.$content{'recuser'}[$i].' at '.$content{'recdomain'}[$i].') ';             ' ('.$content{'recuser'}[$i].' '.&mt('at').' '.$content{'recdomain'}[$i].') ';
           }
     }      }
     $tolist = join(', ',@recipients);      $tolist = join(', ',@recipients);
       if ($content{'recipid'}) {
           @ccs = &retrieve_cc_recips('display',%content);
           $cclist = join(', ',@ccs);
       }
     my ($restitle,$baseurl,$refers_to);      my ($restitle,$baseurl,$refers_to);
     if (defined($content{'resource_title'})) {      if (defined($content{'resource_title'})) {
         $restitle = $content{'resource_title'};          $restitle = $content{'resource_title'};
Line 2061  sub displaymessage { Line 2147  sub displaymessage {
         $baseurl = &Apache::lonenc::check_encrypt($content{'baseurl'});          $baseurl = &Apache::lonenc::check_encrypt($content{'baseurl'});
     }      }
     $r->print(&Apache::loncommon::student_image_tag($content{'senderdomain'},$content{'sendername'}));      $r->print(&Apache::loncommon::student_image_tag($content{'senderdomain'},$content{'sendername'}));
     $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> '.      if ($folder eq 'sent') {
           $r->print('<br /><b>'.&mt('To').':</b> '.$tolist);
           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);
               }
           }
       } else {
           $r->print('<br /><b>'.&mt('From').':</b> '.
       &Apache::loncommon::aboutmewrapper(        &Apache::loncommon::aboutmewrapper(
  &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),   &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),
  $content{'sendername'},$content{'senderdomain'}).' ('.   $content{'sendername'},$content{'senderdomain'}));
       $content{'sendername'}.' at '.          if ($content{'noreplies'}) {
       $content{'senderdomain'}.') ':'<br /><b>'.&mt('To').':</b> '.              $r->print(' ('.&mt('No replies to sender').')'); 
               $tolist).          } else {
       ($content{'courseid'}?'<br /><b>'.&mt($crstype).':</b> '.$courseinfo{'description'}.              if ($content{'replytoaddr'}) {
        ($content{'coursesec'}?' ('.&mt('Section').': '.$content{'coursesec'}.')':''):'').                  my ($replytoname,$replytodom) = split(/:/,$content{'replytoaddr'});
       '<br /><b>'.&mt('Time').':</b> '.$content{'time'});                  if ($replytoname ne '' && $replytodom ne '') {
                       $r->print('<br /><b>'.&mt('Reply To').':</b> '.
                                 $replytoname.' '.&mt('at').' '.$replytodom);
                   }
               } else {
                   $r->print(' ('.$content{'sendername'}.' '.&mt('at').' '.
                             $content{'senderdomain'}.') ');
               }
               if ($cclist) {
                   $r->print('<br /><b>'.&mt('Cc').':</b> '.$cclist);
               }
           } 
       }
       if ($content{'courseid'}) {
           $r->print('<br /><b>'.&mt($crstype).':</b> '.$courseinfo{'description'});
           if ($content{'coursesec'}) {
               $r->print(' ('.&mt('Section').': '.$content{'coursesec'}.')');
           }
       }
       $r->print('<br /><b>'.&mt('Time').':</b> '.$content{'time'});
     if ($baseurl) {      if ($baseurl) {
         if (defined($content{'courseid'}) && defined($env{'request.course.id'})) {          if (defined($content{'courseid'}) && defined($env{'request.course.id'})) {
             if ($content{'courseid'} eq $env{'request.course.id'}) {              if ($content{'courseid'} eq $env{'request.course.id'}) {
Line 2124  sub displaymessage { Line 2239  sub displaymessage {
     return;      return;
 }  }
   
   sub retrieve_cc_recips {
       my ($context,%content) = @_; 
       my %reciphash =
            &Apache::lonnet::get('nohist_emailrecip',[$content{'recipid'}],
                                 $content{'senderdomain'},$content{'sendername'});
       my $recipinfo = $reciphash{$content{'recipid'}};
       my @ccs;
       if (ref($recipinfo) eq 'HASH') {
           if (ref($recipinfo->{'cc'}) eq 'HASH') {
               foreach my $cc (sort(keys(%{$recipinfo->{'cc'}}))) {
                   my ($ccname,$ccdom) = split(/:/,$cc);
                   if (!(($ccname eq $env{'user.name'}) &&
                        ($ccdom eq $env{'user.domain'}))) {
                       my $showcc ='<span class="LC_nobreak">';
                       if ($context eq 'replying') { 
                           $showcc = '<label><input type="checkbox" name="replying_cc" value="'.$cc.'" />';
                       }
                       $showcc .= &Apache::loncommon::aboutmewrapper(
                                          &Apache::loncommon::plainname($ccname,
                                            $ccdom),$ccname,$ccdom);
       if ($context eq 'replying') {
    $showcc .='</label>';
       }
       $showcc .= '</span>';
       push(@ccs,$showcc);
                   }
               }
           }
       }
       return @ccs;
   }
   
 # =========================================================== Show the citation  # =========================================================== Show the citation
   
 sub displayresource {  sub displayresource {
Line 2208  sub storedcommentlisting { Line 2355  sub storedcommentlisting {
     my ($r)=@_;      my ($r)=@_;
     my %msgs=&Apache::lonnet::dump('nohist_stored_comments',undef,undef,      my %msgs=&Apache::lonnet::dump('nohist_stored_comments',undef,undef,
        '^'.&escape(&escape($env{'form.showcommentbaseurl'})));         '^'.&escape(&escape($env{'form.showcommentbaseurl'})));
     $r->print(&Apache::loncommon::start_page('Stored Comment Listing',undef,      $r->print(&Apache::loncommon::start_page('Saved Comment Listing',undef,
      {'onlybody' => 1}));       {'onlybody' => 1}));
     if ((keys %msgs)[0]=~/^error\:/) {      if ((keys %msgs)[0]=~/^error\:/) {
  $r->print(&mt('No stored comments yet.'));   $r->print(&mt('No saved comments yet.'));
     } else {      } else {
  my $found=0;   my $found=0;
  foreach my $key (sort(keys(%msgs))) {   foreach my $key (sort(keys(%msgs))) {
Line 2219  sub storedcommentlisting { Line 2366  sub storedcommentlisting {
     $found=1;      $found=1;
  }   }
  unless ($found) {   unless ($found) {
     $r->print(&mt('No stored comments yet for this resource.'));      $r->print(&mt('No saved comments yet for this resource.'));
  }   }
     }      }
 }  }
Line 2271  sub sendoffmail { Line 2418  sub sendoffmail {
     &Apache::loncommon::get_env_multiple('form.selectedusers_forminput');      &Apache::loncommon::get_env_multiple('form.selectedusers_forminput');
  my $mode = $env{'form.sendmode'};   my $mode = $env{'form.sendmode'};
   
  my %toaddr;   my (%toaddr,$cc,$bcc);
  if (@to) {   if (@to) {
     foreach my $dest (@to) {      foreach my $dest (@to) {
  my ($user,$domain) = split(/:/, $dest);   my ($user,$domain) = split(/:/, $dest);
Line 2301  sub sendoffmail { Line 2448  sub sendoffmail {
  } else {   } else {
     if (($env{'form.recuname'} ne '') && ($env{'form.recdomain'} ne '')) {      if (($env{'form.recuname'} ne '') && ($env{'form.recdomain'} ne '')) {
  $toaddr{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';   $toaddr{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';
                   $cc->{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';
     }      }
  }   }
  if ($env{'form.additionalrec'}) {   if ($env{'form.additionalrec_cc'}) {
     foreach my $rec (split(/\s*,\s*/,$env{'form.additionalrec'})) {      foreach my $rec (split(/\s*,\s*/,$env{'form.additionalrec_cc'})) {
  my ($auname,$audom)=split(/:/,$rec);   my ($auname,$audom)=split(/:/,$rec);
  if (($auname ne "") && ($audom ne "")) {   if (($auname ne "") && ($audom ne "")) {
     $toaddr{$auname.':'.$audom}='';                      $toaddr{$auname.':'.$audom}='';
       $cc->{$auname.':'.$audom}='';
  }   }
     }      }
  }   }
           if ($env{'form.additionalrec_bcc'}) {
               foreach my $rec (split(/\s*,\s*/,$env{'form.additionalrec_bcc'})) {
                   my ($auname,$audom)=split(/:/,$rec);
                   if (($auname ne "") && ($audom ne "")) {
                       $toaddr{$auname.':'.$audom}='';
                       $bcc->{$auname.':'.$audom}='';
                   }
               }
           }
           if ($env{'form.replying_cc'}) {
               my @ccreplies = 
                   &Apache::loncommon::get_env_multiple('form.replying_cc');
               foreach my $rec (@ccreplies) {
                   my ($auname,$audom)=split(/:/,$rec);
                   if (($auname ne "") && ($audom ne "")) {
                       $toaddr{$auname.':'.$audom}='';
                       $cc->{$auname.':'.$audom}='';
                   }
               }
           }
         my $savemsg;          my $savemsg;
         my $msgtype;          my $msgtype;
         my %sentmessage;          my %sentmessage;
Line 2327  sub sendoffmail { Line 2495  sub sendoffmail {
         } else {          } else {
             $savemsg=&Apache::lonfeedback::clear_out_html($env{'form.message'});              $savemsg=&Apache::lonfeedback::clear_out_html($env{'form.message'});
         }          }
           my %reciphash = (
                              cc => $cc,
                              bcc => $bcc,
                           ); 
           my ($recipid,$recipstatus) = 
               &Apache::lonmsg::store_recipients($msgsubj,$env{'user.name'},
                                          $env{'user.domain'},\%reciphash);
           if ($recipstatus ne 'ok') {
               &Apache::lonnet::logthis('Failed to store Bcc and Cc recipients for '.$env{'user.name'}.':'.$env{'user.domain'});
           }  
         my @recusers;          my @recusers;
         my @recudoms;          my @recudoms;
  foreach my $address (sort(keys(%toaddr))) {   foreach my $address (sort(keys(%toaddr))) {
     my ($recuname,$recdomain)=split(/\:/,$address);      my ($recuname,$recdomain)=split(/\:/,$address);
             my $msgtxt = $savemsg;              my $msgtxt = $savemsg;
     if ($toaddr{$address}) { $msgtxt.='<hr />'.$toaddr{$address}; }              if ($toaddr{$address}) {
           $msgtxt.='<hr />'.$toaddr{$address};
               }
     my @thismsg;      my @thismsg;
     if ($msgtype eq 'critical') {      if ($msgtype eq 'critical') {
  $r->print(&mt('Sending critical message').' '.   $r->print(&mt('Sending critical message').' '.
Line 2343  sub sendoffmail { Line 2523  sub sendoffmail {
    $env{'form.sendbck'},     $env{'form.sendbck'},
    $env{'form.permanent'},     $env{'form.permanent'},
    \$sentmessage{$address},     \$sentmessage{$address},
                                                    $nosentstore);                                                     $nosentstore,$recipid);
     } else {      } else {
  $r->print(&mt('Sending').' '.$recuname.':'.$recdomain.': ');   $r->print(&mt('Sending').' '.$recuname.':'.$recdomain.': ');
  @thismsg=   @thismsg=
Line 2354  sub sendoffmail { Line 2534  sub sendoffmail {
      $env{'form.permanent'},       $env{'form.permanent'},
      \$sentmessage{$address},       \$sentmessage{$address},
                                                      undef,undef,undef,                                                       undef,undef,undef,
                                                      $nosentstore);                                                       $nosentstore,$recipid);
             }              }
     $msg_status{$recuname.':'.$recdomain}=join(' ',@thismsg);      $msg_status{$recuname.':'.$recdomain}=join(' ',@thismsg);
     if ($msg_status{$recuname.':'.$recdomain} =~ /(ok|con_delayed)/) {        if ($msg_status{$recuname.':'.$recdomain} =~ /(ok|con_delayed)/) {  
Line 2411  sub sendoffmail { Line 2591  sub sendoffmail {
                            \@recudoms);                             \@recudoms);
                     }                      }
                 } else {                  } else {
                     &Apache::lonnet::logthis('Failed to create record of critical, broadcast or archived message in '.$env{'course.'.$env{'request.course.id'}.'.num'}.' at '.$env{'course.'.$env{'request.course.id'}.'.domain'}.' - no msgid generated');                      &Apache::lonnet::logthis('Failed to create record of critical, broadcast or archived message in '.$env{'course.'.$env{'request.course.id'}.'.num'}.' '&mt('at').' '.$env{'course.'.$env{'request.course.id'}.'.domain'}.' - no msgid generated');
                 }                  }
             } else {              } else {
                 my $stamp = time;                  my $stamp = time;
Line 2528  sub handler { Line 2708  sub handler {
  &printheader($r,'','Confirmed Receipt');   &printheader($r,'','Confirmed Receipt');
  my $replying = 0;   my $replying = 0;
  foreach my $envkey (keys(%env)) {   foreach my $envkey (keys(%env)) {
     if ($envkey=~/^form\.rec\_(.*)$/) {      if ($envkey=~/^form\.(rep)?rec\_(.*)$/) {
  $r->print('<b>'.&mt('Confirming Receipt').':</b> '.                  my $repchk = $1;
   &Apache::lonmsg::user_crit_received($1).'<br>');          my $msgid = $2;
     }   $r->print('<b>'.&mt('Confirming Receipt').':</b> ');
     if ($envkey=~/^form\.reprec\_(.*)$/) {   my $result = &Apache::lonmsg::user_crit_received($msgid);
  my $msgid=$1;                  if ($result =~ /trans:\s+ok/) {
  $r->print('<b>'.&mt('Confirming Receipt').':</b> '.                      &statuschange($msgid,'read');
   &Apache::lonmsg::user_crit_received($msgid).'<br>');                  }
  &compout($r,'','','',$msgid);                  $r->print($result.'<br />');
  $replying = 1;                  if ($repchk eq 'rep') {
       &compout($r,'','','',$msgid);
       $replying = 1;
                   }
     }      }
  }   }
  if (!$replying) {   if (!$replying) {

Removed from v.1.71  
changed lines
  Added in v.1.81


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