--- loncom/interface/lonmsgdisplay.pm 2006/05/01 05:57:26 1.20
+++ loncom/interface/lonmsgdisplay.pm 2006/05/17 09:46:01 1.25
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.20 2006/05/01 05:57:26 raeburn Exp $
+# $Id: lonmsgdisplay.pm,v 1.25 2006/05/17 09:46:01 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -28,6 +28,7 @@
package Apache::lonmsgdisplay;
+use Apache::lonselstudent;
=pod
@@ -259,10 +260,29 @@ sub movemsg {
# ======================================================= Display a course list
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 $classlist = &Apache::loncoursedata::get_classlist();
+ my ($classlist,$keylist) = &Apache::loncoursedata::get_classlist();
my ($classgroups,$studentgroups) =
- &Apache::loncoursedata::get_group_memberships($classlist);
+ &Apache::loncoursedata::get_group_memberships($classlist,$keylist);
my %lt=&Apache::lonlocal::texthash('cfa' => 'Check All',
'cfs' => 'Check Section/Group',
'cfn' => 'Uncheck All');
@@ -318,19 +338,17 @@ ENDDISHEADER
if (keys(%coursepersonnel) > 0) {
$r->print('
Non-students
');
$r->print(&Apache::loncommon::start_data_table());
- $r->print(&Apache::loncommon::start_data_table_row());
- $r->print('Name | Username:Domain | Role | ');
- $r->print(&Apache::loncommon::end_data_table_row());
- foreach my $role (sort keys %coursepersonnel) {
- foreach (split(/\,/,$coursepersonnel{$role})) {
- my ($puname,$pudom)=split(/\:/,$_);
+ $r->print('Name | Username:Domain | Role |
');
+ foreach my $role (sort(keys(%coursepersonnel))) {
+ foreach my $user (split(/\,/,$coursepersonnel{$role})) {
+ my ($puname,$pudom)=split(/\:/,$user);
$r->print(&Apache::loncommon::start_data_table_row());
$r->print(' | '.
- '('.$_.'), | '.$role.' | ');
+ '('.$user.'), | '.$role.' | ');
$r->print(&Apache::loncommon::end_data_table_row());
}
}
@@ -339,9 +357,7 @@ ENDDISHEADER
if (keys(%{$classlist}) > 0) {
$r->print('Students
');
$r->print(&Apache::loncommon::start_data_table());
- $r->print(&Apache::loncommon::start_data_table_row());
- $r->print('Name | Username:Domain | Section | Groups | ');
- $r->print(&Apache::loncommon::end_data_table_row());
+ $r->print('Name | Username:Domain | Section | Groups |
');
my $sort = sub {
my $aname=lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]);
if (!$aname) { $aname=$a; }
@@ -360,8 +376,9 @@ ENDDISHEADER
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 @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;}
@@ -377,7 +394,7 @@ ENDDISHEADER
$groupcount.'" />');
if (defined($env{'form.group'})) {
if ($env{'form.group'} eq $group) {
- $checked = 'checked=checked';
+ $checked = 'checked="checked"';
}
}
}
@@ -904,7 +921,9 @@ sub compout {
}
my $citation=&displayresource(%content);
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(
''.
&Apache::lonfeedback::generate_preview_button('compemail','message').
@@ -1357,7 +1378,7 @@ END
my ($setuname,$setudom,$title) =
&parse_block_record($$records{$record});
- $title = &HTML::Entities::encode($title,'"<>');
+ $title = &HTML::Entities::encode($title,'"<>&');
my $settername = &Apache::loncommon::plainname($setuname,$setudom);
$r->print(&Apache::loncommon::start_data_table_row());
$r->print(<<"END");
@@ -1657,7 +1678,7 @@ sub header {
$r->print(&Apache::loncommon::start_page('Communication and Messages',
$extra));
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,($title?$title:'Communication and Messages')));
+ (($title?$title:'Communication and Messages')));
}
@@ -1734,13 +1755,26 @@ sub sendoffmail {
&statuschange($msgid,'replied',$folder);
}
+ my $to = $env{'form.selectedusers.forminput'};
+ my $mode = $env{'form.sendmode'};
+
my %toaddr;
- if ($env{'form.sendmode'} eq 'group') {
- foreach my $address (keys(%env)) {
- if ($address=~/^form\.send\_to\_\&\&\&[^\&]*\&\&\&\_(.+)$/) {
- $toaddr{$1}='';
+ if ($to) {
+ foreach my $dest (@$to) {
+ my ($user,$domain) = split /:/, $dest;
+ 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') {
foreach my $line (split(/[\n\r\f]+/,$env{'form.upfile'})) {
my ($rec,$txt)=split(/\s*\:\s*/,$line);
@@ -1750,12 +1784,16 @@ sub sendoffmail {
}
}
} 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'}) {
foreach (split(/\,/,$env{'form.additionalrec'})) {
my ($auname,$audom)=split(/\@/,$_);
- $toaddr{$auname.':'.$audom}='';
+ if (($auname ne "") && ($audom ne "")) {
+ $toaddr{$auname.':'.$audom}='';
+ }
}
}
@@ -1884,7 +1922,7 @@ sub sendoffmail {
}
} else {
$r->print(''.&mt('Could not deliver message').' '.
- &mt('Please use the browser "Back" button and correct the recipient addresses').'
');
+ &mt('Please use the browser "Back" button and correct the recipient addresses '."($sendstatus)").'');
}
}
@@ -1905,7 +1943,7 @@ sub handler {
['display','replyto','forward','markread','markdel','markunread',
'sendreply','compose','sendmail','critical','recname','recdom',
'recordftf','sortedby','block','folder','startdis','interdis',
- 'showcommentbaseurl','dismode','group']);
+ 'showcommentbaseurl','dismode','group','subject','text']);
$sqs='&sortedby='.$env{'form.sortedby'};
# ------------------------------------------------------ They checked for email