version 1.21, 2006/07/07 13:50:26
|
version 1.29, 2008/11/17 17:10:57
|
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 27 package Apache::lonnotify;
|
Line 31 package Apache::lonnotify;
|
use strict; |
use strict; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncommon; |
use Apache::loncommon; |
use Apache::lonsupportreq; |
use Apache::courseclassifier; |
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::lonlocal; |
use Apache::lonlocal; |
Line 145 function next_page(caller) {
|
Line 149 function next_page(caller) {
|
$output .= '<input type="hidden" name="command" />'; |
$output .= '<input type="hidden" name="command" />'; |
$output .= '<table class="LC_notify_front_page">'. |
$output .= '<table class="LC_notify_front_page">'. |
'<tr><td><a href="javascript:next_page('."'new'".')">'. |
'<tr><td><a href="javascript:next_page('."'new'".')">'. |
'Send a new e-mail message to selected users from this domain</a></td></tr><tr>'. |
'Send a new e-mail to selected users from this domain</a></td></tr><tr>'. |
'<td><a href="javascript:next_page('."'view'".')">'. |
'<td><a href="javascript:next_page('."'view'".')">'. |
'Display e-mail sent by Domain Coordinators in this domain'. |
'Display e-mail sent by Domain Coordinators in this domain'. |
'</a></td></tr></table>'; |
'</a></td></tr></table>'; |
Line 205 sub print_display_option_form {
|
Line 209 sub print_display_option_form {
|
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 374 sub print_selection_form {
|
Line 378 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"}); |
|
|
$totcodes = &Apache::lonsupportreq::retrieve_instcodes(\%coursecodes,$cdom,$totcodes); |
$totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$cdom,$totcodes); |
if ($totcodes > 0) { |
if ($totcodes > 0) { |
$format_reply = &Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order); |
$format_reply = &Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order); |
if ($format_reply eq 'ok') { |
if ($format_reply eq 'ok') { |
my $numtypes = @codetitles; |
my $numtypes = @codetitles; |
&Apache::lonsupportreq::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); |
&Apache::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); |
&Apache::lonsupportreq::javascript_code_selections($formname,$numtypes,\%cat_titles,\$jscript,\%idlist,\%idnums,\%idlist_titles,\@codetitles); |
my ($scripttext,$longtitles) = &Apache::courseclassifier::javascript_definitions(\@codetitles,\%idlist,\%idlist_titles,\%idnums,\%cat_titles); |
|
my $longtitles_str = join('","',@{$longtitles}); |
|
my $allidlist = $idlist{$codetitles[0]}; |
|
$jscript .= &Apache::courseclassifier::courseset_js_start($formname,$longtitles_str,$allidlist); |
|
$jscript .= $scripttext; |
|
$jscript .= &Apache::courseclassifier::javascript_code_selections($formname,@codetitles); |
} |
} |
} |
} |
|
|
Line 401 sub print_selection_form {
|
Line 410 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 471 sub print_composition_form {
|
Line 480 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 496 function goBack(target) {
|
Line 505 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'); |
} elsif ($coursefilter eq 'category') { |
} elsif ($coursefilter eq 'category') { |
my $instcode = ''; |
my $instcode = ''; |
my @cats = ('Semester','Year','Department','Number'); |
my @cats = ('Semester','Year','Department','Number'); |
Line 512 function goBack(target) {
|
Line 522 function goBack(target) {
|
if ($instcode eq '') { |
if ($instcode eq '') { |
$instcode = '.'; |
$instcode = '.'; |
} |
} |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.'); |
%courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.', |
|
undef,undef,'Course'); |
} 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 570 function goBack(target) {
|
Line 581 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 605 function goBack(target) {
|
Line 619 function goBack(target) {
|
$output .= &Apache::loncommon::start_data_table(); |
$output .= &Apache::loncommon::start_data_table(); |
if (keys(%recipients) > 0) { |
if (keys(%recipients) > 0) { |
$output .= &Apache::loncommon::start_data_table_header_row(); |
$output .= &Apache::loncommon::start_data_table_header_row(); |
$output .= '<th> <th>username:domain</th><th> </th><th>'.$lt{'emad'}.'</th>'; |
$output .= '<th> <th>username:domain</th><th>'.$lt{'emad'}.'</th>'; |
$output .= &Apache::loncommon::end_data_table_header_row(); |
$output .= &Apache::loncommon::end_data_table_header_row(); |
} |
} |
foreach my $username (sort(keys(%recipients))) { |
foreach my $username (sort(keys(%recipients))) { |
$output .= &Apache::loncommon::start_data_table_row(); |
$output .= &Apache::loncommon::start_data_table_row(); |
if ($recipients{$username} =~ /\@/) { |
if ($recipients{$username} =~ /\@/) { |
my $value=&escape($username).':'.&escape($recipients{$username}); |
my $value=&escape($username).':'.&escape($recipients{$username}); |
$output .= '<td><input type="checkbox" name="recipient" value="'.$value.'" /></td><td>'.$username.'</td><td> </td><td>'.$recipients{$username}.'</td>'; |
$output .= '<td><input type="checkbox" name="recipient" value="'.$value.'" /></td><td>'.$username.'</td><td>'.$recipients{$username}.'</td>'; |
} |
} |
$output .= &Apache::loncommon::end_data_table_row(); |
$output .= &Apache::loncommon::end_data_table_row(); |
} |
} |
Line 628 function goBack(target) {
|
Line 642 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 660 ENDSCRIPT
|
Line 674 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 696 ENDSCRIPT
|
Line 710 ENDSCRIPT
|
} else { |
} else { |
$output .= 'No mail sent - no recipients identified'; |
$output .= 'No mail sent - no recipients identified'; |
} |
} |
$output .= '<br /><a href="/adm/notify">Send another message?</a>'."\n"; |
$output .= '<br /><a href="/adm/notify">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 728 sub get_user_info {
|
Line 743 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 764 sub form_elements {
|
Line 779 sub form_elements {
|
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 776 sub store_mail {
|
Line 791 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') { |