Diff for /loncom/interface/lonmsg.pm between versions 1.101 and 1.107

version 1.101, 2004/05/17 19:00:45 version 1.107, 2004/09/10 08:42:21
Line 201  sub unpackagemsg { Line 201  sub unpackagemsg {
 # ======================================================= Get info out of msgid  # ======================================================= Get info out of msgid
   
 sub unpackmsgid {  sub unpackmsgid {
     my $msgid=&Apache::lonnet::unescape(shift);      my ($msgid,$folder)=@_;
       $msgid=&Apache::lonnet::unescape($msgid);
       my $suffix=&foldersuffix($folder);
     my ($sendtime,$shortsubj,$fromname,$fromdomain)=split(/\:/,      my ($sendtime,$shortsubj,$fromname,$fromdomain)=split(/\:/,
                           &Apache::lonnet::unescape($msgid));                            &Apache::lonnet::unescape($msgid));
     my %status=&Apache::lonnet::get('email_status',[$msgid]);      my %status=&Apache::lonnet::get('email_status'.$suffix,[$msgid]);
     if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; }      if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; }
     unless ($status{$msgid}) { $status{$msgid}='new'; }      unless ($status{$msgid}) { $status{$msgid}='new'; }
     return ($sendtime,$shortsubj,$fromname,$fromdomain,$status{$msgid});      return ($sendtime,$shortsubj,$fromname,$fromdomain,$status{$msgid});
Line 219  sub sendemail { Line 221  sub sendemail {
     my $msg = new Mail::Send;      my $msg = new Mail::Send;
     $msg->to($to);      $msg->to($to);
     $msg->subject('[LON-CAPA] '.$subject);      $msg->subject('[LON-CAPA] '.$subject);
       my %oldENV=%ENV;
       undef(%ENV);
     if (my $fh = $msg->open()) {      if (my $fh = $msg->open()) {
  print $fh $body;   print $fh $body;
  $fh->close;   $fh->close;
     }      }
       %ENV=%oldENV;
       undef(%oldENV);
 }  }
   
 # ==================================================== Send notification emails  # ==================================================== Send notification emails
Line 494  sub user_normal_msg { Line 500  sub user_normal_msg {
 }  }
   
   
   # ============================================================ List all folders
   
   sub folderlist {
       my $folder=shift;
       my @allfolders=&Apache::lonnet::getkeys('email_folders');
       if ($allfolders[0]=~/^error:/) { @allfolders=(); }
       return '<form method="post" action="/adm/email">'.
    '<input type="submit" value="'.&mt('View Folder').'" />'.
    &Apache::loncommon::select_form($folder,'folder',
        ('' => &mt('INBOX'),'trash' => &mt('TRASH'),
         'sent' => &mt('Sent Messages'),
         map { $_ => $_ } @allfolders)).
    '<a href="/adm/email?critical=display">'.
       &mt('View Critical Messages').'</a>'.
           '</form>';
   }
   # =============================================================== Folder suffix
   
   sub foldersuffix {
       my $folder=shift;
       unless ($folder) { return ''; }
       return '_'.&Apache::lonnet::escape($folder);
   }
   
 # =============================================================== Status Change  # =============================================================== Status Change
   
 sub statuschange {  sub statuschange {
     my ($msgid,$newstatus)=@_;      my ($msgid,$newstatus,$folder)=@_;
     my %status=&Apache::lonnet::get('email_status',[$msgid]);      my $suffix=&foldersuffix($folder);
       my %status=&Apache::lonnet::get('email_status'.$suffix,[$msgid]);
     if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; }      if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; }
     unless ($status{$msgid}) { $status{$msgid}='new'; }      unless ($status{$msgid}) { $status{$msgid}='new'; }
     unless (($status{$msgid} eq 'replied') ||       unless (($status{$msgid} eq 'replied') || 
             ($status{$msgid} eq 'forwarded')) {              ($status{$msgid} eq 'forwarded')) {
  &Apache::lonnet::put('email_status',{$msgid => $newstatus});   &Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});
     }      }
     if (($newstatus eq 'deleted') || ($newstatus eq 'new')) {      if (($newstatus eq 'deleted') || ($newstatus eq 'new')) {
  &Apache::lonnet::put('email_status',{$msgid => $newstatus});   &Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});
       }
   }
   
   # ============================================================= Make new folder
   
   sub makefolder {
       my ($newfolder)=@_;
       &Apache::lonnet::put('email_folders',{$newfolder => time});
   }
   
   # ======================================================== Move between folders
   
   sub movemsg {
       my ($msgid,$srcfolder,$trgfolder)=@_;
       my $unmsgid=&Apache::lonnet::unescape($msgid);
       my $srcsuffix=&foldersuffix($srcfolder);
       my $trgsuffix=&foldersuffix($trgfolder);
   
   # Copy message
       my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]);
       &Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}});
   
   # Copy status
       my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]);
       &Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}});
   # See if was deleted -> becomes "read" in trash
       my $currentstatus=(&unpackmsgid($status{$unmsgid}));
       if ($currentstatus eq 'deleted') {
    &statuschange($msgid,'read',$trgfolder);
     }      }
   # Delete orginals
       &Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]);
       &Apache::lonnet::del('email_status'.$srcsuffix,[$unmsgid]);
 }  }
   
 # ======================================================= Display a course list  # ======================================================= Display a course list
