Diff for /loncom/interface/lonmsg.pm between versions 1.118 and 1.134

version 1.118, 2004/11/15 21:28:58 version 1.134, 2005/02/17 03:36:05
Line 90  also has a student role in the course, A Line 90  also has a student role in the course, A
   
 Users can ask LON-CAPA to forward messages to conventional e-mail  Users can ask LON-CAPA to forward messages to conventional e-mail
 addresses on their B<PREF> screen, but generally, LON-CAPA messages  addresses on their B<PREF> screen, but generally, LON-CAPA messages
 are much more useful then traditional email can be made to be, even  are much more useful than traditional email can be made to be, even
 with HTML support.  with HTML support.
   
 Right now, this document will cover just how to send a message, since  Right now, this document will cover just how to send a message, since
Line 239  sub sendemail { Line 239  sub sendemail {
 # ==================================================== Send notification emails  # ==================================================== Send notification emails
   
 sub sendnotification {  sub sendnotification {
     my ($to,$touname,$toudom,$subj,$crit)=@_;      my ($to,$touname,$toudom,$subj,$crit,$text)=@_;
     my $sender=$ENV{'environment.firstname'}.' '.$ENV{'environment.lastname'};      my $sender=$ENV{'environment.firstname'}.' '.$ENV{'environment.lastname'};
       unless ($sender=~/\w/) { 
    $sender=$ENV{'user.name'}.'@'.$ENV{'user.domain'};
       }
     my $critical=($crit?' critical':'');      my $critical=($crit?' critical':'');
       $text=~s/\&lt\;/\</gs;
       $text=~s/\&gt\;/\>/gs;
       $text=~s/\<\/*[^\>]+\>//gs;
     my $url='http://'.      my $url='http://'.
       $Apache::lonnet::hostname{&Apache::lonnet::homeserver($touname,$toudom)}.        $Apache::lonnet::hostname{&Apache::lonnet::homeserver($touname,$toudom)}.
       '/adm/email?username='.$touname.'&domain='.$toudom;        '/adm/email?username='.$touname.'&domain='.$toudom;
Line 250  You received a$critical message from $se Line 256  You received a$critical message from $se
   
  $subj   $subj
   
   === Excerpt ============================================================
   $text
   ========================================================================
   
 Use  Use
   
  $url   $url
   
 to access this message.  to access the full message.
 ENDMSG  ENDMSG
     &sendemail($to,'New'.$critical.' message from '.$sender,$body);      &sendemail($to,'New'.$critical.' message from '.$sender,$body);
 }  }
Line 346  sub all_url_author_res_msg { Line 356  sub all_url_author_res_msg {
 # ================================================== Critical message to a user  # ================================================== Critical message to a user
   
 sub user_crit_msg_raw {  sub user_crit_msg_raw {
     my ($user,$domain,$subject,$message,$sendback)=@_;      my ($user,$domain,$subject,$message,$sendback,$toperm)=@_;
 # Check if allowed missing  # Check if allowed missing
     my $status='';      my $status='';
     my $msgid='undefined';      my $msgid='undefined';
     unless (($message)&&($user)&&($domain)) { $status='empty'; };      unless (($message)&&($user)&&($domain)) { $status='empty'; };
       my $text=$message;
     my $homeserver=&Apache::lonnet::homeserver($user,$domain);      my $homeserver=&Apache::lonnet::homeserver($user,$domain);
     if ($homeserver ne 'no_host') {      if ($homeserver ne 'no_host') {
        ($msgid,$message)=&packagemsg($subject,$message);         ($msgid,$message)=&packagemsg($subject,$message);
Line 370  sub user_crit_msg_raw { Line 381  sub user_crit_msg_raw {
        $status='no_host';         $status='no_host';
     }      }
 # Notifications  # Notifications
     my %userenv = &Apache::lonnet::get('environment',['critnotification'],      my %userenv = &Apache::lonnet::get('environment',['critnotification',
                                                         'permanentemail'],
                                        $domain,$user);                                         $domain,$user);
     if ($userenv{'critnotification'}) {      if ($userenv{'critnotification'}) {
       &sendnotification($userenv{'critnotification'},$user,$domain,$subject,1);        &sendnotification($userenv{'critnotification'},$user,$domain,$subject,1,
    $text);
       }
       if ($toperm && $userenv{'permanentemail'}) {
         &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,1,
    $text);
     }      }
 # Log this  # Log this
     &Apache::lonnet::logthis(      &Apache::lonnet::logthis(
Line 397  sub user_crit_msg_raw { Line 414  sub user_crit_msg_raw {
 =cut  =cut
   
 sub user_crit_msg {  sub user_crit_msg {
     my ($user,$domain,$subject,$message,$sendback)=@_;      my ($user,$domain,$subject,$message,$sendback,$toperm)=@_;
     my $status='';      my $status='';
     my %userenv = &Apache::lonnet::get('environment',['msgforward'],      my %userenv = &Apache::lonnet::get('environment',['msgforward'],
                                        $domain,$user);                                         $domain,$user);
Line 407  sub user_crit_msg { Line 424  sub user_crit_msg {
  my ($forwuser,$forwdomain)=split(/\:/,$_);   my ($forwuser,$forwdomain)=split(/\:/,$_);
          $status.=           $status.=
    &user_crit_msg_raw($forwuser,$forwdomain,$subject,$message,     &user_crit_msg_raw($forwuser,$forwdomain,$subject,$message,
                 $sendback).' ';                  $sendback,$toperm).' ';
        }         }
     } else {       } else { 
  $status=&user_crit_msg_raw($user,$domain,$subject,$message,$sendback);   $status=&user_crit_msg_raw($user,$domain,$subject,$message,$sendback,$toperm);
     }      }
     return $status;      return $status;
 }  }
Line 444  sub user_crit_received { Line 461  sub user_crit_received {
 # ======================================================== Normal communication  # ======================================================== Normal communication
   
 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)=@_;
 # Check if allowed missing  # Check if allowed missing
     my $status='';      my $status='';
     my $msgid='undefined';      my $msgid='undefined';
       my $text=$message;
     unless (($message)&&($user)&&($domain)) { $status='empty'; };      unless (($message)&&($user)&&($domain)) { $status='empty'; };
     my $homeserver=&Apache::lonnet::homeserver($user,$domain);      my $homeserver=&Apache::lonnet::homeserver($user,$domain);
     if ($homeserver ne 'no_host') {      if ($homeserver ne 'no_host') {
Line 471  sub user_normal_msg_raw { Line 490  sub user_normal_msg_raw {
        $status='no_host';         $status='no_host';
     }      }
 # Notifications  # Notifications
     my %userenv = &Apache::lonnet::get('environment',['notification'],      my %userenv = &Apache::lonnet::get('environment',['notification',
                                                         'permanentemail'],
                                        $domain,$user);                                         $domain,$user);
     if ($userenv{'notification'}) {      if ($userenv{'notification'}) {
  &sendnotification($userenv{'notification'},$user,$domain,$subject,0);   &sendnotification($userenv{'notification'},$user,$domain,$subject,0,
     $text);
       }
       if ($toperm && $userenv{'permanentemail'}) {
         &sendnotification($userenv{'permanentemail'},$user,$domain,$subject,0,
    $text);
     }      }
     &Apache::lonnet::log($ENV{'user.domain'},$ENV{'user.name'},      &Apache::lonnet::log($ENV{'user.domain'},$ENV{'user.name'},
                          $ENV{'user.home'},                           $ENV{'user.home'},
Line 493  sub user_normal_msg_raw { Line 518  sub user_normal_msg_raw {
 =cut  =cut
   
 sub user_normal_msg {  sub user_normal_msg {
     my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl)=@_;      my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl,
    $toperm)=@_;
     my $status='';      my $status='';
     my %userenv = &Apache::lonnet::get('environment',['msgforward'],      my %userenv = &Apache::lonnet::get('environment',['msgforward'],
                                        $domain,$user);                                         $domain,$user);
Line 503  sub user_normal_msg { Line 529  sub user_normal_msg {
  my ($forwuser,$forwdomain)=split(/\:/,$_);   my ($forwuser,$forwdomain)=split(/\:/,$_);
          $status.=           $status.=
   &user_normal_msg_raw($forwuser,$forwdomain,$subject,$message,    &user_normal_msg_raw($forwuser,$forwdomain,$subject,$message,
        $citation,$baseurl,$attachmenturl).' ';         $citation,$baseurl,$attachmenturl,$toperm).' ';
        }         }
     } else {       } else { 
  $status=&user_normal_msg_raw($user,$domain,$subject,$message,   $status=&user_normal_msg_raw($user,$domain,$subject,$message,
      $citation,$baseurl,$attachmenturl);       $citation,$baseurl,$attachmenturl,$toperm);
     }      }
     return $status;      return $status;
 }  }
Line 527  sub folderlist { Line 553  sub folderlist {
                               'critical' => &mt('Critical'),                                'critical' => &mt('Critical'),
       'sent' => &mt('Sent Messages'),        'sent' => &mt('Sent Messages'),
       map { $_ => $_ } @allfolders)).        map { $_ => $_ } @allfolders)).
       ' '.&mt('Show').' '.        ' '.&mt('Show').
     &Apache::loncommon::select_form($interdis,'interdis',        '<select name="interdis">'.
 (' 10' => '10', ' 20' => '20', ' 50' => '50', '100' => '100', '200' => '200')).        join("\n",map { '<option value="'.$_.'"'.
    ($_==$interdis?' selected="selected"':'').'>'.$_.'</option>' }
      (10,20,50,100,200)).'</select>'.
    '<input type="submit" value="'.&mt('View Folder').'" /><br />'.     '<input type="submit" value="'.&mt('View Folder').'" /><br />'.
       '<input type="hidden" name="sortedby" value="'.$ENV{'form.sortedby'}.'" />'.
       ($folder=~/^(new|critical)/?'</form>':'');        ($folder=~/^(new|critical)/?'</form>':'');
 }  }
   
 sub scrollbuttons {  sub scrollbuttons {
     my ($start,$maxdis,$first,$finish,$total)=@_;      my ($start,$maxdis,$first,$finish,$total)=@_;
       unless ($total>0) { return ''; }
     $start++; $maxdis++;$first++;$finish++;      $start++; $maxdis++;$first++;$finish++;
       return 
    '<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.
Line 585  sub makefolder { Line 616  sub makefolder {
   
 sub movemsg {  sub movemsg {
     my ($msgid,$srcfolder,$trgfolder)=@_;      my ($msgid,$srcfolder,$trgfolder)=@_;
     my $unmsgid=&Apache::lonnet::unescape($msgid);  
     my $srcsuffix=&foldersuffix($srcfolder);      my $srcsuffix=&foldersuffix($srcfolder);
     my $trgsuffix=&foldersuffix($trgfolder);      my $trgsuffix=&foldersuffix($trgfolder);
   
Line 594  sub movemsg { Line 624  sub movemsg {
     &Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}});      &Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}});
   
 # Copy status  # Copy status
     my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]);      unless ($trgfolder eq 'trash') {
     &Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}});   my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]);
 # See if was deleted -> becomes "read" in trash   &Apache::lonnet::put('email_status'.$trgsuffix,{$msgid => $status{$msgid}});
     my $currentstatus=(&unpackmsgid($status{$unmsgid}),$srcfolder);  
     if ($currentstatus eq 'deleted') {  
  &statuschange($msgid,'read',$trgfolder);  
     }      }
 # Delete orginals  # Delete orginals
     &Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]);      &Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]);
     &Apache::lonnet::del('email_status'.$srcsuffix,[$unmsgid]);      &Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]);
 }  }
   
 # ======================================================= Display a course list  # ======================================================= Display a course list
Line 666  ENDDISHEADER Line 693  ENDDISHEADER
         }          }
     }      }
     $r->print('</table><table>');      $r->print('</table><table>');
     while (my ($student,$info) = each(%$classlist)) {      my $sort = sub {
    my $aname=lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]);
    if (!$aname) { $aname=$a; }
    my $bname=lc($classlist->{$b}[&Apache::loncoursedata::CL_FULLNAME()]);
    if (!$bname) { $bname=$b; }
    return $aname cmp $bname;
       };
       foreach my $student (sort $sort (keys(%{$classlist}))) {
    my $info=$classlist->{$student};
         my ($sname,$sdom,$status,$fullname,$section) =          my ($sname,$sdom,$status,$fullname,$section) =
             (@{$info}[&Apache::loncoursedata::CL_SNAME(),              (@{$info}[&Apache::loncoursedata::CL_SNAME(),
                       &Apache::loncoursedata::CL_SDOM(),                        &Apache::loncoursedata::CL_SDOM(),
Line 674  ENDDISHEADER Line 709  ENDDISHEADER
                       &Apache::loncoursedata::CL_FULLNAME(),                        &Apache::loncoursedata::CL_FULLNAME(),
                       &Apache::loncoursedata::CL_SECTION()]);                        &Apache::loncoursedata::CL_SECTION()]);
         next if ($status ne 'Active');          next if ($status ne 'Active');
         my $key = 'send_to_&&&'.$section.'&&&'.$student;          my $key = 'send_to_&&&'.$section.'&&&_'.$student;
         if (! defined($fullname) || $fullname eq '') { $fullname = $sname; }          if (! defined($fullname) || $fullname eq '') { $fullname = $sname; }
         $r->print('<tr><td><label>'.          $r->print('<tr><td><label>'.
                   qq{<input type="checkbox" name="$key">}.('&nbsp;'x2).                    qq{<input type="checkbox" name="$key">}.('&nbsp;'x2).
Line 696  sub discrit { Line 731  sub discrit {
     foreach (sort keys %what) {      foreach (sort keys %what) {
         my %content=&unpackagemsg($what{$_});          my %content=&unpackagemsg($what{$_});
         next if ($content{'senderdomain'} eq '');          next if ($content{'senderdomain'} eq '');
         $content{'message'}=~s/\n/\<br\>/g;  
         $result.='<hr />'.&mt('From').': <b>'.          $result.='<hr />'.&mt('From').': <b>'.
 &Apache::loncommon::aboutmewrapper(  &Apache::loncommon::aboutmewrapper(
  &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b> ('.   &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b> ('.
 $content{'sendername'}.'@'.  $content{'sendername'}.'@'.
             $content{'senderdomain'}.') '.$content{'time'}.              $content{'senderdomain'}.') '.$content{'time'}.
             '<br />'.&mt('Subject').': '.$content{'subject'}.              '<br />'.&mt('Subject').': '.$content{'subject'}.
             '<br /><blockquote>'.              '<br /><pre>'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).                &Apache::lontexconvert::msgtexconverted($content{'message'}).
             '</blockquote><small>'.              '</pre><small>'.
 &mt('You have to confirm that you received this message. After confirmation, this message will be moved to your regular inbox').  &mt('You have to confirm that you received this message. After confirmation, this message will be moved to your regular inbox').
             '</small><br />'.              '</small><br />'.
             '<input type=submit name="rec_'.$_.'" value="'.&mt('Confirm Receipt').'">'.              '<input type=submit name="rec_'.$_.'" value="'.&mt('Confirm Receipt').'">'.
Line 836  TABLEHEAD Line 870  TABLEHEAD
         foreach my $msg (@newmsgs) {          foreach my $msg (@newmsgs) {
             $r->print(<<"ENDLINK");              $r->print(<<"ENDLINK");
 <tr bgcolor="#FFBB77">  <tr bgcolor="#FFBB77">
 <td><a href="/adm/email?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') {
                 $r->print("<td>$msg->{$_}</td>");                  $r->print("<td>$msg->{$_}</td>");
Line 912  ENDDISHEADER Line 946  ENDDISHEADER
     my $fsqs='&folder='.$folder;      my $fsqs='&folder='.$folder;
     my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);      my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
     my $totalnumber=$#temp+1;      my $totalnumber=$#temp+1;
       unless ($totalnumber>0) {
    $r->print('<h2>'.&mt('Empty Folder').'</h2>');
    return;
       }
       unless ($interdis) {
    $interdis=20;
       }
     my $number=int($totalnumber/$interdis);      my $number=int($totalnumber/$interdis);
     if (($startdis<0) || ($startdis>$number)) { $startdis=$number; }      if (($startdis<0) || ($startdis>$number)) { $startdis=$number; }
     my $firstdis=$interdis*$startdis;      my $firstdis=$interdis*$startdis;
Line 950  ENDDISHEADER Line 991  ENDDISHEADER
     } else {      } else {
       $r->print('<a href = "?sortedby=revstatus'.$fsqs.'">'.&mt('Status').'</th>');        $r->print('<a href = "?sortedby=revstatus'.$fsqs.'">'.&mt('Status').'</th>');
     }      }
     $r->print('</tr>');      $r->print("</tr>\n");
     for (my $n=$firstdis;$n<=$lastdis;$n++) {      for (my $n=$firstdis;$n<=$lastdis;$n++) {
  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/) {
Line 970  ENDDISHEADER Line 1011  ENDDISHEADER
       '<td>'.&Apache::lonlocal::locallocaltime($sendtime).'</td><td>'.        '<td>'.&Apache::lonlocal::locallocaltime($sendtime).'</td><td>'.
       $fromname.'</td><td>'.$fromdomain.'</td><td>'.        $fromname.'</td><td>'.$fromdomain.'</td><td>'.
       &Apache::lonnet::unescape($shortsubj).'</td><td>'.        &Apache::lonnet::unescape($shortsubj).'</td><td>'.
                       $status.'</td></tr>');                        $status."</td></tr>\n");
  } elsif ($status eq 'deleted') {   } elsif ($status eq 'deleted') {
 # purge  # purge
     &movemsg(&Apache::lonnet::unescape($origID),$folder,'trash');      &movemsg(&Apache::lonnet::unescape($origID),$folder,'trash');
  }   }
     }         }   
     $r->print('</table><p>'.      $r->print("</table>\n<p>".
   '<a href="javascript:checkall()">'.&mt('Check All').'</a>&nbsp;'.    '<a href="javascript:checkall()">'.&mt('Check All').'</a>&nbsp;'.
   '<a href="javascript:uncheckall()">'.&mt('Uncheck All').'</a></p>'.    '<a href="javascript:uncheckall()">'.&mt('Uncheck All').'</a></p>'.
   '<input type="hidden" name="sortedby" value="'.$ENV{'form.sortedby'}.'" />');    '<input type="hidden" name="sortedby" value="'.$ENV{'form.sortedby'}.'" />');
Line 991  ENDDISHEADER Line 1032  ENDDISHEADER
  &Apache::loncommon::select_form('','movetofolder',   &Apache::loncommon::select_form('','movetofolder',
      ( map { $_ => $_ } @allfolders))       ( map { $_ => $_ } @allfolders))
       );        );
     $r->print('<input type="hidden" name="folder" value="'.$folder.'" /></form>');      my $postedstartdis=$startdis+1;
       $r->print('<input type="hidden" name="folder" value="'.$folder.'" /><input type="hidden" name="startdis" value="'.$postedstartdis.'" /><input type="hidden" name="interdis" value="'.$ENV{'form.interdis'}.'" /></form>');
     if ($numblocked > 0) {      if ($numblocked > 0) {
         my $beginblock = &Apache::lonlocal::locallocaltime($startblock);          my $beginblock = &Apache::lonlocal::locallocaltime($startblock);
         my $finishblock = &Apache::lonlocal::locallocaltime($endblock);          my $finishblock = &Apache::lonlocal::locallocaltime($endblock);
Line 1005  ENDDISHEADER Line 1047  ENDDISHEADER
   
 sub compout {  sub compout {
     my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder)=@_;      my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder)=@_;
       my $suffix=&foldersuffix($folder);
   
     if ($broadcast eq 'individual') {      if ($broadcast eq 'individual') {
  &printheader($r,'/adm/email?compose=individual',   &printheader($r,'/adm/email?compose=individual',
Line 1048  sub compout { Line 1091  sub compout {
  my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message");   my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message");
          $dispcrit=           $dispcrit=
  '<input type="checkbox" name="critmsg" /> '.&mt('Send as critical message').' ' . $crithelp .    '<input type="checkbox" name="critmsg" /> '.&mt('Send as critical message').' ' . $crithelp . 
  '<br>'.   '<br />'.
  '<input type="checkbox" name="sendbck" /> '.&mt('Send as critical message').'  ' .   '<input type="checkbox" name="sendbck" /> '.&mt('Send as critical message').'  ' .
  &mt('and return receipt') . $crithelp . '<p>';   &mt('and return receipt') . $crithelp . 
    '<br /><input type="checkbox" name="permanent" /> '.
   &mt('Send copy to permanent email address (if known)').'<p>';
      }       }
     my %message;      my %message;
     my %content;      my %content;
     my $defdom=$ENV{'user.domain'};      my $defdom=$ENV{'user.domain'};
     if ($forwarding) {      if ($forwarding) {
  %message=&Apache::lonnet::get('nohist_email',[$forwarding]);   %message=&Apache::lonnet::get('nohist_email'.$suffix,[$forwarding]);
  %content=&unpackagemsg($message{$forwarding},$folder);   %content=&unpackagemsg($message{$forwarding},$folder);
  $dispcrit.='<input type="hidden" name="forwid" value="'.   $dispcrit.='<input type="hidden" name="forwid" value="'.
     $forwarding.'" />';      $forwarding.'" />';
Line 1070  sub compout { Line 1115  sub compout {
  }   }
     }      }
     if ($replying) {      if ($replying) {
  %message=&Apache::lonnet::get('nohist_email',[$replying]);   %message=&Apache::lonnet::get('nohist_email'.$suffix,[$replying]);
  %content=&unpackagemsg($message{$replying},$folder);   %content=&unpackagemsg($message{$replying},$folder);
  $dispcrit.='<input type="hidden" name="replyid" value="'.   $dispcrit.='<input type="hidden" name="replyid" value="'.
     $replying.'" />';      $replying.'" />';
Line 1084  sub compout { Line 1129  sub compout {
  if ($content{'baseurl'}) {   if ($content{'baseurl'}) {
     $disbase='<input type="hidden" name="baseurl" value="'.&Apache::lonnet::escape($content{'baseurl'}).'" />';      $disbase='<input type="hidden" name="baseurl" value="'.&Apache::lonnet::escape($content{'baseurl'}).'" />';
     if ($ENV{'user.adv'}) {      if ($ENV{'user.adv'}) {
  $disbase='<input type="checkbox" name="storebasecomment" />'.&mt('Store message for re-use').'<br />';   $disbase.='<input type="checkbox" name="storebasecomment" />'.&mt('Store message for re-use').
       ' <a href="/adm/email?showcommentbaseurl='.
       &Apache::lonnet::escape($content{'baseurl'}).'" target="comments">'.
       &mt('Show re-usable messages').'</a><br />';
     }      }
  }   }
     }      }
Line 1226  sub disfacetoface { Line 1274  sub disfacetoface {
  &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b> ('.   &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b> ('.
 $content{'sendername'}.'@'.  $content{'sendername'}.'@'.
             $content{'senderdomain'}.') '.$content{'time'}.              $content{'senderdomain'}.') '.$content{'time'}.
             '<br /><blockquote>'.              '<br /><pre>'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).                &Apache::lontexconvert::msgtexconverted($content{'message'}).
       '</blockquote>';        '</pre>';
      }       }
     # Check to see if there were any messages.      # Check to see if there were any messages.
     if ($result eq '') {      if ($result eq '') {
Line 1726  sub displaymessage { Line 1774  sub displaymessage {
       '"><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>Delete</b></a></td>'.
       '<td><a href="/adm/email?sortedby='.$ENV{'form.sortedby'}.        '<td><a href="/adm/email?'.$sqs.
       '&folder='.&Apache::lonnet::escape($folder).        ($ENV{'form.dismode'} eq 'new'?'&folder=new':'').
       '"><b>'.&mt('Display all Messages').'</b></a></td>');        '"><b>'.&mt('Back to Folder Display').'</b></a></td>');
     if ($counter > 0){      if ($counter > 0){
  $r->print('<td><a href="/adm/email?display='.$messages[$counter-1]->[5].$sqs.   $r->print('<td><a href="/adm/email?display='.$messages[$counter-1]->[5].$sqs.
   '"><b>'.&mt('Previous').'</b></a></td>');    '"><b>'.&mt('Previous').'</b></a></td>');
Line 1820  sub printheader { Line 1868  sub printheader {
     &header($r,$title,$baseurl);      &header($r,$title,$baseurl);
 }  }
   
   # ------------------------------------------------------------ Store the comment
   
   sub storecomment {
       my ($r)=@_;
       my $msgtxt=&Apache::lonfeedback::clear_out_html($ENV{'form.message'});
       my $cleanmsgtxt='';
       foreach (split(/[\n\r]/,$msgtxt)) {
    unless ($_=~/^\s*(\>|\&gt\;)/) {
       $cleanmsgtxt.=$_."\n";
    }
       }
       my $key=&Apache::lonnet::escape($ENV{'form.baseurl'}).'___'.time;
       &Apache::lonnet::put('nohist_stored_comments',{ $key => $cleanmsgtxt });
   }
   
   sub storedcommentlisting {
       my ($r)=@_;
       my %msgs=&Apache::lonnet::dump('nohist_stored_comments',undef,undef,
          '^'.&Apache::lonnet::escape(&Apache::lonnet::escape($ENV{'form.showcommentbaseurl'})));
       $r->print('<html><body>');
       if ((keys %msgs)[0]=~/^error\:/) {
    $r->print(&mt('No stored comments yet.'));
       } else {
    my $found=0;
    foreach (sort keys %msgs) {
       $r->print("\n".$msgs{$_}."<hr />");
       $found=1;
    }
    unless ($found) {
       $r->print(&mt('No stored comments yet for this resource.'));
    }
       }
   }
   
 # ---------------------------------------------------------------- Send an email  # ---------------------------------------------------------------- Send an email
   
 sub sendoffmail {  sub sendoffmail {
     my ($r)=@_;      my ($r,$folder)=@_;
       my $suffix=&foldersuffix($folder);
     my $sendstatus='';      my $sendstatus='';
     if ($ENV{'form.send'}) {      if ($ENV{'form.send'}) {
  &printheader($r,'','Messages being sent.');   &printheader($r,'','Messages being sent.');
Line 1832  sub sendoffmail { Line 1915  sub sendoffmail {
  undef %content;   undef %content;
  if ($ENV{'form.forwid'}) {   if ($ENV{'form.forwid'}) {
     my $msgid=$ENV{'form.forwid'};      my $msgid=$ENV{'form.forwid'};
     my %message=&Apache::lonnet::get('nohist_email',[$msgid]);      my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
     %content=&unpackagemsg($message{$msgid},1);      %content=&unpackagemsg($message{$msgid},1);
     &statuschange($msgid,'forwarded');      &statuschange($msgid,'forwarded',$folder);
     $ENV{'form.message'}.="\n\n-- Forwarded message --\n\n".      $ENV{'form.message'}.="\n\n-- Forwarded message --\n\n".
  $content{'message'};   $content{'message'};
  }   }
  if ($ENV{'form.replyid'}) {   if ($ENV{'form.replyid'}) {
     my $msgid=$ENV{'form.replyid'};      my $msgid=$ENV{'form.replyid'};
     my %message=&Apache::lonnet::get('nohist_email',[$msgid]);      my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
     %content=&unpackagemsg($message{$msgid},1);      %content=&unpackagemsg($message{$msgid},1);
     &statuschange($msgid,'replied');      &statuschange($msgid,'replied',$folder);
  }   }
  my %toaddr=();   my %toaddr=();
  undef %toaddr;   undef %toaddr;
Line 1872  sub sendoffmail { Line 1955  sub sendoffmail {
   
  foreach (keys %toaddr) {   foreach (keys %toaddr) {
     my ($recuname,$recdomain)=split(/\:/,$_);      my ($recuname,$recdomain)=split(/\:/,$_);
     my $msgtxt=&Apache::lonfeedback::clear_out_html($ENV{'form.message'});              my $msgtxt;
               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'})) && 
Line 1881  sub sendoffmail { Line 1970  sub sendoffmail {
  $thismsg=&user_crit_msg($recuname,$recdomain,   $thismsg=&user_crit_msg($recuname,$recdomain,
  &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}),   &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}),
  $msgtxt,   $msgtxt,
  $ENV{'form.sendbck'});   $ENV{'form.sendbck'},$ENV{'form.permanent'});
     } else {      } else {
  $r->print(&mt('Sending').' '.$recuname.'@'.$recdomain.': ');   $r->print(&mt('Sending').' '.$recuname.'@'.$recdomain.': ');
  $thismsg=&user_normal_msg($recuname,$recdomain,   $thismsg=&user_normal_msg($recuname,$recdomain,
   &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}),    &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}),
   $msgtxt,    $msgtxt,
   $content{'citation'});    $content{'citation'},undef,undef,$ENV{'form.permanent'});
  if (($ENV{'request.course.id'}) && ($ENV{'form.sendmode'} eq 'group')) {   if (($ENV{'request.course.id'}) && ($ENV{'form.sendmode'} eq 'group')) {
     &user_normal_msg_raw(      &user_normal_msg_raw(
  $ENV{'course.'.$ENV{'request.course.id'}.'.num'},   $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
Line 1933  sub handler { Line 2022  sub handler {
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
         ['display','replyto','forward','markread','markdel','markunread',          ['display','replyto','forward','markread','markdel','markunread',
          'sendreply','compose','sendmail','critical','recname','recdom',           'sendreply','compose','sendmail','critical','recname','recdom',
          'recordftf','sortedby','block','folder','startdis','interdis']);           'recordftf','sortedby','block','folder','startdis','interdis',
     $sqs='&sortedby='.$ENV{'form.sortedby'}.   'showcommentbaseurl','dismode']);
  '&startdis='.$ENV{'form.startdis'}.      $sqs='&sortedby='.$ENV{'form.sortedby'};
  '&interdis='.$ENV{'form.interdis'};  
   
 # ------------------------------------------------------ They checked for email  # ------------------------------------------------------ They checked for email
     unless ($ENV{'form.block'}) {      unless ($ENV{'form.block'}) {
Line 1957  sub handler { Line 2045  sub handler {
     unless ($folder) {       unless ($folder) { 
  $folder='';    $folder=''; 
     } else {      } else {
  $sqs='&folder='.&Apache::lonnet::escape($folder);   $sqs.='&folder='.&Apache::lonnet::escape($folder);
     }      }
   
 # --------------------------------------------------------------------- Display  # --------------------------------------------------------------------- Display
Line 1965  sub handler { Line 2053  sub handler {
     $startdis=$ENV{'form.startdis'};      $startdis=$ENV{'form.startdis'};
     $startdis--;      $startdis--;
     unless ($startdis) { $startdis=0; }      unless ($startdis) { $startdis=0; }
   
     $interdis=$ENV{'form.interdis'};      $interdis=$ENV{'form.interdis'};
     unless ($interdis) { $interdis=20; }      unless ($interdis) { $interdis=20; }
       $sqs.='&interdis='.$interdis;
   
     if ($ENV{'form.firstview'}) {      if ($ENV{'form.firstview'}) {
  $startdis=0;   $startdis=0;
     }      }
Line 1979  sub handler { Line 2070  sub handler {
     if ($ENV{'form.nextview'}) {      if ($ENV{'form.nextview'}) {
  $startdis++;   $startdis++;
     }      }
       my $postedstartdis=$startdis+1;
       $sqs.='&startdis='.$postedstartdis;
   
 # --------------------------------------------------------------- Render Output  # --------------------------------------------------------------- Render Output
   
Line 2006  sub handler { Line 2098  sub handler {
  &printheader($r,'','Displaying Critical Messages');   &printheader($r,'','Displaying Critical Messages');
  &discrit($r);   &discrit($r);
     } elsif ($ENV{'form.forward'}) {      } elsif ($ENV{'form.forward'}) {
  &compout($r,$ENV{'form.forward'});   &compout($r,$ENV{'form.forward'},undef,undef,undef,$folder);
     } elsif ($ENV{'form.markdel'}) {      } elsif ($ENV{'form.markdel'}) {
  &printheader($r,'','Deleted Message');   &printheader($r,'','Deleted Message');
  &statuschange($ENV{'form.markdel'},'deleted',$folder);   &statuschange($ENV{'form.markdel'},'deleted',$folder);
    &Apache::loncommunicate::menu($r);
  &disall($r,$folder);   &disall($r,$folder);
     } elsif ($ENV{'form.markedmove'}) {      } elsif ($ENV{'form.markedmove'}) {
  my $total=0;   my $total=0;
Line 2022  sub handler { Line 2115  sub handler {
  }   }
  &printheader($r,'','Moved Messages');   &printheader($r,'','Moved Messages');
  $r->print('Moved '.$total.' message(s)<p>');   $r->print('Moved '.$total.' message(s)<p>');
    &Apache::loncommunicate::menu($r);
  &disall($r,$folder);   &disall($r,$folder);
     } elsif ($ENV{'form.markeddel'}) {      } elsif ($ENV{'form.markeddel'}) {
  my $total=0;   my $total=0;
Line 2033  sub handler { Line 2127  sub handler {
  }   }
  &printheader($r,'','Deleted Messages');   &printheader($r,'','Deleted Messages');
  $r->print('Deleted '.$total.' message(s)<p>');   $r->print('Deleted '.$total.' message(s)<p>');
    &Apache::loncommunicate::menu($r);
  &disall($r,$folder);   &disall($r,$folder);
     } elsif ($ENV{'form.markunread'}) {      } elsif ($ENV{'form.markunread'}) {
  &printheader($r,'','Marked Message as Unread');   &printheader($r,'','Marked Message as Unread');
  &statuschange($ENV{'form.markunread'},'new');   &statuschange($ENV{'form.markunread'},'new');
    &Apache::loncommunicate::menu($r);
  &disall($r,$folder);   &disall($r,$folder);
     } elsif ($ENV{'form.compose'}) {      } elsif ($ENV{'form.compose'}) {
  &compout($r,'','',$ENV{'form.compose'});   &compout($r,'','',$ENV{'form.compose'});
Line 2045  sub handler { Line 2141  sub handler {
     } elsif ($ENV{'form.block'}) {      } elsif ($ENV{'form.block'}) {
         &examblock($r,$ENV{'form.block'});          &examblock($r,$ENV{'form.block'});
     } elsif ($ENV{'form.sendmail'}) {      } elsif ($ENV{'form.sendmail'}) {
  &sendoffmail($r);   &sendoffmail($r,$folder);
    if ($ENV{'form.storebasecomment'}) {
       &storecomment($r);
    }
    &disall($r,$folder);
     } elsif ($ENV{'form.newfolder'}) {      } elsif ($ENV{'form.newfolder'}) {
  &printheader($r,'','New Folder');   &printheader($r,'','New Folder');
  &makefolder($ENV{'form.newfolder'});   &makefolder($ENV{'form.newfolder'});
    &Apache::loncommunicate::menu($r);
  &disall($r,$ENV{'form.newfolder'});   &disall($r,$ENV{'form.newfolder'});
       } elsif ($ENV{'form.showcommentbaseurl'}) {
    &storedcommentlisting($r);
     } else {      } else {
  &printheader($r,'','Display All Messages');   &printheader($r,'','Display All Messages');
    &Apache::loncommunicate::menu($r);
  &disall($r,$folder);   &disall($r,$folder);
     }      }
     $r->print('</body></html>');      $r->print('</body></html>');

Removed from v.1.118  
changed lines
  Added in v.1.134


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