version 1.8, 2005/11/15 21:08:47
|
version 1.12, 2006/03/16 20:09:35
|
Line 56 sub handler {
|
Line 56 sub handler {
|
my $origin = $env{'form.origin'}; |
my $origin = $env{'form.origin'}; |
|
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
my %ltext=&Apache::lonlocal::texthash( |
|
'note' => 'Notification E-mail', |
|
); |
|
my $function = &Apache::loncommon::get_users_function(); |
my $function = &Apache::loncommon::get_users_function(); |
my $loadcode; |
my $loadcode; |
my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg'); |
my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg'); |
Line 75 sub handler {
|
Line 73 sub handler {
|
} |
} |
my $loaditems = ' onLoad="'.$loadcode.'" '; |
my $loaditems = ' onLoad="'.$loadcode.'" '; |
my $bodytag = &Apache::loncommon::bodytag('Broadcast e-mail to users',$function,$loaditems); |
my $bodytag = &Apache::loncommon::bodytag('Broadcast e-mail to users',$function,$loaditems); |
my $html=&Apache::lonxml::xmlbegin(); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>'/adm/notify', |
({href=>'/adm/notify', |
text=>"Broadcast E-mail"}); |
text=>"Broadcast E-mail"}); |
if ($command eq 'process') { |
if ($command eq 'process') { |
&print_request_receipt($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_request_receipt($r,$command,$cdom,$tablecolor,$bodytag); |
} elsif ($command eq 'compose') { |
} elsif ($command eq 'compose') { |
&print_composition_form($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_composition_form($r,$command,$cdom,$tablecolor,$bodytag); |
} elsif ($command eq 'pick_target') { |
} elsif ($command eq 'pick_target') { |
&print_selection_form($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_selection_form($r,$command,$cdom,$tablecolor,$bodytag); |
} elsif ($command eq 'pick_display') { |
} elsif ($command eq 'pick_display') { |
&print_display_option_form($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_display_option_form($r,$command,$cdom,$tablecolor,$bodytag); |
} elsif ($command eq 'display') { |
} elsif ($command eq 'display') { |
&print_display($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_display($r,$command,$cdom,$tablecolor,$bodytag); |
} else { |
} else { |
&print_front_page($r,'front',$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_front_page($r,'front',$cdom,$tablecolor,$bodytag); |
} |
} |
return OK; |
return OK; |
} |
} |
|
|
|
sub add_script { |
|
my ($js) = @_; |
|
return '<script type="text/javascript">'."\n".$js."\n".'</script>'; |
|
} |
|
|
|
sub start_page { |
|
my ($jscript,$bodytag,$bread_title,$formname) = @_; |
|
|
|
my $html = &Apache::lonxml::xmlbegin(); |
|
|
|
my $head = &Apache::loncommon::head('Notification E-mail',$jscript); |
|
|
|
my $breadcrumbs = |
|
&Apache::lonhtmlcommon::breadcrumbs(undef,$bread_title, |
|
'Broadcast_system_email'); |
|
my $output = <<"ENDONE"; |
|
$html |
|
$head |
|
$bodytag |
|
$breadcrumbs |
|
<br /> |
|
<form name="$formname" method="POST"> |
|
ENDONE |
|
|
|
return $output; |
|
} |
|
|
|
sub end_page { |
|
return '</form>'.&Apache::loncommon::end_page(); |
|
} |
|
|
sub print_front_page { |
sub print_front_page { |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Broadcast e-mail to Domain','Broadcast_system_email'); |
|
my $jscript = qq| |
my $jscript = qq| |
function next_page(caller) { |
function next_page(caller) { |
if (caller == 'view') { |
if (caller == 'view') { |
Line 110 function next_page(caller) {
|
Line 137 function next_page(caller) {
|
document.front.submit() |
document.front.submit() |
} |
} |
|; |
|; |
my %lt=&Apache::lonlocal::texthash( |
|
'note' => 'Notification E-mail', |
my $output = &start_page(&add_script($jscript), $bodytag, |
); |
'Broadcast e-mail to Domain', $formname); |
my $output = <<"ENDONE"; |
|
$html |
$output .= '<input type="hidden" name="command" />'; |
<head> |
|
<title>LON-CAPA $lt{'note'}</title> |
|
<script type"text/javascript"> |
|
$jscript |
|
</script> |
|
</head> |
|
$bodytag |
|
$breadcrumbs |
|
<br /> |
|
ENDONE |
|
$output .= '<form name="'.$formname.'" method="post">'. |
|
'<input type="hidden" name="command" />'; |
|
$output .= &Apache::lonhtmlcommon::start_pick_box(); |
$output .= &Apache::lonhtmlcommon::start_pick_box(); |
$output .= '<table cellspacing="8" cellpadding="8">'. |
$output .= '<table cellspacing="8" cellpadding="8">'. |
'<tr><td><a href="javascript:next_page('."'new'".')">'. |
'<tr><td><a href="javascript:next_page('."'new'".')">'. |
Line 135 ENDONE
|
Line 150 ENDONE
|
'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>'; |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= qq( |
$output .= &end_page(); |
</form> |
|
</body> |
|
</html>); |
|
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
|
|
sub print_display_option_form { |
sub print_display_option_form { |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"}); |
({text=>"Display options"}); |
|
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Broadcast e-mail display options','Broadcast_system_email'); |
|
my $table_width = ''; |
my $table_width = ''; |
my $col_width = '200'; |
my $col_width = '200'; |
my $cmd = 'display'; |
my $cmd = 'display'; |
my $submit_text = 'Display e-mail'; |
my $submit_text = 'Display e-mail'; |
my @roles = ('dc'); |
my @roles = ('dc'); |
my $now = time; |
my $now = time; |
my %lt=&Apache::lonlocal::texthash( |
|
'note' => 'Notification E-mail', |
|
); |
|
my $startdateform = &Apache::lonhtmlcommon::date_setter($formname, |
my $startdateform = &Apache::lonhtmlcommon::date_setter($formname, |
'startdate', |
'startdate', |
$now); |
$now); |
Line 180 sub print_display_option_form {
|
Line 189 sub print_display_option_form {
|
sender => 'checkbox', |
sender => 'checkbox', |
); |
); |
my $jscript = &Apache::lonhtmlcommon::set_form_elements(\%elements); |
my $jscript = &Apache::lonhtmlcommon::set_form_elements(\%elements); |
my $output = <<"ENDONE"; |
|
$html |
my $output = &start_page(&add_script($jscript), $bodytag, |
<head> |
'Broadcast e-mail display options', $formname); |
<title>LON-CAPA $lt{'note'}</title> |
|
<script type"text/javascript"> |
|
$jscript |
|
</script> |
|
</head> |
|
$bodytag |
|
$breadcrumbs |
|
<br /> |
|
<form method="post" name="$formname"> |
|
ENDONE |
|
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
$output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Date range')); |
$output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Date range')); |
$output .= '<td><table><tr><td>Earliest to display: </td><td>'. |
$output .= '<td><table><tr><td>Earliest to display: </td><td>'. |
Line 228 ENDONE
|
Line 228 ENDONE
|
} |
} |
|
|
sub print_display { |
sub print_display { |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:goBack('pick_display')", |
({href=>"javascript:goBack('pick_display')", |
text=>"Display options"}, |
text=>"Display options"}, |
{text=>"E-mail display"}); |
{text=>"E-mail display"}); |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Display Broadcast e-mail','Broadcast_system_email'); |
|
my $table_width = ''; |
my $table_width = ''; |
my $col_width = '200'; |
my $col_width = '200'; |
my $rowColor1 = "#ffffff"; |
my $rowColor1 = "#ffffff"; |
Line 259 function goBack(target) {
|
Line 258 function goBack(target) {
|
} |
} |
|
|
ENDSCRIPT |
ENDSCRIPT |
my $output = <<"ENDONE"; |
|
$html |
|
<head> |
|
<title>LON-CAPA $$ltext{'note'}</title> |
|
<script type"text/javascript"> |
|
$jscript |
|
</script> |
|
</head> |
|
$bodytag |
|
$breadcrumbs |
|
<br /> |
|
<form method="post" name="$formname"> |
|
ENDONE |
|
|
|
foreach my $server (keys(%sentmail)) { |
my $output = &start_page(&add_script($jscript), $bodytag, |
foreach my $msgid (keys(%{$sentmail{$server}})) { |
'Display Broadcast e-mail', $formname); |
my %content = &unpackagemail($sentmail{$server}{$msgid}); |
|
if (defined($dcmail{$msgid})) { |
foreach my $msgid (keys(%sentmail)) { |
foreach my $user (keys(%{$content{'recipients'}})) { |
my %content = &Apache::lonmsg::unpackagemsg($sentmail{$msgid}); |
$dcmail{$msgid}{recipients}{$user} = $content{recipients}{$user}; |
$msgcount ++; |
|
%{$dcmail{$msgid}} = (); |
|
foreach my $item (keys(%content)) { |
|
if ($item eq 'recipient') { |
|
foreach my $user (keys(%{$content{recipient}})) { |
|
$dcmail{$msgid}{recipient}{$user} = $content{recipient}{$user}; |
} |
} |
} else { |
} else { |
$msgcount ++; |
$dcmail{$msgid}{$item} = $content{$item}; |
%{$dcmail{$msgid}} = (); |
|
foreach my $item (keys(%content)) { |
|
if ($item eq 'recipients') { |
|
foreach my $user (keys(%{$content{recipients}})) { |
|
$dcmail{$msgid}{recipients}{$user} = $content{recipients}{$user}; |
|
} |
|
} else { |
|
$dcmail{$msgid}{$item} = $content{$item}; |
|
} |
|
} |
|
} |
} |
} |
} |
} |
} |
Line 314 ENDONE
|
Line 295 ENDONE
|
$rowColor = $rowColor2; |
$rowColor = $rowColor2; |
} |
} |
my $recipients = ''; |
my $recipients = ''; |
my ($date,$subj,$sname,$sdom,$cdom) = split(/:/,$msgid,5); |
my ($date,$subj,$sname,$sdom) = |
|
&Apache::lonmsg::unpackmsgid($msgid,undef,1); |
|
$subj = &Apache::lonnet::escape($subj); |
$date = &Apache::lonlocal::locallocaltime($date); |
$date = &Apache::lonlocal::locallocaltime($date); |
foreach my $user (sort(keys(%{$dcmail{$msgid}{recipients}}))) { |
foreach my $user (sort(keys(%{$dcmail{$msgid}{recipient}}))) { |
$recipients .= $dcmail{$msgid}{recipients}{$user}.', '; |
$recipients .= $dcmail{$msgid}{recipient}{$user}.', '; |
} |
} |
$recipients =~ s/,\s$//; |
$recipients =~ s/,\s$//; |
$output .= '<tr bgcolor="'.$rowColor.'"><td><small>'.$date.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{subject}).'</small></td><td><small>'.$sname.':'.$sdom.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{message}).'</small></td><td><small>'.$recipients.'</small></td></tr>'."\n"; |
$output .= '<tr bgcolor="'.$rowColor.'"><td><small>'.$date.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{subject}).'</small></td><td><small>'.$sname.':'.$sdom.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{message}).'</small></td><td><small>'.$recipients.'</small></td></tr>'."\n"; |
Line 325 ENDONE
|
Line 308 ENDONE
|
} |
} |
} else { |
} else { |
foreach my $msgid (sort(keys(%dcmail))) { |
foreach my $msgid (sort(keys(%dcmail))) { |
my ($date,$subj,$sname,$sdom,$cdom) = split(/:/,$msgid,5); |
my ($date,$subj,$sname,$sdom) = |
|
&Apache::lonmsg::unpackmsgid($msgid,undef,1); |
|
$subj = &Apache::lonnet::escape($subj); |
if ($env{'form.sortby'} eq 'subject') { |
if ($env{'form.sortby'} eq 'subject') { |
push @{$Sortby{$dcmail{$msgid}{subject}}},$msgid; |
push @{$Sortby{$dcmail{$msgid}{subject}}},$msgid; |
} elsif ($env{'form.sortby'} eq 'message') { |
} elsif ($env{'form.sortby'} eq 'message') { |
push @{$Sortby{$dcmail{$msgid}{message}}},$msgid; |
push @{$Sortby{$dcmail{$msgid}{message}}},$msgid; |
} elsif ($env{'form.sortby'} eq 'recipients') { |
} elsif ($env{'form.sortby'} eq 'recipients') { |
my $recipients =''; |
my $recipients =''; |
foreach my $user (sort(keys(%{$dcmail{$msgid}{recipients}}))) { |
foreach my $user (sort(keys(%{$dcmail{$msgid}{recipient}}))) { |
$recipients .= $dcmail{$msgid}{recipients}{$user}.', '; |
$recipients .= $dcmail{$msgid}{recipient}{$user}.', '; |
} |
} |
$recipients =~ s/,\s$//; |
$recipients =~ s/,\s$//; |
push @{$Sortby{$recipients}},$msgid; |
push @{$Sortby{$recipients}},$msgid; |
Line 354 ENDONE
|
Line 339 ENDONE
|
if ($env{'form.sortby'} eq 'recipients') { |
if ($env{'form.sortby'} eq 'recipients') { |
$recipients = $key; |
$recipients = $key; |
} else { |
} else { |
foreach my $user (sort(keys(%{$dcmail{$msgid}{recipients}}))) { |
foreach my $user (sort(keys(%{$dcmail{$msgid}{recipient}}))) { |
$recipients .= $dcmail{$msgid}{recipients}{$user}.', '; |
$recipients .= $dcmail{$msgid}{recipient}{$user}.', '; |
} |
} |
$recipients =~ s/,\s$//; |
$recipients =~ s/,\s$//; |
} |
} |
|
my ($date,$subj,$sname,$sdom) = |
my ($date,$subj,$sname,$sdom,$cdom) = split(/:/,$msgid,5); |
&Apache::lonmsg::unpackmsgid($msgid,undef,1); |
|
$subj = &Apache::lonnet::escape($subj); |
$date = &Apache::lonlocal::locallocaltime($date); |
$date = &Apache::lonlocal::locallocaltime($date); |
$output .= '<tr bgcolor="'.$rowColor.'"><td><small>'.$date.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{subject}).'</small></td><td><small>'.$sname.':'.$sdom.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{message}).'</small></td><td><small>'.$recipients.'</small></td></tr>'."\n"; |
$output .= '<tr bgcolor="'.$rowColor.'"><td><small>'.$date.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{subject}).'</small></td><td><small>'.$sname.':'.$sdom.'</small></td><td><small>'.&cr_to_br($dcmail{$msgid}{message}).'</small></td><td><small>'.$recipients.'</small></td></tr>'."\n"; |
$rowNum ++; |
$rowNum ++; |
Line 384 ENDONE
|
Line 370 ENDONE
|
$output .= qq(<input type="hidden" name="sortby" value="$curr_sortby" />\n); |
$output .= qq(<input type="hidden" name="sortby" value="$curr_sortby" />\n); |
$output .= qq( |
$output .= qq( |
</form> |
</form> |
</body> |
</body |
</html>); |
</html>); |
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
|
|
sub print_selection_form { |
sub print_selection_form { |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
my %coursecodes = (); |
my %coursecodes = (); |
my %codes = (); |
my %codes = (); |
my @codetitles = (); |
my @codetitles = (); |
Line 407 sub print_selection_form {
|
Line 393 sub print_selection_form {
|
my $table_width = '100%'; |
my $table_width = '100%'; |
my $col_width = '200'; |
my $col_width = '200'; |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'note' => 'Notification E-mail', |
|
'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.', |
Line 426 sub print_selection_form {
|
Line 411 sub print_selection_form {
|
} |
} |
} |
} |
|
|
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Choose e-mail audience','Broadcast_system_email'); |
|
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom); |
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom); |
|
|
my %elements = ( |
my %elements = ( |
Line 477 function setCourseCat(formname) {
|
Line 460 function setCourseCat(formname) {
|
} |
} |
|; |
|; |
} |
} |
my $output = <<"ENDONE"; |
|
$html |
|
<head> |
my $output = &start_page(&add_script($jscript).$cb_jscript, |
<title>LON-CAPA $lt{'note'}</title> |
$bodytag, 'Choose e-mail audience', $formname); |
<script type"text/javascript"> |
|
$jscript |
|
</script> |
|
$cb_jscript |
|
</head> |
|
$bodytag |
|
$breadcrumbs |
|
<br /> |
|
<form method="post" name="$formname"> |
|
ENDONE |
|
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
my @roles = ('ow','cc','in','ta','ep','st','cr'); |
my @roles = ('ow','cc','in','ta','ep','st','cr'); |
my %longtypes = (); |
my %longtypes = (); |
Line 518 ENDONE
|
Line 492 ENDONE
|
} |
} |
|
|
sub print_composition_form { |
sub print_composition_form { |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:goBack('pick_target')", |
({href=>"javascript:goBack('pick_target')", |
text=>"Select Audience"}, |
text=>"Select Audience"}, |
Line 530 function goBack(target) {
|
Line 504 function goBack(target) {
|
document.$formname.submit(); |
document.$formname.submit(); |
} |
} |
|; |
|; |
my $breadcrumbs = (&Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'Broadcast e-mail to users','Broadcast_system_email')); |
|
|
|
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'note' => 'Notification E-mail', |
|
'nore' => 'No recipients identified', |
'nore' => 'No recipients identified', |
'emad' => 'e-mail address', |
'emad' => 'e-mail address', |
); |
); |
Line 546 function goBack(target) {
|
Line 517 function goBack(target) {
|
); |
); |
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
|
|
$r->print(<<ENDONE); |
$r->print(&start_page(&add_script($jscript), $bodytag, |
$html |
'Broadcast e-mail to users', $formname)); |
<head> |
|
<title>LON-CAPA $lt{'note'}</title> |
|
<script type="text/javascript"> |
|
$jscript |
|
</script> |
|
</head> |
|
$bodytag $breadcrumbs |
|
<br /> |
|
ENDONE |
|
my $coursefilter = $env{'form.coursepick'}; |
my $coursefilter = $env{'form.coursepick'}; |
my %courses = (); |
my %courses = (); |
if ($coursefilter eq 'all') { |
if ($coursefilter eq 'all') { |
Line 649 ENDONE
|
Line 612 ENDONE
|
} |
} |
} |
} |
} |
} |
my $output = '<form name="'.$formname.'" method="post">'."\n"; |
my $output; |
|
|
if ($totalrecip > 0) { |
if ($totalrecip > 0) { |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
Line 703 ENDONE
|
Line 666 ENDONE
|
|
|
|
|
sub print_request_receipt { |
sub print_request_receipt { |
my ($r,$formname,$dom,$tablecolor,$bodytag,$html,$ltext) =@_; |
my ($r,$formname,$dom,$tablecolor,$bodytag) =@_; |
my @recipients = &Apache::loncommon::get_env_multiple('form.recipient'); |
my @recipients = &Apache::loncommon::get_env_multiple('form.recipient'); |
my $subject = $env{'form.subject'}; |
my $subject = $env{'form.subject'}; |
my $message = $env{'form.message'}; |
my $message = $env{'form.message'}; |
Line 714 function goBack(target) {
|
Line 677 function goBack(target) {
|
document.$formname.submit(); |
document.$formname.submit(); |
} |
} |
ENDSCRIPT |
ENDSCRIPT |
|
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:goBack('pick_target')", |
({href=>"javascript:goBack('pick_target')", |
text=>"Select audience"}); |
text=>"Select audience"}); |
Line 723 ENDSCRIPT
|
Line 687 ENDSCRIPT
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/notify?command=process", |
({href=>"/adm/notify?command=process", |
text=>"Outcome"}); |
text=>"Outcome"}); |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
|
(undef,'E-mail Delivery','Broadcast_system_email'); |
|
my $output = <<ENDONE; |
my $output = &start_page(&add_script($jscript), $bodytag, |
$html |
'E-mail Delivery', $formname); |
<head> |
|
<title>LON-CAPA Notification E-mail</title> |
|
<script type="text/javascript"> |
|
$jscript |
|
</script> |
|
</head> |
|
$bodytag |
|
$breadcrumbs |
|
<br /> |
|
<form name="$formname" method="post"> |
|
ENDONE |
|
$output .= &Apache::lonhtmlcommon::start_pick_box(); |
$output .= &Apache::lonhtmlcommon::start_pick_box(); |
my @deliveries = (); |
my @deliveries = (); |
&broadcast_email(\@recipients,$subject,$from,$message,\@deliveries); |
&broadcast_email(\@recipients,$subject,$from,$message,\@deliveries); |
Line 766 ENDONE
|
Line 720 ENDONE
|
</table> |
</table> |
</td> |
</td> |
</tr>'; |
</tr>'; |
&store_mail($subject,$message,$dom,\@deliveries); |
|
} else { |
} else { |
$output .= 'No mail sent - no recipients identified'; |
$output .= 'No mail sent - no recipients identified'; |
} |
} |
Line 784 ENDONE
|
Line 737 ENDONE
|
} |
} |
|
|
sub broadcast_email { |
sub broadcast_email { |
my ($recipients,$subject,$from,$message,$deliveries,$ltext)=@_; |
my ($recipients,$subject,$from,$message,$deliveries)=@_; |
# Should implement staggered delivery for large numbers of recipients?. |
# Should implement staggered delivery for large numbers of recipients?. |
foreach my $user (@{$recipients}) { |
foreach my $user (@{$recipients}) { |
my $msg = new Mail::Send; |
my $msg = new Mail::Send; |
Line 831 sub get_user_info {
|
Line 784 sub get_user_info {
|
} |
} |
|
|
sub form_elements { |
sub form_elements { |
my ($longtypes,$authtypes,$ltext) = @_; |
my ($longtypes,$authtypes) = @_; |
%{$longtypes} = ( |
%{$longtypes} = ( |
active => 'Currently has access', |
active => 'Currently has access', |
previous => 'Previously had access', |
previous => 'Previously had access', |
Line 848 sub form_elements {
|
Line 801 sub form_elements {
|
} |
} |
|
|
sub store_mail { |
sub store_mail { |
my ($subject,$message,$domain,$recipients,$attachmenturl,$ltext) = @_; |
my ($subject,$message,$domain,$recipients,$attachmenturl) = @_; |
my %servers = (); |
my $msgid; |
my $msgid=&packagemail($subject,$message,$domain, |
($msgid,$message) = &Apache::lonmsg::packagemsg($subject,$message,undef,undef, |
$recipients,\%servers,$attachmenturl); |
$attachmenturl,$recipients,undef,undef,'dcmail'); |
# Store in dc email db files on appropriate servers. |
|
foreach my $server (keys(%servers)) { |
# Store in dc email db files on primary library server for domain. |
unless (&Apache::lonnet::dcmailput($domain,$msgid,\%servers,$server) eq 'ok') { |
my $server = $Apache::lonnet::domain_primary{$domain}; |
&Apache::lonnet::logthis('Storage of dc mail failed for domain'.$domain.' for server: '. |
if (defined($server)) { |
$server.'. Message ID was '.$msgid); |
unless (&Apache::lonnet::dcmailput($domain,$msgid,$message,$server) |
} |
eq 'ok') { |
} |
&Apache::lonnet::logthis('Storage of dc mail failed for domain'. |
} |
$domain.' for server: '. $server.'. Message ID was '.$msgid); |
|
|
sub packagemail { |
|
my ($subject,$message,$dom,$recipients,$servers,$attachmenturl,$ltext) = @_; |
|
my %record = (); |
|
my $partsubj=$subject; |
|
$partsubj=&Apache::lonnet::escape($partsubj); |
|
$message =&HTML::Entities::encode($message,'<>&"'); |
|
$subject =&HTML::Entities::encode($subject,'<>&"'); |
|
#remove machine specification |
|
$attachmenturl =~ s|^http://[^/]+/|/|; |
|
$attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"'); |
|
my $now=time; |
|
my $msgid= &Apache::lonnet::escape($now).':'.$partsubj.':'. |
|
&Apache::lonnet::escape($env{'user.name'}).':'. |
|
&Apache::lonnet::escape($env{'user.domain'}).':'. |
|
&Apache::lonnet::escape($dom).':'.$$; |
|
my $result='<sendername>'.$env{'user.name'}.'</sendername>'. |
|
'<senderdomain>'.$env{'user.domain'}.'</senderdomain>'. |
|
'<time>'.&Apache::lonlocal::locallocaltime($now).'</time>'. |
|
'<servername>'.$ENV{'SERVER_NAME'}.'</servername>'. |
|
'<host>'.$ENV{'HTTP_HOST'}.'</host>'. |
|
'<client>'.$ENV{'REMOTE_ADDR'}.'</client>'. |
|
'<msgid>'.$msgid.'</msgid>'. |
|
'<dcdomain>'.$dom.'</dcdomain>'. |
|
'<subject>'.$subject.'</subject>'. |
|
'<message>'.$message.'</message>'."\n"; |
|
if (defined($attachmenturl)) { |
|
$result.= '<attachmenturl>'.$attachmenturl.'</attachmenturl>'; |
|
} |
|
foreach my $recip (@{$recipients}) { |
|
my ($username,$email) = split(/:/,$recip); |
|
$username = &Apache::lonnet::unescape($username); |
|
$email = &Apache::lonnet::unescape($email); |
|
my ($uname,$udom) = split(/:/,$username); |
|
my $uhom=&Apache::lonnet::homeserver($uname,$udom); |
|
if ($uhom ne 'no_host') { |
|
$username = &HTML::Entities::encode($username,'<>&"'); |
|
$email = &HTML::Entities::encode($email,'<>&"'); |
|
$record{$uhom} .= '<recipient username="'.$username.'">'. |
|
$email.'</recipient>'; |
|
} |
|
} |
|
foreach my $server (keys(%record)) { |
|
$$servers{$server} = $result.$record{$server}; |
|
} |
|
return $msgid; |
|
} |
|
|
|
sub unpackagemail { |
|
my ($message,$notoken,$ltext)=@_; |
|
my $parser=HTML::TokeParser->new(\$message); |
|
my $token; |
|
my %content=(); |
|
%{$content{recipients}} = (); |
|
while ($token=$parser->get_token()) { |
|
if ($token->[0] eq 'S') { |
|
my $entry=$token->[1]; |
|
my $value=$parser->get_text('/'.$entry); |
|
my ($username,$email); |
|
if ($entry eq 'recipient') { |
|
$username = $token->[2]{'username'}; |
|
$username = &HTML::Entities::decode($username,'<>&"'); |
|
$content{recipients}{$username} = |
|
&HTML::Entities::decode($value,'<>&"'); |
|
} elsif ($entry eq 'subject' || $entry eq 'message') { |
|
$content{$entry}=&HTML::Entities::decode($value,'<>&"'); |
|
} else { |
|
$content{$entry}=$value; |
|
} |
|
} |
|
} |
|
if ($content{'attachmenturl'}) { |
|
my ($fname)=($content{'attachmenturl'}=~m|/([^/]+)$|); |
|
if ($notoken) { |
|
$content{'message'}.='<p>'.&mt('Attachment').': <tt>'.$fname.'</tt>'; } else { |
|
&Apache::lonnet::allowuploaded('/adm/notify', |
|
$content{'attachmenturl'}); |
|
$content{'message'}.='<p>'.&mt('Attachment'). |
|
': <a href="'.$content{'attachmenturl'}.'"><tt>'. |
|
$fname.'</tt></a>'; |
|
} |
} |
|
} else { |
|
&Apache::lonnet::logthis('Storage of dc mail failed for domain'. |
|
$domain.' as no primary server identified. Message ID was '.$msgid); |
} |
} |
return %content; |
|
} |
} |
|
|
sub cr_to_br { |
sub cr_to_br { |