Diff for /loncom/interface/lonmsgdisplay.pm between versions 1.180 and 1.181.2.9.2.3

version 1.180, 2015/02/12 21:22:07 version 1.181.2.9.2.3, 2023/10/07 01:47:21
Line 102  use HTML::TokeParser(); Line 102  use HTML::TokeParser();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
   use Apache::longroup;
   use Apache::lonnavmaps;
 use Apache::lontexconvert();  use Apache::lontexconvert();
 use HTML::Entities();  use HTML::Entities();
 use Apache::lonlocal;  use Apache::lonlocal;
Line 109  use Apache::loncommunicate; Line 111  use Apache::loncommunicate;
 use Apache::lonfeedback;  use Apache::lonfeedback;
 use Apache::lonrss();  use Apache::lonrss();
 use Apache::lonselstudent();  use Apache::lonselstudent();
   use Apache::lonenc();
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
   
Line 120  my $startdis=''; Line 123  my $startdis='';
   
 sub folderlist {  sub folderlist {
     my ($folder,$msgstatus) = @_;      my ($folder,$msgstatus) = @_;
     my %lt = &Apache::lonlocal::texthash(      my %html_lt = &Apache::lonlocal::texthash(
                 actn => 'Action',                  actn => 'Action',
                 fold => 'Folder',                  fold => 'Folder',
                 show => 'Show',                  show => 'Show',
                 status => 'Message Status',                  status => 'Message Status',
                 go   => 'Go',                  go   => 'Go',
   
       );
       &html_escape(\%html_lt);
       my %js_lt = &Apache::lonlocal::texthash(
                 nnff => 'New Name for Folder',                  nnff => 'New Name for Folder',
                 newn => 'New Name',                  newn => 'New Name',
                 fmnb => 'Folder may not be renamed as it is a folder provided by the system.',                  fmnb => 'Folder may not be renamed as it is a folder provided by the system.',
                 asth => 'Requested name already in use for a system-provided or user-defined folder.',                  asth => 'Requested name already in use for a system-provided or user-defined folder.',
   
     );      );
       &js_escape(\%js_lt);
   
  # set se lastvisit for the new mail check in the toplevel menu   # set se lastvisit for the new mail check in the toplevel menu
  &Apache::lonnet::appenv({'user.mailcheck.lastvisit'=>time});   &Apache::lonnet::appenv({'user.mailcheck.lastvisit'=>time});
Line 179  function folder_choice(targetform,caller Line 187  function folder_choice(targetform,caller
         if (targetform.folderaction.options[targetform.folderaction.selectedIndex].value == 'rename') {          if (targetform.folderaction.options[targetform.folderaction.selectedIndex].value == 'rename') {
             for (var i=0; i<permfolders_keys.length; i++) {              for (var i=0; i<permfolders_keys.length; i++) {
                 if (permfolders_keys[i] == targetform.folder.value) {                  if (permfolders_keys[i] == targetform.folder.value) {
                     alert("'"+permfolders_vals[i]+"' -- $lt{'fmnb'}");                      alert("'"+permfolders_vals[i]+"' -- $js_lt{'fmnb'}");
                     return;                      return;
                 }                  }
             }              }
             var foldername=prompt('$lt{'nnff'}','$lt{'newn'}');              var foldername=prompt('$js_lt{'nnff'}','$js_lt{'newn'}');
             if (foldername) {              if (foldername) {
                 targetform.renamed.value=foldername;                  targetform.renamed.value=foldername;
                 for (var i=0; i<allfolders.length; i++) {                  for (var i=0; i<allfolders.length; i++) {
                     if (allfolders[i] == foldername) {                      if (allfolders[i] == foldername) {
                         alert("'"+foldername+"' $lt{'asth'}");                          alert("'"+foldername+"' $js_lt{'asth'}");
                         return;                          return;
                     }                      }
                 }                  }
Line 204  function folder_choice(targetform,caller Line 212  function folder_choice(targetform,caller
         if (newname) {          if (newname) {
             for (var i=0; i<allfolders.length; i++) {              for (var i=0; i<allfolders.length; i++) {
                 if (allfolders[i] == newname) {                  if (allfolders[i] == newname) {
                     alert("'"+newname+"' -- $lt{'asth'}");                      alert("'"+newname+"' -- $js_lt{'asth'}");
                     return;                      return;
                 }                  }
             }              }
Line 223  function folder_choice(targetform,caller Line 231  function folder_choice(targetform,caller
    <legend>'.&mt('Folder Actions').'</legend>     <legend>'.&mt('Folder Actions').'</legend>
    <table border="0" cellspacing="2" cellpadding="8">     <table border="0" cellspacing="2" cellpadding="8">
     <tr>      <tr>
      <td><b>'.$lt{'fold'}.'</b><br />'."\n".       <td><b>'.$html_lt{'fold'}.'</b><br />'."\n".
          &Apache::loncommon::select_form($folder,'folder',\%formhash).'           &Apache::loncommon::select_form($folder,'folder',\%formhash).'
      </td>       </td>
      <td><b>'.$lt{'show'}.'</b><br />'."\n".       <td><b>'.$html_lt{'show'}.'</b><br />'."\n".
          &Apache::loncommon::select_form($env{'form.interdis'},'interdis',           &Apache::loncommon::select_form($env{'form.interdis'},'interdis',
  \%show).'   \%show).'
      </td>       </td>
      <td><b>'.$lt{'status'}.'</b><br />'."\n".       <td><b>'.$html_lt{'status'}.'</b><br />'."\n".
        &Apache::loncommon::select_form($msgstatus,'msgstatus',\%statushash).'         &Apache::loncommon::select_form($msgstatus,'msgstatus',\%statushash).'
      </td>       </td>
      <td style="padding-right: 40px;">       <td style="padding-right: 40px;">
          <b>'.$lt{'actn'}.'</b><br />'."\n".'           <b>'.$html_lt{'actn'}.'</b><br />'."\n".'
          <span class="LC_nobreak">'.           <span class="LC_nobreak">'.
          &Apache::loncommon::select_form('view','folderaction',\%actions).           &Apache::loncommon::select_form('view','folderaction',\%actions).
          ' <input type="button" value="'.$lt{'go'}.           ' <input type="button" value="'.$html_lt{'go'}.
          '" onclick="javascript:folder_choice(this.form,'."'change'".');" />           '" onclick="javascript:folder_choice(this.form,'."'change'".');" />
          </span>           </span>
      </td>       </td>
Line 245  function folder_choice(targetform,caller Line 253  function folder_choice(targetform,caller
          <b>'.&mt('New Folder').'</b><br />'."\n".'           <b>'.&mt('New Folder').'</b><br />'."\n".'
          <span class="LC_nobreak">           <span class="LC_nobreak">
          <input type="text" size="15" name="newfolder" value="" />           <input type="text" size="15" name="newfolder" value="" />
          <input type="button" value="'.$lt{'go'}.           <input type="button" value="'.$html_lt{'go'}.
          '" onclick="javascript:folder_choice(this.form,'."'new'".');" />           '" onclick="javascript:folder_choice(this.form,'."'new'".');" />
          </span>           </span>
      </td>       </td>
Line 768  sub groupmail_header { Line 776  sub groupmail_header {
               text=>"Groups",                text=>"Groups",
               title=>$brtitle});                title=>$brtitle});
     }      }
       my $view_permission =
             &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
       my $navmap=Apache::lonnavmaps::navmap->new();
       my $grouppagelink = &Apache::longroup::get_group_link($cdom,$cnum,$group,$navmap,$view_permission,$refarg);
       if ($grouppagelink) {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>$grouppagelink,
                 text=>&mt('Group').": $description",
                 title=>&mt("Go to group's home page"),
                 no_mt=>1,
                },);
       } else {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({text=>&mt('Group').": $description",
                 no_mt=>1,});
       }
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"/adm/$cdom/$cnum/$group/smppg?$refarg",           ({href=>"/adm/email?compose=group&amp;group=".
           text=>"Group: $description",                   "$env{'form.group'}&amp;$refarg",
           title=>"Go to group's home page"},             text=>"Send a Message in a Group",
          {href=>"/adm/email?compose=group&amp;group=".             title=>"Compose Group Message"},);
                 "$env{'form.group'}&amp;$refarg",  
           text=>"Send a Message in a Group",  
           title=>"Compose Group Message"},);  
     if ($action eq 'sending') {      if ($action eq 'sending') {
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
                          ({text=>"Messages being sent.",                           ({text=>"Messages being sent.",
                            title=>"E-mails sent"},);                             title=>"E-mails sent"},);
     }      }
     my $groupheader = &Apache::loncommon::start_page('Group Message');      my $groupheader = &Apache::loncommon::start_page('Group Message');
     $groupheader .= &Apache::lonhtmlcommon::breadcrumbs      $groupheader .= &Apache::lonhtmlcommon::breadcrumbs(
                 ('Group - '.$env{'form.group'}.' Email');                                      &mt('Group messages - [_1]',$description),
                                                           undef,undef,undef,undef,1);
     return $groupheader;      return $groupheader;
 }  }
   
Line 844  sub discrit { Line 866  sub discrit {
                       .&Apache::lonhtmlcommon::row_closure(1);                        .&Apache::lonhtmlcommon::row_closure(1);
         }          }
         $result .= &Apache::lonhtmlcommon::row_title(&mt('Message'),undef,'LC_evenrow_value')          $result .= &Apache::lonhtmlcommon::row_title(&mt('Message'),undef,'LC_evenrow_value')
                   .'<pre>'.&Apache::lontexconvert::msgtexconverted($content{'message'}).'</pre>'                    .'<pre class="LC_wordwrap">'.&Apache::lontexconvert::msgtexconverted($content{'message'}).'</pre>'
                   .&Apache::lonhtmlcommon::row_closure()                    .&Apache::lonhtmlcommon::row_closure()
                   .&Apache::lonhtmlcommon::row_title('',undef,'LC_oddrow_value')                    .&Apache::lonhtmlcommon::row_title('',undef,'LC_oddrow_value')
                   .'<div class="LC_warning">';                    .'<div class="LC_warning">';
Line 891  sub discrit { Line 913  sub discrit {
 }  }
   
 sub sortedmessages {  sub sortedmessages {
     my ($blocked,$startblock,$endblock,$numblocked,$folder,$msgstatus) = @_;      my ($blocked,$startblock,$endblock,$by_ip,$numblocked,$folder,$msgstatus) = @_;
     my $suffix=&Apache::lonmsg::foldersuffix($folder);      my $suffix=&Apache::lonmsg::foldersuffix($folder);
     my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix);      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
Line 923  sub sortedmessages { Line 945  sub sortedmessages {
     push(@temp1,$content{'recuser'},$content{'recdomain'});      push(@temp1,$content{'recuser'},$content{'recdomain'});
  }   }
         # Check whether message was sent during blocking period.          # Check whether message was sent during blocking period.
         if ($sendtime >= $startblock && ($sendtime <= $endblock && $endblock > 0) ) {          if (($by_ip) ||
               (($sendtime >= $startblock) && ($sendtime <= $endblock && $endblock > 0))) {
             $$blocked{$msgid} = 'ON';              $$blocked{$msgid} = 'ON';
             $$numblocked ++;              $$numblocked ++;
         } else {           } else { 
Line 1050  sub disfolder { Line 1073  sub disfolder {
     my %blocked = ();      my %blocked = ();
     my %setters = ();      my %setters = ();
     my $numblocked = 0;      my $numblocked = 0;
     my ($startblock,$endblock) = &Apache::loncommon::blockcheck(\%setters,'com');      my $clientip = &Apache::lonnet::get_requestor_ip($r);
     my %lt = &Apache::lonlocal::texthash(      my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) =
           &Apache::loncommon::blockcheck(\%setters,'com',$clientip);
       my %js_lt = &Apache::lonlocal::texthash(
                       sede => 'Select a destination folder to which the messages will be moved.',                        sede => 'Select a destination folder to which the messages will be moved.',
                       nome => 'No messages have been selected to apply this action to.',                        nome => 'No messages have been selected to apply this action to.',
                       chec => 'Check the checkbox for at least one message.',                          chec => 'Check the checkbox for at least one message.',  
     );      );
       &js_escape(\%js_lt);
     my $jscript = &Apache::loncommon::check_uncheck_jscript();      my $jscript = &Apache::loncommon::check_uncheck_jscript();
     $r->print(<<ENDDISHEADER);      $r->print(<<ENDDISHEADER);
 <script type="text/javascript">  <script type="text/javascript">
Line 1066  sub disfolder { Line 1092  sub disfolder {
         document.disall.markedaction.value = document.disall.checkedaction.options[document.disall.checkedaction.selectedIndex].value;          document.disall.markedaction.value = document.disall.checkedaction.options[document.disall.checkedaction.selectedIndex].value;
         if (document.disall.checkedaction.options[document.disall.checkedaction.selectedIndex].value == 'markedmove') {          if (document.disall.checkedaction.options[document.disall.checkedaction.selectedIndex].value == 'markedmove') {
             if (document.disall.movetofolder.options[document.disall.movetofolder.selectedIndex].value == "") {              if (document.disall.movetofolder.options[document.disall.movetofolder.selectedIndex].value == "") {
                 alert("$lt{'sede'}");                  alert("$js_lt{'sede'}");
                 return;                  return;
             }               } 
         }          }
Line 1083  sub disfolder { Line 1109  sub disfolder {
             }              }
         }             }   
         if (checktotal == 0) {          if (checktotal == 0) {
             alert("$lt{'nome'}\\n$lt{'chec'}");              alert("$js_lt{'nome'}\\n$js_lt{'chec'}");
             return;              return;
         }          }
         document.disall.submit();          document.disall.submit();
Line 1093  sub disfolder { Line 1119  sub disfolder {
 ENDDISHEADER  ENDDISHEADER
   
     my $fsqs='&amp;folder='.$folder;      my $fsqs='&amp;folder='.$folder;
     my @temp=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder,$msgstatus);      my @temp=&sortedmessages(\%blocked,$startblock,$endblock,$by_ip,\$numblocked,$folder,$msgstatus);
     my $totalnumber=$#temp+1;      my $totalnumber=$#temp+1;
     if ($totalnumber < 1) {      if ($totalnumber < 1) {
         $r->print('<p class="LC_info">');          $r->print('<p class="LC_info">');
Line 1106  ENDDISHEADER Line 1132  ENDDISHEADER
         }          }
         $r->print('</p>');          $r->print('</p>');
         if ($numblocked > 0) {          if ($numblocked > 0) {
             $r->print(&blocked_in_folder($numblocked,$startblock,$endblock,              $r->print(&blocked_in_folder($numblocked,$startblock,$endblock,$by_ip,$clientip,$blockdom,
                                          \%setters));                                           \%setters));
         }          }
         return;          return;
Line 1296  ENDDISHEADER Line 1322  ENDDISHEADER
     $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'}.'" /><input type="hidden" name="msgstatus" value="'.$msgstatus.'" /><input type="hidden" name="markedaction" value="" /></form>');      $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'}.'" /><input type="hidden" name="msgstatus" value="'.$msgstatus.'" /><input type="hidden" name="markedaction" value="" /></form>');
     if ($numblocked > 0) {      if ($numblocked > 0) {
         $r->print(&blocked_in_folder($numblocked,$startblock,$endblock,          $r->print(&blocked_in_folder($numblocked,$startblock,$endblock,
                                      \%setters));                                       $by_ip,$clientip,$blockdom,\%setters));
     }      }
 }  }
   
 sub blocked_in_folder {  sub blocked_in_folder {
     my ($numblocked,$startblock,$endblock,$setters) = @_;      my ($numblocked,$startblock,$endblock,$by_ip,$clientip,$blockdom,$setters) = @_;
     my $beginblock = &Apache::lonlocal::locallocaltime($startblock);      my $output;
     my $finishblock = &Apache::lonlocal::locallocaltime($endblock);      if ($by_ip) {
     my $output = '<br /><br />'.          $output = '<br /><br />'.
                     &mt('[quant,_1,message is, messages are] not viewable because display of LON-CAPA messages is blocked for your current IP address: [_2].',$numblocked,$clientip).'<br />'.
                     &mt('Note: communication is being blocked for certain IP address(es).');
       } else {
           my $beginblock = &Apache::lonlocal::locallocaltime($startblock);
           my $finishblock = &Apache::lonlocal::locallocaltime($endblock);
           $output = '<br /><br />'.
                   &mt('[quant,_1,message is, messages are] not viewable because display of LON-CAPA messages sent to you by other students between [_2] and [_3] is currently being blocked because of online exams.',$numblocked,$beginblock,$finishblock);                    &mt('[quant,_1,message is, messages are] not viewable because display of LON-CAPA messages sent to you by other students between [_2] and [_3] is currently being blocked because of online exams.',$numblocked,$beginblock,$finishblock);
       }
     #$output .= &Apache::loncommon::build_block_table($startblock,$endblock,      #$output .= &Apache::loncommon::build_block_table($startblock,$endblock,
     #                                                 $setters);      #                                                 $setters);
           my ($blocked, $blocktext) = &Apache::loncommon::blocking_status("com",$clientip);
     my ($blocked, $blocktext) = &Apache::loncommon::blocking_status("com");  
     $output .="<br /><br />".$blocktext;      $output .="<br /><br />".$blocktext;
   
     return $output;      return $output;
Line 1320  sub blocked_in_folder { Line 1352  sub blocked_in_folder {
 sub compout {  sub compout {
     my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder,$dismode,      my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder,$dismode,
         $multiforward)=@_;          $multiforward)=@_;
       my $clientip = &Apache::lonnet::get_requestor_ip($r);
       my %setters;
       my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) =
           &Apache::loncommon::blockcheck(\%setters,'com',$clientip);
       if ($by_ip) {
           my $showdom = &Apache::lonnet::domain($blockdom);
           if ($showdom eq '') {
               $showdom = $blockdom;
           }
           $r->print(&Apache::loncommon::start_page('Messages'));
           $r->print(&Apache::lonhtmlcommon::breadcrumbs('Send and display messages'));
           $r->print('<p class="LC_warning">'.
                    &mt('Sending of LON-CAPA messages is blocked for your current IP address: [_1].',$clientip).'</p>'.
                    '<ul><li>'.
                    &mt('Note: communication is being blocked for certain IP address(es).').
                    '</li><li>'.
                    &mt('This restriction was set by an administrator in the [_1] LON-CAPA domain.',$showdom).
                    '</li></ul>');
           return;
       }
     my $suffix=&Apache::lonmsg::foldersuffix($folder);      my $suffix=&Apache::lonmsg::foldersuffix($folder);
     my ($cdom,$cnum,$group,$refarg);      my ($cdom,$cnum,$group,$refarg);
     if (exists($env{'form.group'})) {      if (exists($env{'form.group'})) {
Line 1394  sub compout { Line 1446  sub compout {
                                        'to'   => 'To:',                                         'to'   => 'To:',
                                       );                                        );
     my %attachmax = (      my %attachmax = (
                      text => &mt('(128 KB max size)'),                       text => &mt('(1 MB max size)'),
                      num  => 131072,                       num  => 1048576,
                     );                      );
     if (!$forwarding && !$multiforward) {      if (!$forwarding && !$multiforward) {
         $attachrow = '<tr><td colspan="3"><b>'.$lt{'atta'}.'</b> '.$attachmax{'text'}.': <input type="file" name="attachment" /></td></tr>';          $attachrow = '<tr><td colspan="3"><b>'.$lt{'atta'}.'</b> '.$attachmax{'text'}
               .': <input type="file" name="attachment" class="LC_flUpload" />'
               .'<input type="hidden" id="LC_free_space" value="'.$attachmax{'num'}.'" />'
               .'</td></tr>';
     }      }
     if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})      if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})
  || &Apache::lonnet::allowed('srm',$env{'request.course.id'}.   || &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
Line 1953  sub disfacetoface { Line 2008  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 /><pre>'.              '<br /><pre class="LC_wordwrap">'.
               &Apache::lontexconvert::msgtexconverted($content{'message'}).                &Apache::lontexconvert::msgtexconverted($content{'message'}).
       '</pre>';        '</pre>';
      }       }
Line 2081  sub displaymessage { Line 2136  sub displaymessage {
     my %setters = ();      my %setters = ();
     my $numblocked = 0;      my $numblocked = 0;
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
       my $clientip = &Apache::lonnet::get_requestor_ip($r);
   
 # 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
     my ($startblock,$endblock) = &Apache::loncommon::blockcheck(\%setters,'com');      my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = 
     my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder,$msgstatus);          &Apache::loncommon::blockcheck(\%setters,'com',$clientip);
       my @messages=&sortedmessages(\%blocked,$startblock,$endblock,$by_ip,\$numblocked,$folder,$msgstatus);
     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.'));
         my($blocked, $blocktext) = &Apache::loncommon::blocking_status("com");          my($blocked, $blocktext) = &Apache::loncommon::blocking_status("com",$clientip);
         $r->print("<br />".$blocktext);          $r->print("<br />".$blocktext);
         return;          return;
     }      }
Line 2122  sub displaymessage { Line 2179  sub displaymessage {
   
   
     my $number_of_messages = scalar(@messages); #subtract 1 for last index      my $number_of_messages = scalar(@messages); #subtract 1 for last index
       my $head_extra;
   
   # if student's view of resource will be included
   # get <link> tag(s) for css file(s) in use, and pass to &header to include
   # in call to loncommon::start_page()
   
       if (($env{'request.course.id'} eq $content{'courseid'}) &&
           (&Apache::lonnet::allowed('vgr',$content{'courseid'}))) {
           my $symb;
           if (defined($content{'symb'})) {
               $symb = $content{'symb'};
           } elsif (defined($content{'baseurl'})) {
               $symb=&Apache::lonnet::symbread($content{'baseurl'});
           }
           if ($symb) {
               $head_extra = &Apache::loncommon::css_links($symb);
           }
       }
   
 # start output  # start output
     &printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'});      &printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',
                    $content{'baseurl'},$head_extra);
   
 # Prepare available functions  # Prepare available functions
     my @functionlist;      my @functionlist;
Line 2168  sub displaymessage { Line 2245  sub displaymessage {
     my @actionlist;      my @actionlist;
     if ($env{'user.adv'}) {      if ($env{'user.adv'}) {
   
  if (&Apache::lonnet::allowed('vgr',$env{'request.course.id'})) {   if (($env{'request.course.id'}) && ($from_student) &&
               (&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) {
  push(@actionlist,&Apache::loncommon::track_student_link(   push(@actionlist,&Apache::loncommon::track_student_link(
                                       'View recent activity'                                        'View recent activity'
                                      ,$content{'sendername'}                                       ,$content{'sendername'}
Line 2426  sub displaymessage { Line 2504  sub displaymessage {
                               $showsymb,$env{'user.domain'},$env{'user.name'});                                $showsymb,$env{'user.domain'},$env{'user.name'});
                 if ($symb) {                  if ($symb) {
                     if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) {                      if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) {
                         $showsymb = &Apache::lonenc::check_encrypt($symb);                          unless ($showsymb =~ m{^/enc/}) {
                               $showsymb = &Apache::lonenc::encrypted($showsymb);
                           }
                     }                      }
                     $symblink = '?symb='.$showsymb;                      $symblink = '?symb='.$showsymb;
                 }                  }
                 if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) {                  if ($encrypturl =~ /^yes$/i && !$env{'request.role.adv'}) {
                     $showurl = $baseurl;                      unless ($showurl =~ m{^/enc/}) {
                           $showurl = &Apache::lonenc::encrypted($showurl);
                       }
                 }                  }
                 $r->print(&Apache::lonhtmlcommon::row_title(&mt('Refers to'))                  $r->print(&Apache::lonhtmlcommon::row_title(&mt('Refers to'))
                          .'<a href="'.$showurl.$symblink.'">'.$restitle.'</a>'                           .'<a href="'.$showurl.$symblink.'">'.$restitle.'</a>'
Line 2471  sub displaymessage { Line 2553  sub displaymessage {
   
     # Message      # Message
     $r->print(&Apache::lonhtmlcommon::row_title(&mt('Message'))      $r->print(&Apache::lonhtmlcommon::row_title(&mt('Message'))
              .'<pre>'               .'<pre class="LC_wordwrap">'
      .&Apache::lontexconvert::msgtexconverted($content{'message'},1)       .&Apache::lontexconvert::msgtexconverted($content{'message'},1)
      .'</pre>'       .'</pre>'
     );      );
Line 2625  sub displayresource { Line 2707  sub displayresource {
      && (&Apache::lonnet::allowed('vgr',$content{'courseid'}))) {       && (&Apache::lonnet::allowed('vgr',$content{'courseid'}))) {
         my $symb;          my $symb;
         if (defined($content{'symb'})) {          if (defined($content{'symb'})) {
             $symb = $content{'symb'};              $symb = &Apache::lonenc::check_decrypt($content{'symb'});
         } else {           } elsif (defined($content{'baseurl'})) {
     $symb=&Apache::lonnet::symbread($content{'baseurl'});              $symb =
                   &Apache::lonnet::symbread(&Apache::lonenc::check_decrypt($content{'baseurl'}));
         }          }
 # Could not get a symb, give up  # Could not get a symb, give up
  unless ($symb) { return $content{'citation'}; }   unless ($symb) { return $content{'citation'}; }
Line 2656  sub displayresource { Line 2739  sub displayresource {
 # ================================================================== The Header  # ================================================================== The Header
   
 sub header {  sub header {
     my ($r,$title,$baseurl)=@_;      my ($r,$title,$baseurl,$head_extra)=@_;
     my $extra = &Apache::loncommon::studentbrowser_javascript();      my $extra = &Apache::loncommon::studentbrowser_javascript();
     if ($baseurl) {      if ($baseurl) {
  $extra .= "<base href=\"".&Apache::lonnet::absolute_url()."/$baseurl\" />";   $extra .= "<base href=\"".&Apache::lonnet::absolute_url()."/$baseurl\" />";
     }      }
       $extra .= '<script type="text/javascript"
                   src="/res/adm/includes/file_upload.js"></script>';
       if ($head_extra) {
           $extra .= "\n$head_extra";
       }
     $r->print(&Apache::loncommon::start_page('Messages',      $r->print(&Apache::loncommon::start_page('Messages',
   $extra));    $extra));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs      $r->print(&Apache::lonhtmlcommon::breadcrumbs
Line 2670  sub header { Line 2758  sub header {
 # ---------------------------------------------------------------- Print header  # ---------------------------------------------------------------- Print header
   
 sub printheader {  sub printheader {
     my ($r,$url,$desc,$title,$baseurl)=@_;      my ($r,$url,$desc,$title,$baseurl,$head_extra)=@_;
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
  ({href=>$url,   ({href=>$url,
   text=>$desc});    text=>$desc});
     &header($r,$title,$baseurl);      &header($r,$title,$baseurl,$head_extra);
 }  }
   
 # ------------------------------------------------------------ Store the comment  # ------------------------------------------------------------ Store the comment
Line 2731  sub sendoffmail { Line 2819  sub sendoffmail {
         $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};          $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
         $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};          $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     }      }
     if ($env{'form.send'}) {      my $clientip = &Apache::lonnet::get_requestor_ip($r);
       my %setters;
       my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) =
           &Apache::loncommon::blockcheck(\%setters,'com',$clientip);
       if ($by_ip) {
           &printheader($r,'','Sending messages blocked from your location.');
           return 'blocked';
       } elsif ($env{'form.send'}) {
         if (!$env{'form.multiforward'}) {           if (!$env{'form.multiforward'}) { 
             if ($group eq '') {              if ($group eq '') {
         &printheader($r,'','Messages being sent.');          &printheader($r,'','Messages being sent.');
Line 2901  sub sendoffmail { Line 2996  sub sendoffmail {
             &Apache::lonnet::logthis('Failed to store To, Bcc and Cc recipients for '.$env{'user.name'}.':'.$env{'user.domain'});              &Apache::lonnet::logthis('Failed to store To, Bcc and Cc recipients for '.$env{'user.name'}.':'.$env{'user.domain'});
         }          }
         if ($env{'form.attachment'}) {          if ($env{'form.attachment'}) {
             if (length($env{'form.attachment'})<131072) {              if (length($env{'form.attachment'}) <= 1048576) {
                 $attachmenturl=&Apache::lonnet::userfileupload('attachment',undef,'feedback/'.$now);                  $attachmenturl=&Apache::lonnet::userfileupload('attachment',undef,'feedback/'.$now);
             } else {              } else {
                 $r->print('<p><span class="LC_warning">'.&mt('Attachment not included - exceeded permitted length').'</span><br /></p>');                  $r->print('<p><span class="LC_warning">'.&mt('Attachment not included - exceeded permitted length').'</span><br /></p>');
Line 3076  sub handler { Line 3171  sub handler {
          'sendreply','compose','sendmail','critical','recname','recdom',           'sendreply','compose','sendmail','critical','recname','recdom',
          'recordftf','sortedby','folder','startdis','interdis',           'recordftf','sortedby','folder','startdis','interdis',
  'showcommentbaseurl','dismode','group','subject','text','ref',   'showcommentbaseurl','dismode','group','subject','text','ref',
          'msgstatus']);           'msgstatus','btoken']);
     $sqs='&amp;sortedby='.$env{'form.sortedby'};      $sqs='&amp;sortedby='.$env{'form.sortedby'};
   
   # ----------- Check if access was from balancer to server with existing session
   
       if ($env{'form.btoken'}) {
           my %info = &Apache::lonnet::tmpget($env{'form.btoken'});
           &Apache::lonnet::tmpdel($env{'form.btoken'});
           delete($env{'form.btoken'});
           unless ($env{'form.display'}) {
               if (($info{'display'}) && ($info{'mailrecip'})) {
                   if (&unescape($info{'mailrecip'}) eq $env{'user.name'}.':'.$env{'user.domain'}) {
                       $env{'form.display'} = &unescape($info{'display'});
                   }
               }
           }
       }
   
 # ------------------------------------------------------ They checked for email  # ------------------------------------------------------ They checked for email
     &Apache::lonnet::put('email_status',{'recnewemail'=>0});      &Apache::lonnet::put('email_status',{'recnewemail'=>0});
   
Line 3333  sub handler { Line 3443  sub handler {
                 my $count = keys(%forwardfail);                  my $count = keys(%forwardfail);
                 my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Could not forward [quant,_1,message].',$count),1);                  my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Could not forward [quant,_1,message].',$count),1);
                 foreach my $key (keys(%forwardfail)) {                  foreach my $key (keys(%forwardfail)) {
                     $message .= '<br />'.&mt('Could not deliver forwarded message.').'</span> '.                      $message .= '<br />'.&mt('Could not deliver forwarded message.').' ';
                                 &mt('The recipient addresses may need to be corrected').' ('.$forwardfail{$key}.')';                      if ($forwardfail{$key} eq 'blocked') {
                           $message .= &mt('Sending messages is blocked from your IP address');
                       } else {
                           $message .= &mt('The recipient addresses may need to be corrected').' ('.$forwardfail{$key}.')';
                       }
                 }                  }
                 $message = &Apache::loncommon::confirmwrapper($message);                  $message = &Apache::loncommon::confirmwrapper($message);
                 $r->print($message);                  $r->print($message);

Removed from v.1.180  
changed lines
  Added in v.1.181.2.9.2.3


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