version 1.3, 2005/10/05 18:50:08
|
version 1.8, 2005/11/15 21:08:47
|
Line 53 sub handler {
|
Line 53 sub handler {
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['command']); |
['command']); |
my $command = $env{'form.command'}; |
my $command = $env{'form.command'}; |
|
my $origin = $env{'form.origin'}; |
|
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
my %ltext=&Apache::lonlocal::texthash( |
my %ltext=&Apache::lonlocal::texthash( |
'note' => 'Notification E-mail', |
'note' => 'Notification E-mail', |
); |
); |
my $function = &Apache::loncommon::get_users_function(); |
my $function = &Apache::loncommon::get_users_function(); |
|
my $loadcode; |
my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg'); |
my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg'); |
my $bodytag = &Apache::loncommon::bodytag('Broadcast e-mail to users'); |
if ((defined($env{'form.origin'})) && ($command eq 'compose' || $command eq 'pick_target' || $command eq 'pick_display')) { |
|
unless ($env{'form.origin'} eq '') { |
|
$loadcode = 'javascript:setFormElements(document.'.$env{'form.command'}.')'; |
|
if (($command eq 'pick_target') && ( |
|
($origin eq 'compose') || ($origin eq 'process'))) { |
|
if ($env{'form.coursepick'} eq 'category') { |
|
$loadcode .= ';javascript:setCourseCat(document.'.$env{'form.command'}.')'; |
|
} |
|
} |
|
} |
|
} |
|
my $loaditems = ' onLoad="'.$loadcode.'" '; |
|
my $bodytag = &Apache::loncommon::bodytag('Broadcast e-mail to users',$function,$loaditems); |
my $html=&Apache::lonxml::xmlbegin(); |
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,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_request_receipt($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
} elsif ($command eq 'compose') { |
} elsif ($command eq 'compose') { |
&print_composition_form($r,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_composition_form($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
} elsif ($command eq 'pick_target') { |
} elsif ($command eq 'pick_target') { |
&print_selection_form($r,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_selection_form($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
} elsif ($command eq 'pick_display') { |
} elsif ($command eq 'pick_display') { |
&print_display_option_form($r,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_display_option_form($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
} elsif ($command eq 'display') { |
} elsif ($command eq 'display') { |
&print_display($r,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_display($r,$command,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
} else { |
} else { |
&print_front_page($r,$cdom,$tablecolor,$bodytag,$html,\%ltext); |
&print_front_page($r,'front',$cdom,$tablecolor,$bodytag,$html,\%ltext); |
} |
} |
return OK; |
return OK; |
} |
} |
|
|
sub print_front_page { |
sub print_front_page { |
my ($r,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
(undef,'Broadcast e-mail to Domain','Broadcast_system_email'); |
(undef,'Broadcast e-mail to Domain','Broadcast_system_email'); |
my $jscript = qq| |
my $jscript = qq| |
Line 110 $bodytag
|
Line 125 $bodytag
|
$breadcrumbs |
$breadcrumbs |
<br /> |
<br /> |
ENDONE |
ENDONE |
$output .= '<form name="front" method="post">'. |
$output .= '<form name="'.$formname.'" method="post">'. |
'<input type="hidden" name="command" />'; |
'<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">'. |
Line 129 ENDONE
|
Line 144 ENDONE
|
} |
} |
|
|
sub print_display_option_form { |
sub print_display_option_form { |
my ($r,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({text=>"Display options"}); |
({text=>"Display options"}); |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
(undef,'Broadcast e-mail display options','Broadcast_system_email'); |
(undef,'Broadcast e-mail display options','Broadcast_system_email'); |
my $table_width = ''; |
my $table_width = ''; |
my $col_width = '200'; |
my $col_width = '200'; |
my $formname = 'display_options'; |
|
my $cmd = 'display'; |
my $cmd = 'display'; |
my $submit_text = 'Display e-mail'; |
my $submit_text = 'Display e-mail'; |
my @roles = ('dc'); |
my @roles = ('dc'); |
Line 150 sub print_display_option_form {
|
Line 164 sub print_display_option_form {
|
my $enddateform = &Apache::lonhtmlcommon::date_setter($formname, |
my $enddateform = &Apache::lonhtmlcommon::date_setter($formname, |
'enddate', |
'enddate', |
$now); |
$now); |
my $jscript; |
my %elements = ( |
my %totals = (); |
startdate_month => 'selectbox', |
my %personnel = (); |
startdate_hour => 'selectbox', |
|
enddate_month => 'selectbox', |
|
enddate_hour => 'selectbox', |
|
startdate_day => 'text', |
|
startdate_year => 'text', |
|
startdate_minute => 'text', |
|
startdate_second => 'text', |
|
enddate_day => 'text', |
|
enddate_year => 'text', |
|
enddate_minute => 'text', |
|
enddate_second => 'text', |
|
sender => 'checkbox', |
|
); |
|
my $jscript = &Apache::lonhtmlcommon::set_form_elements(\%elements); |
my $output = <<"ENDONE"; |
my $output = <<"ENDONE"; |
$html |
$html |
<head> |
<head> |
Line 174 ENDONE
|
Line 201 ENDONE
|
'</td></tr></table></td>'; |
'</td></tr></table></td>'; |
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Choose sender(s)')); |
$output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Choose sender(s)')); |
# FIXME - need to complete work on domain_roles_get |
my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles); |
# &Apache::lonnet::domain_roles_get($cdom,\@roles,\%personnel,%totals); |
|
$output .= '<td>'; |
$output .= '<td>'; |
if ($totals{'dc'} > 0) { |
my @domcc = (); |
foreach my $user (sort(keys(%{$personnel{'dc'}}))) { |
foreach my $server (keys %personnel) { |
my ($uname,$udom) = split(/:/,$user); |
foreach my $user (sort(keys %{$personnel{$server}})) { |
my %userinfo = &Apache::lonnet::get('environment',['lastname','firstname'],$udom,$uname); |
my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user); |
$output .= '<input type="checkbox" name="sender" value="'.$user.'" /> '.$userinfo{firstname}.' '.$userinfo{lastname}.' ('.$user.')'; |
unless (grep/^$uname:$udom$/,@domcc) { |
|
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.')'; |
|
push (@domcc,$uname.':'.$udom); |
|
} |
} |
} |
} |
} |
$output .= '</td>'; |
$output .= '</td>'; |
Line 198 ENDONE
|
Line 228 ENDONE
|
} |
} |
|
|
sub print_display { |
sub print_display { |
my ($r,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>'/adm/notify?command=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 |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
Line 211 sub print_display {
|
Line 241 sub print_display {
|
my $rowColor2 = "#eeeeee"; |
my $rowColor2 = "#eeeeee"; |
my $rowColor; |
my $rowColor; |
my $msgcount = 0; |
my $msgcount = 0; |
my $formname = 'display_sent'; |
|
my $start = &Apache::lonhtmlcommon::get_date_from_form('startdate'); |
my $start = &Apache::lonhtmlcommon::get_date_from_form('startdate'); |
my $end = &Apache::lonhtmlcommon::get_date_from_form('enddate'); |
my $end = &Apache::lonhtmlcommon::get_date_from_form('enddate'); |
my @senders = &Apache::loncommon::get_env_multiple('form.sender'); |
my @senders = &Apache::loncommon::get_env_multiple('form.sender'); |
my $senderlist = join('&',@senders); |
my %sentmail = &Apache::lonnet::dcmaildump($cdom,$start,$end,\@senders); |
my %sentmail = &Apache::lonnet::dcmaildump($cdom,$start,$end,$senderlist); |
|
my %dcmail = (); |
my %dcmail = (); |
my %Sortby = (); |
my %Sortby = (); |
my $jscript = <<"ENDSCRIPT"; |
my $jscript = <<"ENDSCRIPT"; |
function changeSort(caller) { |
function changeSort(caller) { |
|
document.$formname.command.value = '$formname'; |
document.$formname.sortby.value = caller; |
document.$formname.sortby.value = caller; |
document.$formname.submit(); |
document.$formname.submit(); |
|
} |
|
function goBack(target) { |
|
document.$formname.command.value = target; |
|
document.$formname.submit(); |
} |
} |
|
|
ENDSCRIPT |
ENDSCRIPT |
my $output = <<"ENDONE"; |
my $output = <<"ENDONE"; |
$html |
$html |
Line 286 ENDONE
|
Line 320 ENDONE
|
$recipients .= $dcmail{$msgid}{recipients}{$user}.', '; |
$recipients .= $dcmail{$msgid}{recipients}{$user}.', '; |
} |
} |
$recipients =~ s/,\s$//; |
$recipients =~ s/,\s$//; |
$output .= '<tr bgcolor="'.$rowColor.'"><td><small>'.$date.'</small></td><td><small>'.$dcmail{$msgid}{subject}.'</small></td><td><small>'.$sname.':'.$sdom.'</small></td><td><small>'.$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 ++; |
} |
} |
} else { |
} else { |
Line 325 ENDONE
|
Line 359 ENDONE
|
} |
} |
$recipients =~ s/,\s$//; |
$recipients =~ s/,\s$//; |
} |
} |
|
|
my ($date,$subj,$sname,$sdom,$cdom) = split(/:/,$msgid,5); |
my ($date,$subj,$sname,$sdom,$cdom) = split(/:/,$msgid,5); |
$date = &Apache::lonlocal::locallocaltime($date); |
$date = &Apache::lonlocal::locallocaltime($date); |
$output .= '<tr bgcolor="'.$rowColor.'"><td><small>'.$date.'</small></td><td><small>'.$dcmail{$msgid}{subject}.'</small></td><td><small>'.$sname.':'.$sdom.'</small></td><td><small>'.$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 337 ENDONE
|
Line 372 ENDONE
|
$output .= '<tr bgcolor="#ffffff"><td> </td><td><br><center><i><b><small> No mail sent matching supplied criteria </small><br><br></b></i></td><td> </td></tr>'; |
$output .= '<tr bgcolor="#ffffff"><td> </td><td><br><center><i><b><small> No mail sent matching supplied criteria </small><br><br></b></i></td><td> </td></tr>'; |
} |
} |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &echo_form_input(); |
$output .= &Apache::lonhtmlcommon::echo_form_input(['sortby','command','origin']); |
unless (defined($env{'form.sortby'})) { |
my $curr_sortby; |
$output .= qq(<input type="hidden" name="sortby" value="date" />\n); |
if (defined($env{'form.sortby'})) { |
} |
$curr_sortby = $env{'form.sortby'}; |
|
} else { |
|
$curr_sortby = 'date'; |
|
} |
|
$output .= qq(<input type="hidden" name="origin" value="$formname" />\n); |
|
$output .= qq(<input type="hidden" name="command" />\n); |
|
$output .= qq(<input type="hidden" name="sortby" value="$curr_sortby" />\n); |
$output .= qq( |
$output .= qq( |
</form> |
</form> |
</body> |
</body> |
Line 350 ENDONE
|
Line 391 ENDONE
|
} |
} |
|
|
sub print_selection_form { |
sub print_selection_form { |
my ($r,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my %coursecodes = (); |
my %coursecodes = (); |
my %codes = (); |
my %codes = (); |
my @codetitles = (); |
my @codetitles = (); |
Line 363 sub print_selection_form {
|
Line 404 sub print_selection_form {
|
my $totcodes = 0; |
my $totcodes = 0; |
my $format_reply; |
my $format_reply; |
my $jscript = ''; |
my $jscript = ''; |
my $formname = 'rolefilter'; |
|
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( |
Line 373 sub print_selection_form {
|
Line 413 sub print_selection_form {
|
'infs' => 'Internal, Filesystem and Local authentication: enter single default.', |
'infs' => 'Internal, Filesystem and Local authentication: enter single default.', |
'comp' => 'Compose Message' |
'comp' => 'Compose Message' |
); |
); |
my $loaditems = qq| |
|
function initialize_codes() { |
|
return; |
|
} |
|
|; |
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({text=>"Select Audience"}); |
({text=>"Select Audience"}); |
|
|
Line 388 function initialize_codes() {
|
Line 423 function initialize_codes() {
|
my $numtypes = @codetitles; |
my $numtypes = @codetitles; |
&Apache::lonsupportreq::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); |
&Apache::lonsupportreq::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); |
&Apache::lonsupportreq::javascript_code_selections($formname,$numtypes,\%cat_titles,\$jscript,\%idlist,\%idnums,\%idlist_titles,\@codetitles); |
$loaditems = ''; |
|
} |
} |
} |
} |
|
|
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
(undef,'Choose e-mail audience','Broadcast_system_email'); |
(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 = ( |
|
roles => 'selectbox', |
|
types => 'selectbox', |
|
Year => 'selectbox', |
|
coursepick => 'radio', |
|
coursetotal => 'text', |
|
courselist => 'text', |
|
internal => 'text', |
|
krb4 => 'text', |
|
krb5 => 'text', |
|
local => 'text', |
|
unix => 'text', |
|
); |
|
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
|
if ($env{'form.coursepick'} eq 'category') { |
|
$jscript .= qq| |
|
function setCourseCat(formname) { |
|
if (formname.Year.options[formname.Year.selectedIndex].value == -1) { |
|
return; |
|
} |
|
courseSet('Year'); |
|
for (var j=0; j<formname.Semester.length; j++) { |
|
if (formname.Semester.options[j].value == "$env{'form.Semester'}") { |
|
formname.Semester.options[j].selected = true; |
|
} |
|
} |
|
if (formname.Semester.options[formname.Semester.selectedIndex].value == -1) { |
|
return; |
|
} |
|
courseSet('Semester'); |
|
for (var j=0; j<formname.Department.length; j++) { |
|
if (formname.Department.options[j].value == "$env{'form.Department'}") { |
|
formname.Department.options[j].selected = true; |
|
} |
|
} |
|
if (formname.Department.options[formname.Department.selectedIndex].value == -1) { |
|
return; |
|
} |
|
courseSet('Department'); |
|
for (var j=0; j<formname.Number.length; j++) { |
|
if (formname.Number.options[j].value == "$env{'form.Number'}") { |
|
formname.Number.options[j].selected = true; |
|
} |
|
} |
|
} |
|
|; |
|
} |
my $output = <<"ENDONE"; |
my $output = <<"ENDONE"; |
$html |
$html |
<head> |
<head> |
Line 410 $breadcrumbs
|
Line 492 $breadcrumbs
|
<form method="post" name="$formname"> |
<form method="post" name="$formname"> |
ENDONE |
ENDONE |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
my @roles = ('cc','in','ta','ep','ad','st','cr'); |
my @roles = ('ow','cc','in','ta','ep','st','cr'); |
my %longtypes = (); |
my %longtypes = (); |
my %authtypes = (); |
my %authtypes = (); |
&form_elements(\%longtypes,\%authtypes); |
&form_elements(\%longtypes,\%authtypes); |
Line 436 ENDONE
|
Line 518 ENDONE
|
} |
} |
|
|
sub print_composition_form { |
sub print_composition_form { |
my ($r,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
my ($r,$formname,$cdom,$tablecolor,$bodytag,$html,$ltext) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>'/adm/notify?command=pick_target', |
({href=>"javascript:goBack('pick_target')", |
text=>"Select Audience"}, |
text=>"Select Audience"}, |
{text=>"Compose Message"}); |
{text=>"Compose Message"}); |
my $jscript = &Apache::loncommon::check_uncheck_jscript(); |
my $jscript = &Apache::loncommon::check_uncheck_jscript(); |
|
$jscript .= qq| |
|
function goBack(target) { |
|
document.$formname.command.value = target; |
|
document.$formname.submit(); |
|
} |
|
|; |
my $breadcrumbs = (&Apache::lonhtmlcommon::breadcrumbs |
my $breadcrumbs = (&Apache::lonhtmlcommon::breadcrumbs |
(undef,'Broadcast e-mail to users','Broadcast_system_email')); |
(undef,'Broadcast e-mail to users','Broadcast_system_email')); |
|
|
Line 450 sub print_composition_form {
|
Line 538 sub print_composition_form {
|
'nore' => 'No recipients identified', |
'nore' => 'No recipients identified', |
'emad' => 'e-mail address', |
'emad' => 'e-mail address', |
); |
); |
|
my %elements = ( |
|
subject => 'text', |
|
message => 'text', |
|
sender => 'text', |
|
recipient => 'checkbox', |
|
); |
|
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
|
|
$r->print(<<ENDONE); |
$r->print(<<ENDONE); |
$html |
$html |
<head> |
<head> |
<title>LON-CAPA $lt{'note'}</title> |
<title>LON-CAPA $lt{'note'}</title> |
<script type"text/javascript"> |
<script type="text/javascript"> |
$jscript |
$jscript |
</script> |
</script> |
</head> |
</head> |
Line 528 ENDONE
|
Line 624 ENDONE
|
my %recipients = (); |
my %recipients = (); |
my %users = (); |
my %users = (); |
my %access = (); |
my %access = (); |
|
my @sections = (); |
my $totalrecip = 0; |
my $totalrecip = 0; |
my @unmatched = (); |
my @unmatched = (); |
foreach my $role (@roles) { |
foreach my $role (@roles) { |
Line 538 ENDONE
|
Line 635 ENDONE
|
} |
} |
foreach my $course_id (keys(%courses)) { |
foreach my $course_id (keys(%courses)) { |
my ($cdom,$cnum) = split(/_/,$course_id); |
my ($cdom,$cnum) = split(/_/,$course_id); |
&Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\%users); |
&Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users); |
} |
} |
foreach my $role (keys(%users)) { |
foreach my $role (keys(%users)) { |
foreach my $user (keys(%{$users{$role}})) { |
foreach my $user (keys(%{$users{$role}})) { |
Line 552 ENDONE
|
Line 649 ENDONE
|
} |
} |
} |
} |
} |
} |
my $output = '<form name="compose" method="post">'."\n"; |
my $output = '<form name="'.$formname.'" method="post">'."\n"; |
|
|
if ($totalrecip > 0) { |
if ($totalrecip > 0) { |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
Line 575 ENDONE
|
Line 672 ENDONE
|
foreach my $username (sort(keys(%recipients))) { |
foreach my $username (sort(keys(%recipients))) { |
if ($recipients{$username} =~ /\@/) { |
if ($recipients{$username} =~ /\@/) { |
my $value=&Apache::lonnet::escape($username).':'.&Apache::lonnet::escape($recipients{$username}); |
my $value=&Apache::lonnet::escape($username).':'.&Apache::lonnet::escape($recipients{$username}); |
$output .= '<tr><td><input type="checkbox" name="recipient" value="'.$value.'" checked="checked" /></td><td>'.$username.'</td><td> </td><td>'.$recipients{$username}.'</td></tr>'; |
$output .= '<tr><td><input type="checkbox" name="recipient" value="'.$value.'" /></td><td>'.$username.'</td><td> </td><td>'.$recipients{$username}.'</td></tr>'; |
} |
} |
} |
} |
$output .= '</table></td>'; |
$output .= '</table>'; |
|
if (@unmatched) { |
|
$output .= '<br /><br />'.&mt('Could not determine e-mail addresses for the following users:').'<ul>'; |
|
foreach my $username (sort @unmatched) { |
|
$output .= '<li>'.$username.'</li>'; |
|
} |
|
$output .= '</ul>'; |
|
} |
|
$output .= '</td>'; |
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Sender e-mail address')); |
$output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Sender e-mail address')); |
$output .= '<td><input type="text" name="sender" value="'.$sender.'" /></td>'; |
$output .= '<td><input type="text" name="sender" value="'.$sender.'" /></td>'; |
Line 586 ENDONE
|
Line 691 ENDONE
|
$output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),'process',&mt('Send Message')); |
$output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),'process',&mt('Send Message')); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
} else { |
} else { |
$output .= $lt{'nore'}; |
$output .= $lt{'nore'}."\n". |
|
'<input type="hidden" name="command" value="" />'."\n"; |
} |
} |
$output .= &echo_form_input('command'); |
$output .= '<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; |
|
$output .= &Apache::lonhtmlcommon::echo_form_input(['command','origin','subject','message','recipient','sender'],); |
$output .= '</form></body></html>'; |
$output .= '</form></body></html>'; |
$r->print($output); |
$r->print($output); |
return; |
return; |
Line 596 ENDONE
|
Line 703 ENDONE
|
|
|
|
|
sub print_request_receipt { |
sub print_request_receipt { |
my ($r,$dom,$tablecolor,$bodytag,$html,$ltext) =@_; |
my ($r,$formname,$dom,$tablecolor,$bodytag,$html,$ltext) =@_; |
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'}; |
my $from = $env{'form.sender'}; |
my $from = $env{'form.sender'}; |
my $jscript = <<ENDSCRIPT; |
my $jscript = <<ENDSCRIPT; |
function showCompose() { |
function goBack(target) { |
document.goback.command.value = 'compose'; |
document.$formname.command.value = target; |
document.goback.submit(); |
document.$formname.submit(); |
} |
} |
ENDSCRIPT |
ENDSCRIPT |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>'/adm/notify?command=pick_target', |
({href=>"javascript:goBack('pick_target')", |
text=>"Select audience"}); |
text=>"Select audience"}); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>'javascript:showCompose()', |
({href=>"javascript:goBack('compose')", |
text=>"Compose Message"}); |
text=>"Compose Message"}); |
&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 |
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs |
(undef,'E-mail Delivery','Broadcast_system_email'); |
(undef,'E-mail Delivery','Broadcast_system_email'); |
Line 622 ENDSCRIPT
|
Line 729 ENDSCRIPT
|
$html |
$html |
<head> |
<head> |
<title>LON-CAPA Notification E-mail</title> |
<title>LON-CAPA Notification E-mail</title> |
<script type"text/javascript"> |
<script type="text/javascript"> |
$jscript |
$jscript |
</script> |
</script> |
</head> |
</head> |
$bodytag |
$bodytag |
$breadcrumbs |
$breadcrumbs |
<br /> |
<br /> |
<form name="goback" method="post"> |
<form name="$formname" method="post"> |
ENDONE |
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); |
if (@deliveries > 0) { |
if (@deliveries > 0) { |
|
&store_mail($subject,$message,$dom,\@deliveries); |
$output .= '<tr> |
$output .= '<tr> |
<td> |
<td> |
<table cellpadding="4" cellspacing="2" width="100%"> |
<table cellpadding="4" cellspacing="2" width="100%"> |
Line 646 ENDONE
|
Line 754 ENDONE
|
</tr> |
</tr> |
<tr bgcolor="#eeeeee"> |
<tr bgcolor="#eeeeee"> |
<td valign="middle">Sent</td> |
<td valign="middle">Sent</td> |
<td valign="middle">'.$subject.'</td> |
<td valign="middle">'.&cr_to_br($subject).'</td> |
<td valign="middle">'.$message.'</td> |
<td valign="middle">'.&cr_to_br($message).'</td> |
<td>'; |
<td>'; |
foreach my $person (@deliveries) { |
foreach my $person (@deliveries) { |
my ($username,$email) = split(/:/,$person); |
my ($username,$email) = split(/:/,$person); |
Line 664 ENDONE
|
Line 772 ENDONE
|
} |
} |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= '<br /><a href="/adm/notify">Send another message?</a>'."\n"; |
$output .= '<br /><a href="/adm/notify">Send another message?</a>'."\n"; |
$output .= &echo_form_input(); |
$output .= '<input type="hidden" name="command" />'."\n". |
|
'<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; |
|
$output .= &Apache::lonhtmlcommon::echo_form_input(['command','origin']); |
$output .= ' |
$output .= ' |
</form> |
</form> |
</body> |
</body> |
Line 675 ENDONE
|
Line 785 ENDONE
|
|
|
sub broadcast_email { |
sub broadcast_email { |
my ($recipients,$subject,$from,$message,$deliveries,$ltext)=@_; |
my ($recipients,$subject,$from,$message,$deliveries,$ltext)=@_; |
# find some way to spread out 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; |
my ($username,$to) = split(/:/,$user); |
my ($username,$to) = split(/:/,$user); |
Line 693 sub broadcast_email {
|
Line 803 sub broadcast_email {
|
} |
} |
|
|
sub get_user_info { |
sub get_user_info { |
my ($user,%email_defaults,$ltext) = @_; |
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::lonnet::get('environment',\@emailtypes,$udom,$uname); |
Line 712 sub get_user_info {
|
Line 822 sub get_user_info {
|
$email = $uname.'@'.$email_defaults{$authtype}{$autharg}; |
$email = $uname.'@'.$email_defaults{$authtype}{$autharg}; |
} |
} |
} else { |
} else { |
if (defined($email_defaults{$authtype})) { |
if ((defined($email_defaults{$authtype})) && ($email_defaults{$authtype} ne '')) { |
$email = $uname.'@'.$email_defaults{$authtype}; |
$email = $uname.'@'.$email_defaults{$authtype}; |
} |
} |
} |
} |
Line 730 sub form_elements {
|
Line 840 sub form_elements {
|
%{$authtypes} = ( |
%{$authtypes} = ( |
krb4 => 'Kerberos 4', |
krb4 => 'Kerberos 4', |
krb5 => 'Kerberos 5', |
krb5 => 'Kerberos 5', |
int => 'Internal (LON-CAPA)', |
internal => 'Internal (LON-CAPA)', |
unix => 'Filesystem (UNIX)', |
unix => 'Filesystem (UNIX)', |
local => 'Local/Customized', |
local => 'Local/Customized', |
); |
); |
Line 739 sub form_elements {
|
Line 849 sub form_elements {
|
|
|
sub store_mail { |
sub store_mail { |
my ($subject,$message,$domain,$recipients,$attachmenturl,$ltext) = @_; |
my ($subject,$message,$domain,$recipients,$attachmenturl,$ltext) = @_; |
my %status = (); |
|
my %servers = (); |
my %servers = (); |
my $msgid=&packagemail($subject,$message,$domain, |
my $msgid=&packagemail($subject,$message,$domain, |
$recipients,\%servers,$attachmenturl); |
$recipients,\%servers,$attachmenturl); |
# Store in dc email db files on appropriate servers. |
# Store in dc email db files on appropriate servers. |
foreach my $server (keys(%servers)) { |
foreach my $server (keys(%servers)) { |
# FIXME This needs to be via a subroutine in lonnet |
unless (&Apache::lonnet::dcmailput($domain,$msgid,\%servers,$server) eq 'ok') { |
$status{$server} = &Apache::lonnet::critical( |
&Apache::lonnet::logthis('Storage of dc mail failed for domain'.$domain.' for server: '. |
'dcmailput:'.$domain.':'.&Apache::lonnet::escape($msgid).'='. |
$server.'. Message ID was '.$msgid); |
&Apache::lonnet::escape($servers{$server}),$server); |
} |
} |
} |
} |
} |
|
|
Line 836 sub unpackagemail {
|
Line 945 sub unpackagemail {
|
return %content; |
return %content; |
} |
} |
|
|
sub echo_form_input { |
sub cr_to_br { |
my (@excluded) = @_; |
my $incoming = shift; |
my $output = ''; |
$incoming =~ s/\n/\<br \/\>/g; |
foreach my $key (keys(%env)) { |
return $incoming; |
if ($key =~ /^form\.(.+)$/) { |
|
if ((!@excluded) || (!grep/^$1$/,@excluded)) { |
|
if (ref($env{$key})) { |
|
foreach my $value (@{$env{$key}}) { |
|
$output .= qq(<input type="hidden" name="$1" value="$value" />\n); |
|
} |
|
} else { |
|
$output .= qq(<input type="hidden" name="$1" value="$env{$key}" />\n); |
|
} |
|
} |
|
} |
|
} |
|
return $output; |
|
} |
} |
|
|
1; |
1; |