Diff for /loncom/interface/lonmsgdisplay.pm between versions 1.19 and 1.25

version 1.19, 2006/04/26 14:43:03 version 1.25, 2006/05/17 09:46:01
Line 28 Line 28
   
   
 package Apache::lonmsgdisplay;  package Apache::lonmsgdisplay;
   use     Apache::lonselstudent;
   
 =pod  =pod
   
Line 259  sub movemsg { Line 260  sub movemsg {
 # ======================================================= Display a course list  # ======================================================= Display a course list
   
 sub discourse {  sub discourse {
       my $result;
       my ($course_personnel,
    $current_members,
    $expired_members,
    $future_members) = &Apache::lonselstudent::get_people_in_class();
       unshift @$current_members, (@$course_personnel);
       my %defaultUsers;
   
       $result = &Apache::lonselstudent::render_student_list($current_members,
     "compemail",
     "current",
     \%defaultUsers,
     1,"selectedusers",1);
   
       return $result;
   }
   
   # --------------------------------- No longer needed ..old display course list.
   sub discourse_obsolete {
     my $r=shift;      my $r=shift;
     my $classlist = &Apache::loncoursedata::get_classlist();      my ($classlist,$keylist) = &Apache::loncoursedata::get_classlist();
     my $now=time;      my ($classgroups,$studentgroups) = 
    &Apache::loncoursedata::get_group_memberships($classlist,$keylist);
     my %lt=&Apache::lonlocal::texthash('cfa' => 'Check All',      my %lt=&Apache::lonlocal::texthash('cfa' => 'Check All',
             'cfs' => 'Check Section/Group',              'cfs' => 'Check Section/Group',
             'cfn' => 'Uncheck All');              'cfn' => 'Uncheck All');
       if (defined($env{'form.group'})) {
           $r->print('<input type="hidden" name="group" value="'.
                     $env{'form.group'}.'" />'."\n");
       }
     $r->print(<<ENDDISHEADER);      $r->print(<<ENDDISHEADER);
 <input type="hidden" name="sendmode" value="group" />  <input type="hidden" name="sendmode" value="group" />
 <script pe="text/javascript">  <script pe="text/javascript">
Line 284  sub discourse { Line 309  sub discourse {
            ('send_to_&&&'+document.forms.compemail.chksec.value+'&&&')==0) {             ('send_to_&&&'+document.forms.compemail.chksec.value+'&&&')==0) {
       document.forms.compemail.elements[i].checked=true;        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;
               }
         }          }
     }      }
   
Line 298  sub discourse { Line 329  sub discourse {
 </script>  </script>
 <input type="button" onClick="checkall()" value="$lt{'cfa'}" />&nbsp;  <input type="button" onClick="checkall()" value="$lt{'cfa'}" />&nbsp;
 <input type="button" onClick="checksec()" value="$lt{'cfs'}" />  <input type="button" onClick="checksec()" value="$lt{'cfs'}" />
 <input type="text" size="5" name="chksec" />&nbsp;  <input type="text" size="15" name="chksec" value="$env{'form.group'}" />&nbsp;
 <input type="button" onClick="uncheckall()" value="$lt{'cfn'}" />  <input type="button" onClick="uncheckall()" value="$lt{'cfn'}" />
 <p>  <p>
 ENDDISHEADER  ENDDISHEADER
     my %coursepersonnel=&Apache::lonnet::get_course_adv_roles();      my %coursepersonnel=&Apache::lonnet::get_course_adv_roles();
     $r->print('<table>');      $r->print(&Apache::loncommon::start_data_table());
     foreach my $role (sort keys %coursepersonnel) {      if (keys(%coursepersonnel) > 0) {
         foreach (split(/\,/,$coursepersonnel{$role})) {          $r->print('<h3>Non-students</h3>');
             my ($puname,$pudom)=split(/\:/,$_);          $r->print(&Apache::loncommon::start_data_table());
             $r->print('<tr><td><label>'.          $r->print('<tr><th>Name</th><th>Username:Domain</th><th>Role</th></tr>');
                       '<input type="checkbox" name="send_to_&&&&&&_'.          foreach my $role (sort(keys(%coursepersonnel))) {
                       $puname.':'.$pudom.'" /> '.              foreach my $user (split(/\,/,$coursepersonnel{$role})) {
                       &Apache::loncommon::plainname($puname,$pudom).                  my ($puname,$pudom)=split(/\:/,$user);
                       '</label></td>'.                  $r->print(&Apache::loncommon::start_data_table_row());
                       '<td>('.$_.'),</td><td><i>'.$role.'</i></td></tr>');                  $r->print('<td><label>'.
         }                            '<input type="checkbox" name="send_to_&&&&&&_'.
     }                            $puname.':'.$pudom.'" /> '.
     $r->print('</table><table>');                            &Apache::loncommon::plainname($puname,$pudom).
     my $sort = sub {                            '</label></td>'.
  my $aname=lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]);                            '<td>('.$user.'),</td><td><i>'.$role.'</i></td>');
  if (!$aname) { $aname=$a; }                  $r->print(&Apache::loncommon::end_data_table_row());
  my $bname=lc($classlist->{$b}[&Apache::loncoursedata::CL_FULLNAME()]);              }
  if (!$bname) { $bname=$b; }          }
  return $aname cmp $bname;          $r->print(&Apache::loncommon::end_data_table());
     };      }
     foreach my $student (sort $sort (keys(%{$classlist}))) {      if (keys(%{$classlist}) > 0) {
  my $info=$classlist->{$student};          $r->print('<h3>Students</h3>');
         my ($sname,$sdom,$status,$fullname,$section) =          $r->print(&Apache::loncommon::start_data_table());
             (@{$info}[&Apache::loncoursedata::CL_SNAME(),          $r->print('<tr><th>Name</th><th>Username:Domain</th><th>Section</th><th>Groups</th></tr>');
                       &Apache::loncoursedata::CL_SDOM(),          my $sort = sub {
                       &Apache::loncoursedata::CL_STATUS(),      my $aname=lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]);
                       &Apache::loncoursedata::CL_FULLNAME(),      if (!$aname) { $aname=$a; }
                       &Apache::loncoursedata::CL_SECTION()]);      my $bname=lc($classlist->{$b}[&Apache::loncoursedata::CL_FULLNAME()]);
         next if ($status ne 'Active');      if (!$bname) { $bname=$b; }
  next if ($env{'request.course.sec'} &&      return $aname cmp $bname;
  $section ne $env{'request.course.sec'});          };
         my $key = 'send_to_&&&'.$section.'&&&_'.$student;          foreach my $student (sort $sort (keys(%{$classlist}))) {
         if (! defined($fullname) || $fullname eq '') { $fullname = $sname; }      my $info=$classlist->{$student};
         $r->print('<tr><td><label>'.              my ($sname,$sdom,$status,$fullname,$section) =
                   qq{<input type="checkbox" name="$key" />}.('&nbsp;'x2).                  (@{$info}[&Apache::loncoursedata::CL_SNAME(),
                   $fullname.'</label></td><td>'.$sname.':'.$sdom.'</td><td>'.$section.                            &Apache::loncoursedata::CL_SDOM(),
                   '</td></tr>');                            &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());
     }      }
     $r->print('</table>');  
 }  }
   
 # ==================================================== Display Critical Message  # ==================================================== Display Critical Message
Line 857  sub compout { Line 921  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 932  ENDUPLOAD Line 998  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 1310  END Line 1378  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 1610  sub header { Line 1678  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 1687  sub sendoffmail { Line 1755  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 1703  sub sendoffmail { Line 1784  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 1837  sub sendoffmail { Line 1922  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 1858  sub handler { Line 1943  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']);   '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.19  
changed lines
  Added in v.1.25


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