version 1.24, 2006/10/12 22:47:31
|
version 1.41, 2014/12/11 13:15:35
|
Line 1
|
Line 1
|
|
# The LearningOnline Network with CAPA |
|
# Sending messages |
|
# |
|
# $Id$ |
# |
# |
# Copyright Michigan State University Board of Trustees |
# Copyright Michigan State University Board of Trustees |
# |
# |
Line 114 sub start_page {
|
Line 118 sub start_page {
|
$start_page |
$start_page |
$breadcrumbs |
$breadcrumbs |
<br /> |
<br /> |
<form name="$formname" method="POST"> |
<form name="$formname" method="post" action=""> |
ENDONE |
ENDONE |
|
|
return $output; |
return $output; |
Line 139 function next_page(caller) {
|
Line 143 function next_page(caller) {
|
} |
} |
|; |
|; |
|
|
my $output = &start_page(&add_script($jscript), |
|
'Broadcast e-mail to Domain', $formname); |
|
|
|
$output .= '<input type="hidden" name="command" />'; |
|
$output .= '<table class="LC_notify_front_page">'. |
|
'<tr><td><a href="javascript:next_page('."'new'".')">'. |
|
'Send a new e-mail message to selected users from this domain</a></td></tr><tr>'. |
|
'<td><a href="javascript:next_page('."'view'".')">'. |
|
'Display e-mail sent by Domain Coordinators in this domain'. |
|
'</a></td></tr></table>'; |
|
$output .= &end_page(); |
|
|
|
$r->print($output); |
my @menu= |
|
({ categorytitle=>'Broadcast e-mail to Domain', |
|
items =>[ |
|
{ linktext => 'Send e-mail to selected users', |
|
url => 'javascript:next_page('."'new'".')', |
|
permission => 1, |
|
#help => '', |
|
icon => 'mail-reply-all.png', |
|
linktitle => 'Send a new e-mail to selected users from this domain' |
|
}, |
|
{ linktext => 'Display sent e-mails', |
|
url => 'javascript:next_page('."'view'".')', |
|
permission => 1, |
|
#help => '', |
|
icon => 'messalog.png', |
|
linktitle => 'Display e-mail sent by Domain Coordinators in this domain' |
|
}, |
|
] |
|
}, |
|
); |
|
|
|
$r->print( |
|
&start_page(&add_script($jscript), |
|
'Broadcast e-mail to Domain', $formname) |
|
.'<input type="hidden" name="command" />' |
|
.&Apache::lonhtmlcommon::generate_menu(@menu) |
|
.&end_page() |
|
); |
return; |
return; |
} |
} |
|
|
Line 160 sub print_display_option_form {
|
Line 180 sub print_display_option_form {
|
&Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"}); |
&Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"}); |
|
|
my $cmd = 'display'; |
my $cmd = 'display'; |
my $submit_text = 'Display e-mail'; |
my $submit_text = &mt('Display e-mail'); |
my @roles = ('dc'); |
my @roles = ('dc'); |
my $now = time; |
my $now = time; |
|
|
Line 200 sub print_display_option_form {
|
Line 220 sub print_display_option_form {
|
$output .= &Apache::lonhtmlcommon::row_title(&mt('Choose sender(s)')); |
$output .= &Apache::lonhtmlcommon::row_title(&mt('Choose sender(s)')); |
my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles); |
my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles); |
my @domcc = (); |
my @domcc = (); |
foreach my $server (keys %personnel) { |
foreach my $server (keys(%personnel)) { |
foreach my $user (sort(keys %{$personnel{$server}})) { |
foreach my $user (sort(keys(%{$personnel{$server}}))) { |
my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user); |
my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user); |
unless (grep/^$uname:$udom$/,@domcc) { |
unless (grep/^$uname:$udom$/,@domcc) { |
my %userinfo = &Apache::lonnet::get('environment',['lastname','firstname'],$udom,$uname); |
my %userinfo = &Apache::lonnet::get('environment',['lastname','firstname'],$udom,$uname); |
$output .= '<input type="checkbox" name="sender" value="'.$uname.':'.$udom.'" /> '.$userinfo{firstname}.' '.$userinfo{lastname}.' ('.$uname.':'.$udom.')'; |
$output .= '<input type="checkbox" name="sender" value="'.$uname.':'.$udom.'" /> '.$userinfo{'firstname'}.' '.$userinfo{'lastname'}.' ('.$uname.':'.$udom.')'; |
push (@domcc,$uname.':'.$udom); |
push (@domcc,$uname.':'.$udom); |
} |
} |
} |
} |
Line 266 ENDSCRIPT
|
Line 286 ENDSCRIPT
|
$output .= &Apache::loncommon::start_data_table(); |
$output .= &Apache::loncommon::start_data_table(); |
if ($msgcount > 0) { |
if ($msgcount > 0) { |
$output .= &Apache::loncommon::start_data_table_header_row(). |
$output .= &Apache::loncommon::start_data_table_header_row(). |
'<th><a href="javascript:changeSort(\'date\')">Date</a></th>'. |
'<th><a href="javascript:changeSort(\'date\')">'.&mt('Date').'</a></th>'. |
'<th><a href="javascript:changeSort(\'subject\')">Subject</a></th>'. |
'<th><a href="javascript:changeSort(\'subject\')">'.&mt('Subject').'</a></th>'. |
'<th><a href="javascript:changeSort(\'sender\')">Sender</a></th>'. |
'<th><a href="javascript:changeSort(\'sender\')">'.&mt('Sender').'</a></th>'. |
'<th><a href="javascript:changeSort(\'message\')">Message</a></th>'. |
'<th><a href="javascript:changeSort(\'message\')">'.&mt('Message').'</a></th>'. |
'<th><a href="javascript:changeSort(\'recipients\')">Recipients</a></th>'. |
'<th><a href="javascript:changeSort(\'recipients\')">'.&mt('Recipients').'</a></th>'. |
&Apache::loncommon::end_data_table_header_row(); |
&Apache::loncommon::end_data_table_header_row(); |
|
|
if (($env{'form.sortby'} eq 'date') || ($env{'form.sortby'} eq '') || (!defined($env{'form.sortby'})) || (($env{'form.sortby'} eq 'sender') && (@senders <= 1))) { |
if (($env{'form.sortby'} eq 'date') || ($env{'form.sortby'} eq '') || (!defined($env{'form.sortby'})) || (($env{'form.sortby'} eq 'sender') && (@senders <= 1))) { |
Line 337 ENDSCRIPT
|
Line 357 ENDSCRIPT
|
} |
} |
} else { |
} else { |
$output .= &Apache::loncommon::start_data_table_empty_row(). |
$output .= &Apache::loncommon::start_data_table_empty_row(). |
'<td>No mail sent matching supplied criteria</td>'. |
'<td>'.&mt('No mail sent matching supplied criteria').'</td>'. |
&Apache::loncommon::end_data_table_empty_row(); |
&Apache::loncommon::end_data_table_empty_row(); |
} |
} |
$output .= &Apache::loncommon::end_data_table(); |
$output .= &Apache::loncommon::end_data_table(); |
Line 374 sub print_selection_form {
|
Line 394 sub print_selection_form {
|
'buil' => 'Building valid e-mail address from username, if missing from preferences:', |
'buil' => 'Building valid e-mail address from username, if missing from preferences:', |
'kerb' => 'Kerberos: enter default for each realm used in the domain, with comma separation of entries', |
'kerb' => 'Kerberos: enter default for each realm used in the domain, with comma separation of entries', |
'infs' => 'Internal, Filesystem and Local authentication: enter single default.', |
'infs' => 'Internal, Filesystem and Local authentication: enter single default.', |
'comp' => 'Compose Message' |
'comp' => 'Compose E-mail' |
); |
); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({text=>"Select Audience"}); |
({text=>"Select Audience"}); |
Line 393 sub print_selection_form {
|
Line 413 sub print_selection_form {
|
$jscript .= &Apache::courseclassifier::javascript_code_selections($formname,@codetitles); |
$jscript .= &Apache::courseclassifier::javascript_code_selections($formname,@codetitles); |
} |
} |
} |
} |
|
my @standardnames = &Apache::loncommon::get_standard_codeitems(); |
|
|
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom); |
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom); |
|
|
Line 406 sub print_selection_form {
|
Line 427 sub print_selection_form {
|
internal => 'text', |
internal => 'text', |
krb4 => 'text', |
krb4 => 'text', |
krb5 => 'text', |
krb5 => 'text', |
local => 'text', |
localauth => 'text', |
unix => 'text', |
unix => 'text', |
); |
); |
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
Line 416 function setCourseCat(formname) {
|
Line 437 function setCourseCat(formname) {
|
if (formname.Year.options[formname.Year.selectedIndex].value == -1) { |
if (formname.Year.options[formname.Year.selectedIndex].value == -1) { |
return; |
return; |
} |
} |
courseSet('Year'); |
courseSet('$codetitles[0]'); |
for (var j=0; j<formname.Semester.length; j++) { |
for (var j=0; j<formname.Semester.length; j++) { |
if (formname.Semester.options[j].value == "$env{'form.Semester'}") { |
if (formname.Semester.options[j].value == "$env{'form.Semester'}") { |
formname.Semester.options[j].selected = true; |
formname.Semester.options[j].selected = true; |
Line 425 function setCourseCat(formname) {
|
Line 446 function setCourseCat(formname) {
|
if (formname.Semester.options[formname.Semester.selectedIndex].value == -1) { |
if (formname.Semester.options[formname.Semester.selectedIndex].value == -1) { |
return; |
return; |
} |
} |
courseSet('Semester'); |
courseSet('$codetitles[1]'); |
for (var j=0; j<formname.Department.length; j++) { |
for (var j=0; j<formname.Department.length; j++) { |
if (formname.Department.options[j].value == "$env{'form.Department'}") { |
if (formname.Department.options[j].value == "$env{'form.Department'}") { |
formname.Department.options[j].selected = true; |
formname.Department.options[j].selected = true; |
Line 434 function setCourseCat(formname) {
|
Line 455 function setCourseCat(formname) {
|
if (formname.Department.options[formname.Department.selectedIndex].value == -1) { |
if (formname.Department.options[formname.Department.selectedIndex].value == -1) { |
return; |
return; |
} |
} |
courseSet('Department'); |
courseSet('$codetitles[2]'); |
for (var j=0; j<formname.Number.length; j++) { |
for (var j=0; j<formname.Number.length; j++) { |
if (formname.Number.options[j].value == "$env{'form.Number'}") { |
if (formname.Number.options[j].value == "$env{'form.Number'}") { |
formname.Number.options[j].selected = true; |
formname.Number.options[j].selected = true; |
Line 460 function setCourseCat(formname) {
|
Line 481 function setCourseCat(formname) {
|
</ul>'."\n"; |
</ul>'."\n"; |
my $submit_text = $lt{'comp'}; |
my $submit_text = $lt{'comp'}; |
my $cmd = 'compose'; |
my $cmd = 'compose'; |
$output .= &Apache::lonhtmlcommon::role_select_row(\@roles,'Roles'); |
$output .= &Apache::lonhtmlcommon::role_select_row(\@roles,&mt('Roles')); |
$output .= &Apache::lonhtmlcommon::course_select_row('Courses',$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles); |
$output .= &Apache::lonhtmlcommon::course_select_row(&mt('Courses'),$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles,undef,undef,\@standardnames); |
$output .= &Apache::lonhtmlcommon::status_select_row(\%longtypes,&mt('Access status')); |
$output .= &Apache::lonhtmlcommon::status_select_row(\%longtypes,&mt('Access status')); |
$output .= &Apache::lonhtmlcommon::email_default_row(\%authtypes,&mt('Username -> Email conversion'),$descrip); |
$output .= &Apache::lonhtmlcommon::email_default_row(\%authtypes,&mt('Username -> E-mail conversion'),$descrip); |
$output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),$cmd,$submit_text); |
$output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),$cmd,$submit_text); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &end_page(); |
$output .= &end_page(); |
Line 476 sub print_composition_form {
|
Line 497 sub print_composition_form {
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:goBack('pick_target')", |
({href=>"javascript:goBack('pick_target')", |
text=>"Select Audience"}, |
text=>"Select Audience"}, |
{text=>"Compose Message"}); |
{text=>"Compose E-mail"}); |
my $jscript = &Apache::loncommon::check_uncheck_jscript(); |
my $jscript = &Apache::loncommon::check_uncheck_jscript(); |
$jscript .= qq| |
$jscript .= qq| |
function goBack(target) { |
function goBack(target) { |
Line 501 function goBack(target) {
|
Line 522 function goBack(target) {
|
'Broadcast e-mail to users', $formname)); |
'Broadcast e-mail to users', $formname)); |
|
|
my $coursefilter = $env{'form.coursepick'}; |
my $coursefilter = $env{'form.coursepick'}; |
my %courses = (); |
my %courses; |
if ($coursefilter eq 'all') { |
if ($coursefilter eq 'all') { |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.', |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.', |
undef,undef,'Course'); |
undef,undef,'Course'); |
} elsif ($coursefilter eq 'category') { |
} elsif ($coursefilter eq 'category') { |
my $instcode = ''; |
my $instcode = &Apache::courseclassifier::instcode_from_selectors($cdom); |
my @cats = ('Semester','Year','Department','Number'); |
my $regexp = ''; |
foreach my $category (@cats) { |
|
if (defined($env{'form.'.$category})) { |
|
unless ($env{'form.'.$category} eq '-1') { |
|
$instcode .= $env{'form.'.$category}; |
|
} |
|
} |
|
} |
|
if ($instcode eq '') { |
if ($instcode eq '') { |
$instcode = '.'; |
$instcode = '.'; |
|
} else { |
|
$regexp = 1; |
} |
} |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.', |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.', |
undef,undef,'Course'); |
undef,undef,'Course',$regexp); |
} elsif ($coursefilter eq 'specific') { |
} elsif ($coursefilter eq 'specific') { |
if ($env{'form.coursetotal'} > 1) { |
if ($env{'form.coursetotal'} > 1) { |
my @course_ids = split(/&&/,$env{'form.courselist'}); |
my @course_ids = split(/&&/,$env{'form.courselist'}); |
foreach (@course_ids) { |
foreach my $cid (@course_ids) { |
$courses{$_} = ''; |
$courses{$cid} = ''; |
} |
} |
} else { |
} else { |
$courses{$env{'form.courselist'}} = ''; |
$courses{$env{'form.courselist'}} = ''; |
Line 577 function goBack(target) {
|
Line 593 function goBack(target) {
|
$access{$type} = $type; |
$access{$type} = $type; |
} |
} |
foreach my $course_id (keys(%courses)) { |
foreach my $course_id (keys(%courses)) { |
my ($cdom,$cnum) = split(/_/,$course_id); |
my %coursehash = |
|
&Apache::lonnet::coursedescription($course_id,{'one_time' => 1}); |
|
my $cdom = $coursehash{'domain'}; |
|
my $cnum = $coursehash{'num'}; |
&Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users); |
&Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users); |
} |
} |
foreach my $role (keys(%users)) { |
foreach my $role (keys(%users)) { |
Line 626 function goBack(target) {
|
Line 645 function goBack(target) {
|
$output .= &Apache::loncommon::end_data_table(); |
$output .= &Apache::loncommon::end_data_table(); |
if (@unmatched) { |
if (@unmatched) { |
$output .= '<br /><br />'.&mt('Could not determine e-mail addresses for the following users:').'<ul>'; |
$output .= '<br /><br />'.&mt('Could not determine e-mail addresses for the following users:').'<ul>'; |
foreach my $username (sort @unmatched) { |
foreach my $username (sort(@unmatched)) { |
$output .= '<li>'.$username.'</li>'; |
$output .= '<li>'.$username.'</li>'; |
} |
} |
$output .= '</ul>'; |
$output .= '</ul>'; |
Line 635 function goBack(target) {
|
Line 654 function goBack(target) {
|
$output .= &Apache::lonhtmlcommon::row_title(&mt('Sender e-mail address')); |
$output .= &Apache::lonhtmlcommon::row_title(&mt('Sender e-mail address')); |
$output .= '<input type="text" name="sender" value="'.$sender.'" />'; |
$output .= '<input type="text" name="sender" value="'.$sender.'" />'; |
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),'process',&mt('Send Message')); |
$output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),'process',&mt('Send')); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
} else { |
} else { |
$output .= $lt{'nore'}."\n". |
$output .= $lt{'nore'}."\n". |
Line 667 ENDSCRIPT
|
Line 686 ENDSCRIPT
|
text=>"Select audience"}); |
text=>"Select audience"}); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:goBack('compose')", |
({href=>"javascript:goBack('compose')", |
text=>"Compose Message"}); |
text=>"Compose E-mail"}); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/notify?command=process", |
({href=>"/adm/notify?command=process", |
text=>"Outcome"}); |
text=>"Outcome"}); |
Line 686 ENDSCRIPT
|
Line 705 ENDSCRIPT
|
'<th>'.&mt('Status').'</th>'. |
'<th>'.&mt('Status').'</th>'. |
'<th>'.&mt('Subject').'</th>'. |
'<th>'.&mt('Subject').'</th>'. |
'<th>'.&mt('Message').'</th>'. |
'<th>'.&mt('Message').'</th>'. |
'<th>'.&mt('Recipents').'</th>'. |
'<th>'.&mt('Recipients').'</th>'. |
&Apache::loncommon::end_data_table_header_row(); |
&Apache::loncommon::end_data_table_header_row(); |
$output .= &Apache::loncommon::start_data_table_row(). |
$output .= &Apache::loncommon::start_data_table_row(). |
'<td valign="middle">'.&mt('Sent').'</td>'. |
'<td valign="middle">'.&mt('Sent').'</td>'. |
Line 701 ENDSCRIPT
|
Line 720 ENDSCRIPT
|
&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table(); |
&Apache::loncommon::end_data_table(); |
} else { |
} else { |
$output .= 'No mail sent - no recipients identified'; |
$output .= &mt('No mail sent - no recipients identified'); |
} |
} |
$output .= '<br /><a href="/adm/notify">Send another message?</a>'."\n"; |
$output .= '<br /><a href="/adm/notify">'.&mt('Send another e-mail').'</a>'."\n"; |
$output .= '<input type="hidden" name="command" />'."\n". |
$output .= '<input type="hidden" name="command" />'."\n". |
'<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; |
'<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; |
$output .= &Apache::lonhtmlcommon::echo_form_input(['command','origin']); |
$output .= &Apache::lonhtmlcommon::echo_form_input(['command','origin']); |
Line 723 sub broadcast_email {
|
Line 742 sub broadcast_email {
|
$msg->to($to); |
$msg->to($to); |
$msg->subject($subject); |
$msg->subject($subject); |
$msg->add('From',"$from"); |
$msg->add('From',"$from"); |
|
$msg->add('Content-type','text/plain; charset=UTF-8'); |
if (my $fh = $msg->open()) { |
if (my $fh = $msg->open()) { |
print $fh $message; |
print $fh $message; |
$fh->close; |
$fh->close; |
Line 735 sub get_user_info {
|
Line 755 sub get_user_info {
|
my ($user,%email_defaults) = @_; |
my ($user,%email_defaults) = @_; |
my ($uname,$udom) = split(/:/,$user); |
my ($uname,$udom) = split(/:/,$user); |
my @emailtypes = ('permanentemail','critnotification','notification'); |
my @emailtypes = ('permanentemail','critnotification','notification'); |
my %userinfo = &Apache::lonnet::get('environment',\@emailtypes,$udom,$uname); |
my %userinfo = &Apache::loncommon::getemails($uname,$udom); |
my $email = ''; |
my $email = ''; |
foreach my $type (@emailtypes) { |
foreach my $type (@emailtypes) { |
$email = $userinfo{$type}; |
$email = $userinfo{$type}; |
Line 762 sub get_user_info {
|
Line 782 sub get_user_info {
|
sub form_elements { |
sub form_elements { |
my ($longtypes,$authtypes) = @_; |
my ($longtypes,$authtypes) = @_; |
%{$longtypes} = ( |
%{$longtypes} = ( |
active => 'Currently has access', |
active => &mt('Currently has access'), |
previous => 'Previously had access', |
previous => &mt('Previously had access'), |
future => 'Will have future access', |
future => &mt('Will have future access'), |
); |
); |
%{$authtypes} = ( |
%{$authtypes} = ( |
krb4 => 'Kerberos 4', |
krb4 => 'Kerberos 4', |
krb5 => 'Kerberos 5', |
krb5 => 'Kerberos 5', |
internal => 'Internal (LON-CAPA)', |
internal => 'Internal (LON-CAPA)', |
unix => 'Filesystem (UNIX)', |
unix => 'Filesystem (UNIX)', |
local => 'Local/Customized', |
localauth => 'Local/Customized', |
); |
); |
return; |
return; |
} |
} |
Line 783 sub store_mail {
|
Line 803 sub store_mail {
|
$attachmenturl,$recipients,undef,undef,'dcmail'); |
$attachmenturl,$recipients,undef,undef,'dcmail'); |
|
|
# Store in dc email db files on primary library server for domain. |
# Store in dc email db files on primary library server for domain. |
my $server = $Apache::lonnet::domain_primary{$domain}; |
my $server = &Apache::lonnet::domain($domain,'primary'); |
if (defined($server)) { |
if (defined($server)) { |
unless (&Apache::lonnet::dcmailput($domain,$msgid,$message,$server) |
unless (&Apache::lonnet::dcmailput($domain,$msgid,$message,$server) |
eq 'ok') { |
eq 'ok') { |