version 1.12, 2006/03/16 20:09:35
|
version 1.19, 2006/05/30 12:46:09
|
Line 34 use Apache::lonlocal;
|
Line 34 use Apache::lonlocal;
|
use Mail::Send; |
use Mail::Send; |
use HTML::TokeParser; |
use HTML::TokeParser; |
use HTML::Entities; |
use HTML::Entities; |
|
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
|
|
sub handler { |
sub handler { |
my ($r) = @_; |
my ($r) = @_; |
Line 58 sub handler {
|
Line 60 sub handler {
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
|
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'); |
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); |
|
&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); |
&print_request_receipt($r,$command,$cdom,$tablecolor); |
} elsif ($command eq 'compose') { |
} elsif ($command eq 'compose') { |
&print_composition_form($r,$command,$cdom,$tablecolor,$bodytag); |
&print_composition_form($r,$command,$cdom,$tablecolor); |
} elsif ($command eq 'pick_target') { |
} elsif ($command eq 'pick_target') { |
&print_selection_form($r,$command,$cdom,$tablecolor,$bodytag); |
&print_selection_form($r,$command,$cdom,$tablecolor); |
} elsif ($command eq 'pick_display') { |
} elsif ($command eq 'pick_display') { |
&print_display_option_form($r,$command,$cdom,$tablecolor,$bodytag); |
&print_display_option_form($r,$command,$cdom,$tablecolor); |
} elsif ($command eq 'display') { |
} elsif ($command eq 'display') { |
&print_display($r,$command,$cdom,$tablecolor,$bodytag); |
&print_display($r,$command,$cdom,$tablecolor); |
} else { |
} else { |
&print_front_page($r,'front',$cdom,$tablecolor,$bodytag); |
&print_front_page($r,'front',$cdom,$tablecolor); |
} |
} |
return OK; |
return OK; |
} |
} |
Line 98 sub add_script {
|
Line 87 sub add_script {
|
} |
} |
|
|
sub start_page { |
sub start_page { |
my ($jscript,$bodytag,$bread_title,$formname) = @_; |
my ($jscript,$bread_title,$formname) = @_; |
|
|
my $html = &Apache::lonxml::xmlbegin(); |
|
|
|
my $head = &Apache::loncommon::head('Notification E-mail',$jscript); |
|
|
|
|
my $loadcode; |
|
if ((defined($env{'form.origin'})) |
|
&& ($env{'form.command'} eq 'compose' |
|
|| $env{'form.command'} eq 'pick_target' |
|
|| $env{'form.command'} eq 'pick_display')) { |
|
if ($env{'form.origin'} ne '') { |
|
$loadcode = 'javascript:setFormElements(document.'.$env{'form.command'}.')'; |
|
if (($env{'form.command'} eq 'pick_target') |
|
&& (($env{'form.origin'} eq 'compose') |
|
|| ($env{'form.origin'} eq 'process'))) { |
|
if ($env{'form.coursepick'} eq 'category') { |
|
$loadcode .= ';javascript:setCourseCat(document.'.$env{'form.command'}.')'; |
|
} |
|
} |
|
} |
|
} |
|
|
|
my $start_page = |
|
&Apache::loncommon::start_page('Broadcast e-mail to users', $jscript, |
|
{'add_entries' => |
|
{'onload' => $loadcode,},}); |
my $breadcrumbs = |
my $breadcrumbs = |
&Apache::lonhtmlcommon::breadcrumbs(undef,$bread_title, |
&Apache::lonhtmlcommon::breadcrumbs($bread_title, |
'Broadcast_system_email'); |
'Broadcast_system_email'); |
my $output = <<"ENDONE"; |
my $output = <<"ENDONE"; |
$html |
$start_page |
$head |
|
$bodytag |
|
$breadcrumbs |
$breadcrumbs |
<br /> |
<br /> |
<form name="$formname" method="POST"> |
<form name="$formname" method="POST"> |
Line 124 sub end_page {
|
Line 128 sub end_page {
|
} |
} |
|
|
sub print_front_page { |
sub print_front_page { |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
my ($r,$formname,$cdom,$tablecolor) = @_; |
|
|
my $jscript = qq| |
my $jscript = qq| |
function next_page(caller) { |
function next_page(caller) { |
Line 138 function next_page(caller) {
|
Line 142 function next_page(caller) {
|
} |
} |
|; |
|; |
|
|
my $output = &start_page(&add_script($jscript), $bodytag, |
my $output = &start_page(&add_script($jscript), |
'Broadcast e-mail to Domain', $formname); |
'Broadcast e-mail to Domain', $formname); |
|
|
$output .= '<input type="hidden" name="command" />'; |
$output .= '<input type="hidden" name="command" />'; |
Line 157 function next_page(caller) {
|
Line 161 function next_page(caller) {
|
} |
} |
|
|
sub print_display_option_form { |
sub print_display_option_form { |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
my ($r,$formname,$cdom,$tablecolor) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"}); |
&Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"}); |
|
|
my $table_width = ''; |
my $table_width = ''; |
Line 190 sub print_display_option_form {
|
Line 194 sub print_display_option_form {
|
); |
); |
my $jscript = &Apache::lonhtmlcommon::set_form_elements(\%elements); |
my $jscript = &Apache::lonhtmlcommon::set_form_elements(\%elements); |
|
|
my $output = &start_page(&add_script($jscript), $bodytag, |
my $output = &start_page(&add_script($jscript), |
'Broadcast e-mail display options', $formname); |
'Broadcast e-mail display options', $formname); |
|
|
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
$output .= &Apache::lonhtmlcommon::start_pick_box($table_width); |
Line 218 sub print_display_option_form {
|
Line 222 sub print_display_option_form {
|
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::row_closure(); |
$output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),$cmd,$submit_text); |
$output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),$cmd,$submit_text); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= &Apache::lonhtmlcommon::end_pick_box(); |
$output .= qq( |
$output .= qq(<input type="hidden" name="sortby" value="date" />\n). |
<input type="hidden" name="sortby" value="date" /> |
&end_page(); |
</form> |
|
</body> |
|
</html>); |
|
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
|
|
sub print_display { |
sub print_display { |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
my ($r,$formname,$cdom,$tablecolor) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:goBack('pick_display')", |
({href=>"javascript:goBack('pick_display')", |
text=>"Display options"}, |
text=>"Display options"}, |
Line 259 function goBack(target) {
|
Line 260 function goBack(target) {
|
|
|
ENDSCRIPT |
ENDSCRIPT |
|
|
my $output = &start_page(&add_script($jscript), $bodytag, |
my $output = &start_page(&add_script($jscript), |
'Display Broadcast e-mail', $formname); |
'Display Broadcast e-mail', $formname); |
|
|
foreach my $msgid (keys(%sentmail)) { |
foreach my $msgid (keys(%sentmail)) { |
Line 295 ENDSCRIPT
|
Line 296 ENDSCRIPT
|
$rowColor = $rowColor2; |
$rowColor = $rowColor2; |
} |
} |
my $recipients = ''; |
my $recipients = ''; |
my ($date,$subj,$sname,$sdom) = |
my ($date,undef,$sname,$sdom) = |
&Apache::lonmsg::unpackmsgid($msgid,undef,1); |
&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}{recipient}}))) { |
foreach my $user (sort(keys(%{$dcmail{$msgid}{recipient}}))) { |
$recipients .= $dcmail{$msgid}{recipient}{$user}.', '; |
$recipients .= $dcmail{$msgid}{recipient}{$user}.', '; |
Line 308 ENDSCRIPT
|
Line 308 ENDSCRIPT
|
} |
} |
} else { |
} else { |
foreach my $msgid (sort(keys(%dcmail))) { |
foreach my $msgid (sort(keys(%dcmail))) { |
my ($date,$subj,$sname,$sdom) = |
my ($date,undef,$sname,$sdom) = |
&Apache::lonmsg::unpackmsgid($msgid,undef,1); |
&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') { |
Line 344 ENDSCRIPT
|
Line 343 ENDSCRIPT
|
} |
} |
$recipients =~ s/,\s$//; |
$recipients =~ s/,\s$//; |
} |
} |
my ($date,$subj,$sname,$sdom) = |
my ($date,undef,$sname,$sdom) = |
&Apache::lonmsg::unpackmsgid($msgid,undef,1); |
&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 368 ENDSCRIPT
|
Line 366 ENDSCRIPT
|
$output .= qq(<input type="hidden" name="origin" value="$formname" />\n); |
$output .= qq(<input type="hidden" name="origin" value="$formname" />\n); |
$output .= qq(<input type="hidden" name="command" />\n); |
$output .= qq(<input type="hidden" name="command" />\n); |
$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 .= &end_page(); |
</form> |
|
</body |
|
</html>); |
|
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
|
|
sub print_selection_form { |
sub print_selection_form { |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
my ($r,$formname,$cdom,$tablecolor) = @_; |
my %coursecodes = (); |
my %coursecodes = (); |
my %codes = (); |
my %codes = (); |
my @codetitles = (); |
my @codetitles = (); |
Line 463 function setCourseCat(formname) {
|
Line 458 function setCourseCat(formname) {
|
|
|
|
|
my $output = &start_page(&add_script($jscript).$cb_jscript, |
my $output = &start_page(&add_script($jscript).$cb_jscript, |
$bodytag, 'Choose e-mail audience', $formname); |
'Choose e-mail audience', $formname); |
|
|
$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 = (); |
my %authtypes = (); |
my %authtypes = (); |
&form_elements(\%longtypes,\%authtypes); |
&form_elements(\%longtypes,\%authtypes); |
my $descrip = $lt{'buil'}.' |
my $descrip = $lt{'buil'}.' |
<ul> |
<ul> |
<li>'.$lt{'kerb'}.'<br />(e.g., MSU.EDU=msu.edu, MSUE.EDU=msue.msu.edu).</li> |
<li>'.$lt{'kerb'}.'<br />(e.g., MSU.EDU=msu.edu, MSUE.EDU=msue.msu.edu).</li> |
<li>'.$lt{'infs'}.'</li> |
<li>'.$lt{'infs'}.'</li> |
</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,$col_width,$tablecolor,'Roles'); |
$output .= &Apache::lonhtmlcommon::role_select_row(\@roles,$col_width,$tablecolor,'Roles'); |
$output .= &Apache::lonhtmlcommon::course_select_row($col_width,$tablecolor,'Courses',$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles); |
$output .= &Apache::lonhtmlcommon::course_select_row($col_width,$tablecolor,'Courses',$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles); |
$output .= &Apache::lonhtmlcommon::status_select_row(\%longtypes,$col_width,$tablecolor,&mt('Access status')); |
$output .= &Apache::lonhtmlcommon::status_select_row(\%longtypes,$col_width,$tablecolor,&mt('Access status')); |
$output .= &Apache::lonhtmlcommon::email_default_row(\%authtypes,$col_width,$tablecolor,&mt('Username -> Email conversion'),$descrip); |
$output .= &Apache::lonhtmlcommon::email_default_row(\%authtypes,$col_width,$tablecolor,&mt('Username -> Email conversion'),$descrip); |
$output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),$cmd,$submit_text); |
$output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),$cmd,$submit_text); |
$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_composition_form { |
sub print_composition_form { |
my ($r,$formname,$cdom,$tablecolor,$bodytag) = @_; |
my ($r,$formname,$cdom,$tablecolor) = @_; |
&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 517 function goBack(target) {
|
Line 509 function goBack(target) {
|
); |
); |
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
$jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); |
|
|
$r->print(&start_page(&add_script($jscript), $bodytag, |
$r->print(&start_page(&add_script($jscript), |
'Broadcast e-mail to users', $formname)); |
'Broadcast e-mail to users', $formname)); |
|
|
my $coursefilter = $env{'form.coursepick'}; |
my $coursefilter = $env{'form.coursepick'}; |
Line 634 function goBack(target) {
|
Line 626 function goBack(target) {
|
} |
} |
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=&escape($username).':'.&escape($recipients{$username}); |
$output .= '<tr><td><input type="checkbox" name="recipient" value="'.$value.'" /></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>'; |
} |
} |
} |
} |
Line 659 function goBack(target) {
|
Line 651 function goBack(target) {
|
} |
} |
$output .= '<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; |
$output .= '<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; |
$output .= &Apache::lonhtmlcommon::echo_form_input(['command','origin','subject','message','recipient','sender'],); |
$output .= &Apache::lonhtmlcommon::echo_form_input(['command','origin','subject','message','recipient','sender'],); |
$output .= '</form></body></html>'; |
$output .= &end_page(); |
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
|
|
|
|
sub print_request_receipt { |
sub print_request_receipt { |
my ($r,$formname,$dom,$tablecolor,$bodytag) =@_; |
my ($r,$formname,$dom,$tablecolor) =@_; |
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 689 ENDSCRIPT
|
Line 681 ENDSCRIPT
|
text=>"Outcome"}); |
text=>"Outcome"}); |
|
|
|
|
my $output = &start_page(&add_script($jscript), $bodytag, |
my $output = &start_page(&add_script($jscript), 'E-mail Delivery', |
'E-mail Delivery', $formname); |
$formname); |
|
|
$output .= &Apache::lonhtmlcommon::start_pick_box(); |
$output .= &Apache::lonhtmlcommon::start_pick_box(); |
my @deliveries = (); |
my @deliveries = (); |
Line 713 ENDSCRIPT
|
Line 705 ENDSCRIPT
|
<td>'; |
<td>'; |
foreach my $person (@deliveries) { |
foreach my $person (@deliveries) { |
my ($username,$email) = split(/:/,$person); |
my ($username,$email) = split(/:/,$person); |
$output .= &Apache::lonnet::unescape($email).' ('.&Apache::lonnet::unescape($username).')<br />'."\n"; |
$output .= &unescape($email).' ('.&unescape($username).')<br />'."\n"; |
} |
} |
$output .= '</td> |
$output .= '</td> |
</tr> |
</tr> |
Line 728 ENDSCRIPT
|
Line 720 ENDSCRIPT
|
$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']); |
$output .= ' |
$output .= &end_page(); |
</form> |
|
</body> |
|
</html>'; |
|
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
Line 742 sub broadcast_email {
|
Line 731 sub broadcast_email {
|
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); |
$username = &Apache::lonnet::unescape($username); |
$username = &unescape($username); |
$to = &Apache::lonnet::unescape($to); |
$to = &unescape($to); |
$msg->to($to); |
$msg->to($to); |
$msg->subject($subject); |
$msg->subject($subject); |
$msg->add('From',"$from"); |
$msg->add('From',"$from"); |