Diff for /loncom/interface/lonmsgdisplay.pm between versions 1.20 and 1.27

version 1.20, 2006/05/01 05:57:26 version 1.27, 2006/05/17 14:58:28
Line 125  use Apache::lonlocal; Line 125  use Apache::lonlocal;
 use Apache::loncommunicate;  use Apache::loncommunicate;
 use Apache::lonfeedback;  use Apache::lonfeedback;
 use Apache::lonrss();  use Apache::lonrss();
   use Apache::lonselstudent();
   
 # Querystring component with sorting type  # Querystring component with sorting type
 my $sqs;  my $sqs;
Line 259  sub movemsg { Line 260  sub movemsg {
 # ======================================================= Display a course list  # ======================================================= Display a course list
   
 sub discourse {  sub discourse {
     my $r=shift;      my $result;
     my $classlist = &Apache::loncoursedata::get_classlist();      my ($course_personnel,
     my ($classgroups,$studentgroups) =    $current_members,
             &Apache::loncoursedata::get_group_memberships($classlist);   $expired_members,
     my %lt=&Apache::lonlocal::texthash('cfa' => 'Check All',   $future_members) = &Apache::lonselstudent::get_people_in_class();
             'cfs' => 'Check Section/Group',      unshift @$current_members, (@$course_personnel);
             'cfn' => 'Uncheck All');      my %defaultUsers;
     if (defined($env{'form.group'})) {  
         $r->print('<input type="hidden" name="group" value="'.      $result = &Apache::lonselstudent::render_student_list($current_members,
                   $env{'form.group'}.'" />'."\n");    "compemail",
     }    "current",
     $r->print(<<ENDDISHEADER);    \%defaultUsers,
 <input type="hidden" name="sendmode" value="group" />    1,"selectedusers",1);
 <script pe="text/javascript">  
     function checkall() {  
  for (i=0; i<document.forms.compemail.elements.length; i++) {  
             if   
           (document.forms.compemail.elements[i].name.indexOf('send_to_')==0) {  
       document.forms.compemail.elements[i].checked=true;  
             }  
         }  
     }  
   
     function checksec() {      return $result;
  for (i=0; i<document.forms.compemail.elements.length; i++) {  
             if   
           (document.forms.compemail.elements[i].name.indexOf  
            ('send_to_&&&'+document.forms.compemail.chksec.value+'&&&')==0) {  
       document.forms.compemail.elements[i].checked=true;  
             }  
             if  
           (document.forms.compemail.elements[i].name.indexOf  
            ('group_&&&'+document.forms.compemail.chksec.value+'&&&_')==0) {  
               var count = i - document.forms.compemail.elements[i].value;  
               document.forms.compemail.elements[count].checked=true;  
             }  
         }  
     }  
   
     function uncheckall() {  
  for (i=0; i<document.forms.compemail.elements.length; i++) {  
             if   
           (document.forms.compemail.elements[i].name.indexOf('send_to_')==0) {  
       document.forms.compemail.elements[i].checked=false;  
             }  
         }  
     }  
 </script>  
 <input type="button" onClick="checkall()" value="$lt{'cfa'}" />&nbsp;  
 <input type="button" onClick="checksec()" value="$lt{'cfs'}" />  
 <input type="text" size="15" name="chksec" value="$env{'form.group'}" />&nbsp;  
 <input type="button" onClick="uncheckall()" value="$lt{'cfn'}" />  
 <p>  
 ENDDISHEADER  
     my %coursepersonnel=&Apache::lonnet::get_course_adv_roles();  
     $r->print(&Apache::loncommon::start_data_table());  
     if (keys(%coursepersonnel) > 0) {  
         $r->print('<h3>Non-students</h3>');  
         $r->print(&Apache::loncommon::start_data_table());  
         $r->print(&Apache::loncommon::start_data_table_row());  
         $r->print('<th>Name</th><th>Username:Domain</th><th>Role</th>');  
         $r->print(&Apache::loncommon::end_data_table_row());  
         foreach my $role (sort keys %coursepersonnel) {  
             foreach (split(/\,/,$coursepersonnel{$role})) {  
                 my ($puname,$pudom)=split(/\:/,$_);  
                 $r->print(&Apache::loncommon::start_data_table_row());  
                 $r->print('<td><label>'.  
                           '<input type="checkbox" name="send_to_&&&&&&_'.  
                           $puname.':'.$pudom.'" /> '.  
                           &Apache::loncommon::plainname($puname,$pudom).  
                           '</label></td>'.  
                           '<td>('.$_.'),</td><td><i>'.$role.'</i></td>');  
                 $r->print(&Apache::loncommon::end_data_table_row());  
             }  
         }  
         $r->print(&Apache::loncommon::end_data_table());  
     }  
     if (keys(%{$classlist}) > 0) {  
         $r->print('<h3>Students</h3>');  
         $r->print(&Apache::loncommon::start_data_table());  
         $r->print(&Apache::loncommon::start_data_table_row());  
         $r->print('<th>Name</th><th>Username:Domain</th><th>Section</th><th>Groups</th>');  
         $r->print(&Apache::loncommon::end_data_table_row());  
         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) =  
                 (@{$info}[&Apache::loncoursedata::CL_SNAME(),  
                           &Apache::loncoursedata::CL_SDOM(),  
                           &Apache::loncoursedata::CL_STATUS(),  
                           &Apache::loncoursedata::CL_FULLNAME(),  
                           &Apache::loncoursedata::CL_SECTION()]);  
             next if ($status ne 'Active');  
     next if ($env{'request.course.sec'} &&  
      $section ne $env{'request.course.sec'});  
             my @studentsgroups = &Apache::loncoursedata::get_students_groups(  
                                                $student,$status,$classgroups);  
             my $grouplist = join(', ',@studentsgroups);  
             my $key = 'send_to_&&&'.$section.'&&&_'.$student;  
             if (! defined($fullname) || $fullname eq '') {$fullname = $sname;}  
             my $checked = '';  
             my $groupcount = 0;  
             my $groupitems;  
             $r->print(&Apache::loncommon::start_data_table_row());  
             $r->print('<td><label>');  
             foreach my $group (@studentsgroups) {  
                 $groupcount ++;  
                 $groupitems .= ('<input type="hidden" name="group_&&&'.  
                                 $group.'&&&_'.$student.'" value="'.  
                                 $groupcount.'" />');  
                 if (defined($env{'form.group'})) {  
                     if ($env{'form.group'} eq $group) {  
                         $checked = 'checked=checked';  
                     }  
                 }  
             }  
             $r->print(qq{<input type="checkbox" name="$key" $checked />}.  
                       ('&nbsp;'x2).$fullname.'</label>'.$groupitems.  
                       '</td><td>'.$sname.':'.$sdom.'</td><td>'.$section.  
                       '</td><td>'.$grouplist.'</td>');  
             $r->print(&Apache::loncommon::end_data_table_row());  
         }  
         $r->print(&Apache::loncommon::end_data_table());  
     }  
 }  }
   
 # ==================================================== Display Critical Message  # ==================================================== Display Critical Message