Line 607  sub discrit { Line 670  sub discrit {
         my %content=&unpackagemsg($what{$_});          my %content=&unpackagemsg($what{$_});
         next if ($content{'senderdomain'} eq '');          next if ($content{'senderdomain'} eq '');
         $content{'message'}=~s/\n/\<br\>/g;          $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 /><blockquote>'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).                &Apache::lontexconvert::msgtexconverted($content{'message'}).
             '</blockquote><small>'.              '</blockquote><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').
Line 625  $content{'sendername'}.'@'. Line 688  $content{'sendername'}.'@'.
     # Check to see if there were any messages.      # Check to see if there were any messages.
     if ($result eq '') {      if ($result eq '') {
         $result = "<h2>".&mt('You have no critical messages.')."</h2>".          $result = "<h2>".&mt('You have no critical messages.')."</h2>".
     '<a href="/adm/roles">'.&mt('Select a course').'</a>';      '<a href="/adm/roles">'.&mt('Select a course').'</a><br />'.
               '<a href="/adm/email">'.&mt('Communicate').'</a>';
     } else {      } else {
         $r->print($header);          $r->print($header);
     }      }
     $r->print($result);      $r->print($result);
     $r->print('<input type=hidden name="displayedcrit" value="true"></form>');      $r->print('<input type=hidden name="displayedcrit" value="true" /></form>');
 }  }
   
 sub sortedmessages {  sub sortedmessages {
     my ($blocked,$startblock,$endblock,$numblocked) = @_;      my ($blocked,$startblock,$endblock,$numblocked,$folder) = @_;
     my @messages = &Apache::lonnet::getkeys('nohist_email');      my $suffix=&foldersuffix($folder);
       my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix);
     #unpack the varibles and repack into temp for sorting      #unpack the varibles and repack into temp for sorting
     my @temp;      my @temp;
     foreach (@messages) {      foreach (@messages) {
Line 691  sub sortedmessages { Line 756  sub sortedmessages {
 # ======================================================== Display all messages  # ======================================================== Display all messages
   
 sub disall {  sub disall {
     my $r=shift;      my ($r,$folder)=@_;
     my %blocked = ();      my %blocked = ();
     my %setters = ();      my %setters = ();
     my $startblock;      my $startblock;
Line 719  sub disall { Line 784  sub disall {
     }      }
 </script>  </script>
 ENDDISHEADER  ENDDISHEADER
     $r->print('<h1>'.&mt('Display All Messages').'</h1><form method=post name=disall '.      $r->print('<h2>'.&mt('Display All Messages').'</h2>'.
       'action="/adm/email">'.        &folderlist($folder).
       '<table border=2><tr><th colspan=2>&nbsp</th><th>');        '<form method="post" name="disall" action="/adm/email">'.
         '<table border=2><tr><th colspan="3">&nbsp</th><th>');
     if ($ENV{'form.sortedby'} eq "revdate") {      if ($ENV{'form.sortedby'} eq "revdate") {
  $r->print('<a href = "?sortedby=date">'.&mt('Date').'</a></th>');   $r->print('<a href = "?sortedby=date">'.&mt('Date').'</a></th>');
     } else {      } else {
Line 752  ENDDISHEADER Line 818  ENDDISHEADER
       $r->print('<a href = "?sortedby=revstatus">'.&mt('Status').'</th>');        $r->print('<a href = "?sortedby=revstatus">'.&mt('Status').'</th>');
     }      }
     $r->print('</tr>');      $r->print('</tr>');
     my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked);      my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
     foreach (@temp){      foreach (@temp){
  my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @$_;   my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @$_;
  if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {   if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {
Line 765  ENDDISHEADER Line 831  ENDDISHEADER
     } else {      } else {
  $r->print('<tr bgcolor="#99BBBB">');   $r->print('<tr bgcolor="#99BBBB">');
     }      }
     $r->print('<td><a href="/adm/email?display='.$origID.$sqs.       $r->print('<td></a><input type=checkbox name="delmark_'.$origID.'" /></td><td><a href="/adm/email?display='.$origID.$sqs. 
       '">'.&mt('Open').'</a></td><td><a href="/adm/email?markdel='.$origID.$sqs.        '">'.&mt('Open').'</a></td><td>'.
       '">'.&mt('Delete').'</a><input type=checkbox name="delmark_'.$origID.'" /></td>'.        ($folder ne 'trash'?'<a href="/adm/email?markdel='.$origID.$sqs.
         '">'.&mt('Delete'):'&nbsp').'</td>'.
       '<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>');
    } elsif ($status eq 'deleted') {
   # purge
       &movemsg($origID,$folder,'trash');
  }   }
     }         }   
     $r->print('</table><p>'.      $r->print('</table><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'}.'" />');
               '<input type="submit" name="markeddel" value="'.&mt('Delete Checked').'" />'.      if ($folder ne 'trash') {
               '</form>');   $r->print(
         '<p><input type="submit" name="markeddel" value="'.&mt('Delete Checked').'" /></p>');
       }
   $r->print('<p><input type="submit" name="markedmove" value="'.&mt('Move Checked to Folder').'" />');
       my @allfolders=&Apache::lonnet::getkeys('email_folders');
       if ($allfolders[0]=~/^error:/) { @allfolders=(); }
       $r->print(
    &Apache::loncommon::select_form('','movetofolder',
        ( map { $_ => $_ } @allfolders))
         );
       $r->print('<input type="hidden" name="folder" value="'.$folder.'" /></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 787  ENDDISHEADER Line 867  ENDDISHEADER
                   $numblocked.' '.&mt('message(s) is/are not viewable because display of LON-CAPA messages sent to you by other students between').' '.$beginblock.' '.&mt('and').' '.$finishblock.' '.&mt('is currently being blocked because of online exams.'));                    $numblocked.' '.&mt('message(s) is/are not viewable because display of LON-CAPA messages sent to you by other students between').' '.$beginblock.' '.&mt('and').' '.$finishblock.' '.&mt('is currently being blocked because of online exams.'));
         &build_block_table($r,$startblock,$endblock,\%setters);          &build_block_table($r,$startblock,$endblock,\%setters);
     }      }
     $r->print('</body></html>');  
 }  }
   
 # ============================================================== Compose output  # ============================================================== Compose output
