version 1.23, 2006/07/29 00:48:21
|
version 1.35, 2009/05/20 20:27:37
|
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 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"> |
ENDONE |
ENDONE |
|
|
return $output; |
return $output; |
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>'. |
&mt('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'. |
&mt('Display e-mail sent by Domain Coordinators in this domain'). |
'</a></td></tr></table>'; |
'</a></td></tr></table>'; |
$output .= &end_page(); |
$output .= &end_page(); |
|
|
Line 160 sub print_display_option_form {
|
Line 164 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 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 455 function setCourseCat(formname) {
|
Line 464 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); |
$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 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'); |
undef,undef,'Course'); |
Line 518 function goBack(target) {
|
Line 527 function goBack(target) {
|
} 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 572 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 630 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 662 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 698 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">'.&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 730 sub get_user_info {
|
Line 742 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 757 sub get_user_info {
|
Line 769 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 778 sub store_mail {
|
Line 790 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') { |