Line 904  sub compout { Line 790  sub compout {
     }      }
     my $citation=&displayresource(%content);      my $citation=&displayresource(%content);
     if ($env{'form.recdom'}) { $defdom=$env{'form.recdom'}; }      if ($env{'form.recdom'}) { $defdom=$env{'form.recdom'}; }
       $r->print(      if ($env{'form.text'}) { $dismsg=$env{'form.text'}; }
       if ($env{'form.subject'}) { $dissub=$env{'form.subject'}; }
       $r->print(
                 '<form action="/adm/email"  name="compemail" method="post"'.                  '<form action="/adm/email"  name="compemail" method="post"'.
                 ' enctype="multipart/form-data">'."\n".                  ' enctype="multipart/form-data">'."\n".
                 '<input type="hidden" name="sendmail" value="on" />'."\n".                  '<input type="hidden" name="sendmail" value="on" />'."\n".
Line 979  ENDUPLOAD Line 867  ENDUPLOAD
     }      }
     if ($broadcast eq 'group') {      if ($broadcast eq 'group') {
        &discourse($r);         &discourse($r);
          my $studentsel = &discourse();
          $r->print($studentsel);
     }      }
     $r->print('</form>'.      $r->print('</form>'.
       &Apache::lonfeedback::generate_preview_button('compemail','message').        &Apache::lonfeedback::generate_preview_button('compemail','message').
Line 1357  END Line 1247  END
   
  my ($setuname,$setudom,$title) =    my ($setuname,$setudom,$title) = 
     &parse_block_record($$records{$record});      &parse_block_record($$records{$record});
  $title = &HTML::Entities::encode($title,'"<>');   $title = &HTML::Entities::encode($title,'"<>&');
         my $settername = &Apache::loncommon::plainname($setuname,$setudom);          my $settername = &Apache::loncommon::plainname($setuname,$setudom);
         $r->print(&Apache::loncommon::start_data_table_row());          $r->print(&Apache::loncommon::start_data_table_row());
         $r->print(<<"END");          $r->print(<<"END");
Line 1657  sub header { Line 1547  sub header {
     $r->print(&Apache::loncommon::start_page('Communication and Messages',      $r->print(&Apache::loncommon::start_page('Communication and Messages',
      $extra));       $extra));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs      $r->print(&Apache::lonhtmlcommon::breadcrumbs
       (undef,($title?$title:'Communication and Messages')));        (($title?$title:'Communication and Messages')));
   
 }  }
   
Line 1734  sub sendoffmail { Line 1624  sub sendoffmail {
     &statuschange($msgid,'replied',$folder);      &statuschange($msgid,'replied',$folder);
  }   }
   
    my $to = $env{'form.selectedusers.forminput'};
    my $mode = $env{'form.sendmode'};
   
  my %toaddr;   my %toaddr;
  if ($env{'form.sendmode'} eq 'group') {   if ($to) {
     foreach my $address (keys(%env)) {      foreach my $dest (@$to) {
  if ($address=~/^form\.send\_to\_\&\&\&[^\&]*\&\&\&\_(.+)$/) {   my ($user,$domain) = split(/:/, $dest);
     $toaddr{$1}='';   if (($user ne '') && ($domain ne '')) {
       my $address = $user.":".$domain; # How the code below expects it.
       $toaddr{$address} = '';
  }   }
     }      }
    }
   
    if ($env{'form.sendmode'} eq 'group') {
        foreach my $address (keys(%env)) {
    if ($address=~/^form\.send\_to\_\&\&\&[^\&]*\&\&\&\_(.+)$/) {
       $toaddr{$1}='';
    }
       }
  } elsif ($env{'form.sendmode'} eq 'upload') {   } elsif ($env{'form.sendmode'} eq 'upload') {
     foreach my $line (split(/[\n\r\f]+/,$env{'form.upfile'})) {      foreach my $line (split(/[\n\r\f]+/,$env{'form.upfile'})) {
  my ($rec,$txt)=split(/\s*\:\s*/,$line);   my ($rec,$txt)=split(/\s*\:\s*/,$line);
Line 1750  sub sendoffmail { Line 1653  sub sendoffmail {
  }   }
     }      }
  } else {   } else {
     $toaddr{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';      if (($env{'form.recuname'} ne '') && ($env{'form.recdomain'} ne '')) {
    $toaddr{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';
       }
  }   }
  if ($env{'form.additionalrec'}) {   if ($env{'form.additionalrec'}) {
     foreach (split(/\,/,$env{'form.additionalrec'})) {      foreach (split(/\,/,$env{'form.additionalrec'})) {
  my ($auname,$audom)=split(/\@/,$_);   my ($auname,$audom)=split(/\@/,$_);
  $toaddr{$auname.':'.$audom}='';   if (($auname ne "") && ($audom ne "")) {
       $toaddr{$auname.':'.$audom}='';
    }
     }      }
  }   }
   
Line 1884  sub sendoffmail { Line 1791  sub sendoffmail {
  }   }
     } else {      } else {
  $r->print('<p><span class="LC_error">'.&mt('Could not deliver message').'</span> '.   $r->print('<p><span class="LC_error">'.&mt('Could not deliver message').'</span> '.
   &mt('Please use the browser "Back" button and correct the recipient addresses').'</p>');    &mt('Please use the browser "Back" button and correct the recipient addresses '."($sendstatus)").'</p>');
     }      }
 }  }
   
Line 1905  sub handler { Line 1812  sub handler {
         ['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',
  'showcommentbaseurl','dismode','group']);   'showcommentbaseurl','dismode','group','subject','text']);
     $sqs='&sortedby='.$env{'form.sortedby'};      $sqs='&sortedby='.$env{'form.sortedby'};
   
 # ------------------------------------------------------ They checked for email  # ------------------------------------------------------ They checked for email

Removed from v.1.20  
changed lines
  Added in v.1.27


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