Line 857  sub compout { Line 936  sub compout {
     if ($replying) {      if ($replying) {
  %message=&Apache::lonnet::get('nohist_email',[$replying]);   %message=&Apache::lonnet::get('nohist_email',[$replying]);
  %content=&unpackagemsg($message{$replying});   %content=&unpackagemsg($message{$replying});
  $dispcrit.='<input type="hidden" name="forwid" value="'.   $dispcrit.='<input type="hidden" name="replyid" value="'.
     $forwarding.'" />';      $replying.'" />';
  $func=&mt('Replying to');   $func=&mt('Replying to');
   
  $dissub=&mt('Reply').': '.$content{'subject'};          $dissub=&mt('Reply').': '.$content{'subject'};       
Line 945  ENDUPLOAD Line 1024  ENDUPLOAD
   
 # ---------------------------------------------------- Display all face to face  # ---------------------------------------------------- Display all face to face
   
   sub retrieve_instructor_comments {
       my ($user,$domain)=@_;
       my $target=$ENV{'form.grade_target'};
       if (! $ENV{'request.course.id'}) { return; }
       if (! &Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
    return;
       }
       my %records=&Apache::lonnet::dump('nohist_email',
    $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
    $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
                            '%255b'.$user.'%253a'.$domain.'%255d');
       my $result='';
       foreach (sort(keys(%records))) {
           my %content=&unpackagemsg($records{$_});
           next if ($content{'senderdomain'} eq '');
           next if ($content{'subject'} !~ /^Record/);
           # $content{'message'}=~s/\n/\<br\>/g;
           $result.='Recorded by '.
               $content{'sendername'}.'@'.$content{'senderdomain'}."\n";
           $result.=
               &Apache::lontexconvert::msgtexconverted($content{'message'})."\n";
        }
       return $result;
   }
   
 sub disfacetoface {  sub disfacetoface {
     my ($r,$user,$domain)=@_;      my ($r,$user,$domain)=@_;
     my $target=$ENV{'form.grade_target'};      my $target=$ENV{'form.grade_target'};
Line 963  sub disfacetoface { Line 1067  sub disfacetoface {
         $content{'message'}=~s/\n/\<br\>/g;          $content{'message'}=~s/\n/\<br\>/g;
         if ($content{'subject'}=~/^Record/) {          if ($content{'subject'}=~/^Record/) {
     $result.='<h3>'.&mt('Record').'</h3>';      $result.='<h3>'.&mt('Record').'</h3>';
           } elsif ($content{'subject'}=~/^Broadcast/) {
               $result .='<h3>'.&mt('Broadcast Message').'</h3>';
         } else {          } else {
             $result.='<h3>'.&mt('Sent Message').'</h3>';              $result.='<h3>'.&mt('Critical Message').'</h3>';
             %content=&unpackagemsg($content{'message'});              %content=&unpackagemsg($content{'message'});
             $content{'message'}=              $content{'message'}=
                 '<b>'.&mt('Subject').': '.$content{'subject'}.'</b><br />'.                  '<b>'.&mt('Subject').': '.$content{'subject'}.'</b><br />'.
Line 982  $content{'sendername'}.'@'. Line 1088  $content{'sendername'}.'@'.
     # Check to see if there were any messages.      # Check to see if there were any messages.
     if ($result eq '') {      if ($result eq '') {
  if ($target ne 'tex') {    if ($target ne 'tex') { 
     $r->print("<p><b>".&mt("No notes, face-to-face discussion records, or critical messages in this course.")."</b></p>");      $r->print("<p><b>".&mt("No notes, face-to-face discussion records, critical messages, or broadcast messages in this course.")."</b></p>");
  } else {   } else {
     $r->print('\textbf{'.&mt("No notes, face-to-face discussion records, or critical messages in this course.").'}\\\\');      $r->print('\textbf{'.&mt("No notes, face-to-face discussion records, critical messages or broadcast messages in this course.").'}\\\\');
  }   }
     } else {      } else {
        $r->print($result);         $r->print($result);
Line 1000  sub facetoface { Line 1106  sub facetoface {
     }      }
     &printheader($r,      &printheader($r,
  '/adm/email?recordftf=query',   '/adm/email?recordftf=query',
  "User Notes, Face-to-Face, Critical Messages");   "User Notes, Face-to-Face, Critical Messages, Broadcast Messages");
 # from query string  # from query string
   
     if ($ENV{'form.recname'}) { $ENV{'form.recuname'}=$ENV{'form.recname'}; }      if ($ENV{'form.recname'}) { $ENV{'form.recuname'}=$ENV{'form.recname'}; }
Line 1015  sub facetoface { Line 1121  sub facetoface {
  ('stdselect','recuname','recdomain');   ('stdselect','recuname','recdomain');
     my %lt=&Apache::lonlocal::texthash('user' => 'Username',      my %lt=&Apache::lonlocal::texthash('user' => 'Username',
        'dom' => 'Domain',         'dom' => 'Domain',
        'head' => 'User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course',         'head' => 'User Notes, Records of Face-To-Face Discussions, Critical Messages, and Broadcast Messages in Course',
        'subm' => 'Retrieve discussion and message records',         'subm' => 'Retrieve discussion and message records',
        'newr' => 'New Record (record is visible to course faculty and staff)',         'newr' => 'New Record (record is visible to course faculty and staff)',
        'post' => 'Post this Record');         'post' => 'Post this Record');
Line 1431  END Line 1537  END
 # ----------------------------------------------------------- Display a message  # ----------------------------------------------------------- Display a message
   
 sub displaymessage {  sub displaymessage {
     my ($r,$msgid)=@_;      my ($r,$msgid,$folder)=@_;
       my $suffix=&foldersuffix($folder);
     my %blocked = ();      my %blocked = ();
     my %setters = ();      my %setters = ();
     my $startblock = 0;      my $startblock = 0;
Line 1439  sub displaymessage { Line 1546  sub displaymessage {
     my $numblocked = 0;      my $numblocked = 0;
 # info to generate "next" and "previous" buttons and check if message is blocked  # info to generate "next" and "previous" buttons and check if message is blocked
     &blockcheck(\%setters,\$startblock,\$endblock);      &blockcheck(\%setters,\$startblock,\$endblock);
     my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked);      my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
     if ( $blocked{$msgid} eq 'ON' ) {      if ( $blocked{$msgid} eq 'ON' ) {
         &printheader($r,'/adm/email',&mt('Display a Message'));          &printheader($r,'/adm/email',&mt('Display a Message'));
         $r->print(&mt('You attempted to display a message that is currently blocked because you are enrolled in one or more courses for which there is an ongoing online exam.'));          $r->print(&mt('You attempted to display a message that is currently blocked because you are enrolled in one or more courses for which there is an ongoing online exam.'));
         &build_block_table($r,$startblock,$endblock,\%setters);          &build_block_table($r,$startblock,$endblock,\%setters);
         return;          return;
     }      }
     &statuschange($msgid,'read');      &statuschange($msgid,'read',$folder);
     my %message=&Apache::lonnet::get('nohist_email',[$msgid]);      my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
     my %content=&unpackagemsg($message{$msgid});      my %content=&unpackagemsg($message{$msgid});
   
     my $counter=0;      my $counter=0;
     $r->print('<pre>');      $r->print('<pre>');
     my $escmsgid=&Apache::lonnet::escape($msgid);      my $escmsgid=&Apache::lonnet::escape($msgid);
Line 1474  sub displaymessage { Line 1582  sub displaymessage {
       '<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?sortedby='.$ENV{'form.sortedby'}.
         '&folder='.&Apache::lonnet::escape($folder).
       '"><b>'.&mt('Display all Messages').'</b></a></td>');        '"><b>'.&mt('Display all Messages').'</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.
Line 1542  sub handler { Line 1651  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']);           'recordftf','sortedby','block','folder']);
     $sqs='&sortedby='.$ENV{'form.sortedby'};      $sqs='&sortedby='.$ENV{'form.sortedby'};
 # ------------------------------------------------------ They checked for email  # ------------------------------------------------------ They checked for email
     unless ($ENV{'form.block'}) {      unless ($ENV{'form.block'}) {
Line 1557  sub handler { Line 1666  sub handler {
           text=>"Communication/Messages",            text=>"Communication/Messages",
           faq=>12,bug=>'Communication Tools',});            faq=>12,bug=>'Communication Tools',});
   
   # ------------------------------------------------------------------ Get Folder
   
       my $folder=$ENV{'form.folder'};
       unless ($folder) { 
    $folder=''; 
       } else {
    $sqs='&folder='.&Apache::lonnet::escape($folder);
       }
   
 # --------------------------------------------------------------- Render Output  # --------------------------------------------------------------- Render Output
   
     if ($ENV{'form.display'}) {      if ($ENV{'form.display'}) {
  &displaymessage($r,$ENV{'form.display'});   &displaymessage($r,$ENV{'form.display'},$folder);
     } elsif ($ENV{'form.replyto'}) {      } elsif ($ENV{'form.replyto'}) {
  &compout($r,'',$ENV{'form.replyto'});   &compout($r,'',$ENV{'form.replyto'});
     } elsif ($ENV{'form.confirm'}) {      } elsif ($ENV{'form.confirm'}) {
Line 1585  sub handler { Line 1703  sub handler {
  &compout($r,$ENV{'form.forward'});   &compout($r,$ENV{'form.forward'});
     } elsif ($ENV{'form.markdel'}) {      } elsif ($ENV{'form.markdel'}) {
  &printheader($r,'','Deleted Message');   &printheader($r,'','Deleted Message');
  &statuschange($ENV{'form.markdel'},'deleted');   &statuschange($ENV{'form.markdel'},'deleted',$folder);
  &disall($r);   &disall($r,$folder);
       } elsif ($ENV{'form.markedmove'}) {
    my $total=0;
    foreach (keys %ENV) {
       if ($_=~/^form\.delmark_(.*)$/) {
    &movemsg(&Apache::lonnet::unescape($1),$folder,
    $ENV{'form.movetofolder'});
    $total++;
       }
    }
    &printheader($r,'','Moved Messages');
    $r->print('Moved '.$total.' message(s)<p>');
    &disall($r,$folder);
     } elsif ($ENV{'form.markeddel'}) {      } elsif ($ENV{'form.markeddel'}) {
  my $total=0;   my $total=0;
  foreach (keys %ENV) {   foreach (keys %ENV) {
Line 1597  sub handler { Line 1727  sub handler {
  }   }
  &printheader($r,'','Deleted Messages');   &printheader($r,'','Deleted Messages');
  $r->print('Deleted '.$total.' message(s)<p>');   $r->print('Deleted '.$total.' message(s)<p>');
  &disall($r);   &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');
  &disall($r);   &disall($r,$folder);
     } elsif ($ENV{'form.compose'}) {      } elsif ($ENV{'form.compose'}) {
  &compout($r,'','',$ENV{'form.compose'});   &compout($r,'','',$ENV{'form.compose'});
     } elsif ($ENV{'form.recordftf'}) {      } elsif ($ENV{'form.recordftf'}) {
Line 1623  sub handler { Line 1753  sub handler {
  $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'}) {
    my $msgid=$ENV{'form.replyid'};
    my %message=&Apache::lonnet::get('nohist_email',[$msgid]);
    %content=&unpackagemsg($message{$msgid},1);
    &statuschange($msgid,'replied');
       }
     my %toaddr=();      my %toaddr=();
     undef %toaddr;      undef %toaddr;
     if ($ENV{'form.sendmode'} eq 'group') {      if ($ENV{'form.sendmode'} eq 'group') {
Line 1667  sub handler { Line 1803  sub handler {
       &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}),        &Apache::lonfeedback::clear_out_html($ENV{'form.subject'}),
       $msgtxt,        $msgtxt,
       $content{'citation'});        $content{'citation'});
                       if (($ENV{'request.course.id'}) && ($ENV{'form.sendmode'} eq 'group')) {
                           &user_normal_msg_raw(
                           $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
                           $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
                           'Broadcast ['.$recuname.':'.$recdomain.']',
                           $msgtxt);
                       }
  }   }
  $r->print($thismsg.'<br />');   $r->print($thismsg.'<br />');
  $sendstatus.=' '.$thismsg;   $sendstatus.=' '.$thismsg;
Line 1687  sub handler { Line 1830  sub handler {
       &mt('Please use the browser "Back" button and correct the recipient addresses')        &mt('Please use the browser "Back" button and correct the recipient addresses')
       );        );
  }   }
       } elsif ($ENV{'form.newfolder'}) {
    &printheader($r,'','New Folder');
    &makefolder($ENV{'form.newfolder'});
    &disall($r,$ENV{'form.newfolder'});
     } else {      } else {
  &printheader($r,'','Display All Messages');   &printheader($r,'','Display All Messages');
  &disall($r);   &disall($r,$folder);
     }      }
     $r->print('</body></html>');      $r->print('</body></html>');
     return OK;      return OK;

Removed from v.1.101  
changed lines
  Added in v.1.107


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