--- loncom/interface/lonnotify.pm 2006/04/23 04:04:38 1.17 +++ loncom/interface/lonnotify.pm 2006/11/01 22:22:31 1.25 @@ -1,3 +1,7 @@ +# The LearningOnline Network with CAPA +# Sending messages +# +# $Id: lonnotify.pm,v 1.25 2006/11/01 22:22:31 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,13 +31,15 @@ package Apache::lonnotify; use strict; use Apache::lonnet; use Apache::loncommon; -use Apache::lonsupportreq; +use Apache::courseclassifier; use LONCAPA::Enrollment; use Apache::Constants qw(:common :http); use Apache::lonlocal; use Mail::Send; use HTML::TokeParser; use HTML::Entities; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; sub handler { my ($r) = @_; @@ -57,24 +63,21 @@ sub handler { &Apache::lonhtmlcommon::clear_breadcrumbs(); - my $function = &Apache::loncommon::get_users_function(); - my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg'); - &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/notify', text=>"Broadcast E-mail"}); if ($command eq 'process') { - &print_request_receipt($r,$command,$cdom,$tablecolor); + &print_request_receipt($r,$command,$cdom); } elsif ($command eq 'compose') { - &print_composition_form($r,$command,$cdom,$tablecolor); + &print_composition_form($r,$command,$cdom); } elsif ($command eq 'pick_target') { - &print_selection_form($r,$command,$cdom,$tablecolor); + &print_selection_form($r,$command,$cdom); } elsif ($command eq 'pick_display') { - &print_display_option_form($r,$command,$cdom,$tablecolor); + &print_display_option_form($r,$command,$cdom); } elsif ($command eq 'display') { - &print_display($r,$command,$cdom,$tablecolor); + &print_display($r,$command,$cdom); } else { - &print_front_page($r,'front',$cdom,$tablecolor); + &print_front_page($r,'front',$cdom); } return OK; } @@ -109,7 +112,7 @@ sub start_page { {'add_entries' => {'onload' => $loadcode,},}); my $breadcrumbs = - &Apache::lonhtmlcommon::breadcrumbs(undef,$bread_title, + &Apache::lonhtmlcommon::breadcrumbs($bread_title, 'Broadcast_system_email'); my $output = <<"ENDONE"; $start_page @@ -126,7 +129,7 @@ sub end_page { } sub print_front_page { - my ($r,$formname,$cdom,$tablecolor) = @_; + my ($r,$formname,$cdom) = @_; my $jscript = qq| function next_page(caller) { @@ -144,14 +147,12 @@ function next_page(caller) { 'Broadcast e-mail to Domain', $formname); $output .= '<input type="hidden" name="command" />'; - $output .= &Apache::lonhtmlcommon::start_pick_box(); - $output .= '<table cellspacing="8" cellpadding="8">'. + $output .= '<table class="LC_notify_front_page">'. '<tr><td><a href="javascript:next_page('."'new'".')">'. 'Send a new e-mail message to selected users from this domain</a></td></tr><tr>'. '<td><a href="javascript:next_page('."'view'".')">'. 'Display e-mail sent by Domain Coordinators in this domain'. '</a></td></tr></table>'; - $output .= &Apache::lonhtmlcommon::end_pick_box(); $output .= &end_page(); $r->print($output); @@ -159,11 +160,9 @@ function next_page(caller) { } sub print_display_option_form { - my ($r,$formname,$cdom,$tablecolor) = @_; + my ($r,$formname,$cdom) = @_; &Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"}); - my $table_width = ''; - my $col_width = '200'; my $cmd = 'display'; my $submit_text = 'Display e-mail'; my @roles = ('dc'); @@ -195,30 +194,28 @@ sub print_display_option_form { my $output = &start_page(&add_script($jscript), 'Broadcast e-mail display options', $formname); - $output .= &Apache::lonhtmlcommon::start_pick_box($table_width); - $output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Date range')); - $output .= '<td><table><tr><td>Earliest to display: </td><td>'. + $output .= &Apache::lonhtmlcommon::start_pick_box(); + $output .= &Apache::lonhtmlcommon::row_title(&mt('Date range')); + $output .= '<table><tr><td>'.&mt('Earliest to display:').' </td><td>'. $startdateform.'</td></tr>'; - $output .= '<tr><td>Latest to display: </td><td>'.$enddateform. - '</td></tr></table></td>'; + $output .= '<tr><td>'.&mt('Latest to display:').' </td><td>'.$enddateform. + '</td></tr></table>'; $output .= &Apache::lonhtmlcommon::row_closure(); - $output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Choose sender(s)')); + $output .= &Apache::lonhtmlcommon::row_title(&mt('Choose sender(s)')); my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles); - $output .= '<td>'; my @domcc = (); foreach my $server (keys %personnel) { foreach my $user (sort(keys %{$personnel{$server}})) { my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$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.')'; + $output .= '<input type="checkbox" name="sender" value="'.$uname.':'.$udom.'" /> '.$userinfo{'firstname'}.' '.$userinfo{'lastname'}.' ('.$uname.':'.$udom.')'; push (@domcc,$uname.':'.$udom); } } } - $output .= '</td>'; $output .= &Apache::lonhtmlcommon::row_closure(); - $output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),$cmd,$submit_text); + $output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),$cmd,$submit_text); $output .= &Apache::lonhtmlcommon::end_pick_box(); $output .= qq(<input type="hidden" name="sortby" value="date" />\n). &end_page(); @@ -227,17 +224,12 @@ sub print_display_option_form { } sub print_display { - my ($r,$formname,$cdom,$tablecolor) = @_; + my ($r,$formname,$cdom) = @_; &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:goBack('pick_display')", text=>"Display options"}, {text=>"E-mail display"}); - my $table_width = ''; - my $col_width = '200'; - my $rowColor1 = "#ffffff"; - my $rowColor2 = "#eeeeee"; - my $rowColor; my $msgcount = 0; my $start = &Apache::lonhtmlcommon::get_date_from_form('startdate'); my $end = &Apache::lonhtmlcommon::get_date_from_form('enddate'); @@ -275,24 +267,18 @@ ENDSCRIPT } } } - $output .= &Apache::lonhtmlcommon::start_pick_box(); + $output .= &Apache::loncommon::start_data_table(); if ($msgcount > 0) { - my $rowNum = 0; - $output .= '<tr><td><table cellpadding="4" cellspacing="2" width="100%"> - <tr bgcolor="'.$tablecolor.'" align="center"> - <td><b><a href="javascript:changeSort('."'date'".')">Date</a></b></td> - <td><b><a href="javascript:changeSort('."'subject'".')">Subject</a></b></td> - <td><b><a href="javascript:changeSort('."'sender'".')">Sender</a></b></td> - <td><b><a href="javascript:changeSort('."'message'".')">Message</a></b></td> - <td><b><a href="javascript:changeSort('."'recipients'".')">Recipients</a></b></td> - </tr>'; + $output .= &Apache::loncommon::start_data_table_header_row(). + '<th><a href="javascript:changeSort(\'date\')">Date</a></th>'. + '<th><a href="javascript:changeSort(\'subject\')">Subject</a></th>'. + '<th><a href="javascript:changeSort(\'sender\')">Sender</a></th>'. + '<th><a href="javascript:changeSort(\'message\')">Message</a></th>'. + '<th><a href="javascript:changeSort(\'recipients\')">Recipients</a></th>'. + &Apache::loncommon::end_data_table_header_row(); + if (($env{'form.sortby'} eq 'date') || ($env{'form.sortby'} eq '') || (!defined($env{'form.sortby'})) || (($env{'form.sortby'} eq 'sender') && (@senders <= 1))) { foreach my $msgid (sort(keys(%dcmail))) { - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } my $recipients = ''; my ($date,undef,$sname,$sdom) = &Apache::lonmsg::unpackmsgid($msgid,undef,1); @@ -301,8 +287,12 @@ ENDSCRIPT $recipients .= $dcmail{$msgid}{recipient}{$user}.', '; } $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"; - $rowNum ++; + $output .= &Apache::loncommon::start_data_table_row(). + '<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>'."\n". + &Apache::loncommon::end_data_table_row(); } } else { foreach my $msgid (sort(keys(%dcmail))) { @@ -327,11 +317,6 @@ ENDSCRIPT } foreach my $key (sort(keys(%Sortby))) { foreach my $msgid (@{$Sortby{$key}}) { - if ($rowNum %2 == 1) { - $rowColor = $rowColor1; - } else { - $rowColor = $rowColor2; - } my $recipients = ''; if ($env{'form.sortby'} eq 'recipients') { $recipients = $key; @@ -344,16 +329,22 @@ ENDSCRIPT my ($date,undef,$sname,$sdom) = &Apache::lonmsg::unpackmsgid($msgid,undef,1); $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"; - $rowNum ++; + $output .= &Apache::loncommon::start_data_table_row(). + '<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>'."\n". + &Apache::loncommon::end_data_table_row(); } } } - $output .= '</table></td></tr>'; } else { - $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::loncommon::start_data_table_empty_row(). + '<td>No mail sent matching supplied criteria</td>'. + &Apache::loncommon::end_data_table_empty_row(); } - $output .= &Apache::lonhtmlcommon::end_pick_box(); + $output .= &Apache::loncommon::end_data_table(); $output .= &Apache::lonhtmlcommon::echo_form_input(['sortby','command','origin']); my $curr_sortby; if (defined($env{'form.sortby'})) { @@ -370,7 +361,7 @@ ENDSCRIPT } sub print_selection_form { - my ($r,$formname,$cdom,$tablecolor) = @_; + my ($r,$formname,$cdom) = @_; my %coursecodes = (); my %codes = (); my @codetitles = (); @@ -383,8 +374,6 @@ sub print_selection_form { my $totcodes = 0; my $format_reply; my $jscript = ''; - my $table_width = '100%'; - my $col_width = '200'; my %lt=&Apache::lonlocal::texthash( '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', @@ -394,13 +383,18 @@ sub print_selection_form { &Apache::lonhtmlcommon::add_breadcrumb ({text=>"Select Audience"}); - $totcodes = &Apache::lonsupportreq::retrieve_instcodes(\%coursecodes,$cdom,$totcodes); + $totcodes = &Apache::courseclassifier::retrieve_instcodes(\%coursecodes,$cdom,$totcodes); if ($totcodes > 0) { $format_reply = &Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order); if ($format_reply eq 'ok') { my $numtypes = @codetitles; - &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::courseclassifier::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles); + 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); } } @@ -458,7 +452,7 @@ function setCourseCat(formname) { my $output = &start_page(&add_script($jscript).$cb_jscript, 'Choose e-mail audience', $formname); - $output .= &Apache::lonhtmlcommon::start_pick_box($table_width); + $output .= &Apache::lonhtmlcommon::start_pick_box(); my @roles = ('ow','cc','in','ta','ep','st','cr'); my %longtypes = (); my %authtypes = (); @@ -470,11 +464,11 @@ function setCourseCat(formname) { </ul>'."\n"; my $submit_text = $lt{'comp'}; my $cmd = 'compose'; - $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::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::submit_row($col_width,$tablecolor,&mt('Submit'),$cmd,$submit_text); + $output .= &Apache::lonhtmlcommon::role_select_row(\@roles,'Roles'); + $output .= &Apache::lonhtmlcommon::course_select_row('Courses',$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles); + $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::submit_row(&mt('Submit'),$cmd,$submit_text); $output .= &Apache::lonhtmlcommon::end_pick_box(); $output .= &end_page(); $r->print($output); @@ -482,7 +476,7 @@ function setCourseCat(formname) { } sub print_composition_form { - my ($r,$formname,$cdom,$tablecolor) = @_; + my ($r,$formname,$cdom) = @_; &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:goBack('pick_target')", text=>"Select Audience"}, @@ -513,7 +507,8 @@ function goBack(target) { my $coursefilter = $env{'form.coursepick'}; my %courses = (); if ($coursefilter eq 'all') { - %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.'); + %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.', + undef,undef,'Course'); } elsif ($coursefilter eq 'category') { my $instcode = ''; my @cats = ('Semester','Year','Department','Number'); @@ -527,7 +522,8 @@ function goBack(target) { if ($instcode eq '') { $instcode = '.'; } - %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.'); + %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.', + undef,undef,'Course'); } elsif ($coursefilter eq 'specific') { if ($env{'form.coursetotal'} > 1) { my @course_ids = split(/&&/,$env{'form.courselist'}); @@ -545,8 +541,6 @@ function goBack(target) { my %longtypes = (); my %authtypes = (); my %email_defaults = (); - my $table_width = '100%'; - my $col_width = '200'; &form_elements(\%longtypes,\%authtypes); foreach my $auth (keys(%authtypes)) { @@ -605,30 +599,35 @@ function goBack(target) { my $output; if ($totalrecip > 0) { - $output .= &Apache::lonhtmlcommon::start_pick_box($table_width); - $output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Subject')); - $output .= ' <td><input type="text" name="subject" size="30" /></td>'; + $output .= &Apache::lonhtmlcommon::start_pick_box(); + $output .= &Apache::lonhtmlcommon::row_title(&mt('Subject')); + $output .= '<input type="text" name="subject" size="30" />'; $output .= &Apache::lonhtmlcommon::row_closure(); - $output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Message')); - $output .= ' <td><textarea name="message" id="message" - cols="60" rows="10" wrap="hard"></textarea></td>'; + $output .= &Apache::lonhtmlcommon::row_title(&mt('Message')); + $output .= ' <textarea name="message" id="message" + cols="60" rows="10" wrap="hard"></textarea>'; $output .= &Apache::lonhtmlcommon::row_closure(); - $output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Recipients')); - $output .= '<td><input type="button" value="check all" + $output .= &Apache::lonhtmlcommon::row_title(&mt('Recipients')); + $output .= '<input type="button" value="check all" onclick="javascript:checkAll(document.compose.recipient)" /> <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.compose.recipient)" /> - <br /><table border="0">'; + <br />'; + $output .= &Apache::loncommon::start_data_table(); if (keys(%recipients) > 0) { - $output .= '<tr><td> </td><td><small><b>username:domain</b></small></td><td> </td><td><small><b>'.$lt{'emad'}.'</b></small></td></tr>'; + $output .= &Apache::loncommon::start_data_table_header_row(); + $output .= '<th> <th>username:domain</th><th>'.$lt{'emad'}.'</th>'; + $output .= &Apache::loncommon::end_data_table_header_row(); } foreach my $username (sort(keys(%recipients))) { + $output .= &Apache::loncommon::start_data_table_row(); if ($recipients{$username} =~ /\@/) { - my $value=&Apache::lonnet::escape($username).':'.&Apache::lonnet::escape($recipients{$username}); - $output .= '<tr><td><input type="checkbox" name="recipient" value="'.$value.'" /></td><td>'.$username.'</td><td> </td><td>'.$recipients{$username}.'</td></tr>'; + my $value=&escape($username).':'.&escape($recipients{$username}); + $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 .= '</table>'; + $output .= &Apache::loncommon::end_data_table(); if (@unmatched) { $output .= '<br /><br />'.&mt('Could not determine e-mail addresses for the following users:').'<ul>'; foreach my $username (sort @unmatched) { @@ -636,12 +635,11 @@ function goBack(target) { } $output .= '</ul>'; } - $output .= '</td>'; $output .= &Apache::lonhtmlcommon::row_closure(); - $output .= &Apache::lonhtmlcommon::row_title($col_width,$tablecolor,&mt('Sender e-mail address')); - $output .= '<td><input type="text" name="sender" value="'.$sender.'" /></td>'; + $output .= &Apache::lonhtmlcommon::row_title(&mt('Sender e-mail address')); + $output .= '<input type="text" name="sender" value="'.$sender.'" />'; $output .= &Apache::lonhtmlcommon::row_closure(); - $output .= &Apache::lonhtmlcommon::submit_row($col_width,$tablecolor,&mt('Submit'),'process',&mt('Send Message')); + $output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),'process',&mt('Send Message')); $output .= &Apache::lonhtmlcommon::end_pick_box(); } else { $output .= $lt{'nore'}."\n". @@ -656,7 +654,7 @@ function goBack(target) { sub print_request_receipt { - my ($r,$formname,$dom,$tablecolor) =@_; + my ($r,$formname,$dom) =@_; my @recipients = &Apache::loncommon::get_env_multiple('form.recipient'); my $subject = $env{'form.subject'}; my $message = $env{'form.message'}; @@ -682,38 +680,33 @@ ENDSCRIPT my $output = &start_page(&add_script($jscript), 'E-mail Delivery', $formname); - $output .= &Apache::lonhtmlcommon::start_pick_box(); + my @deliveries = (); &broadcast_email(\@recipients,$subject,$from,$message,\@deliveries); if (@deliveries > 0) { + $output .= &Apache::loncommon::start_data_table(); &store_mail($subject,$message,$dom,\@deliveries); - $output .= '<tr> - <td> - <table cellpadding="4" cellspacing="2" width="100%"> - <tr bgcolor="'.$tablecolor.'" align="center"> - <td><b>Status</b></td> - <td><b>Subject</b></td> - <td><b>Message</b></td> - <td><b>Recipients</b></td> - </tr> - <tr bgcolor="#eeeeee"> - <td valign="middle">Sent</td> - <td valign="middle">'.&cr_to_br($subject).'</td> - <td valign="middle">'.&cr_to_br($message).'</td> - <td>'; + $output .= &Apache::loncommon::start_data_table_header_row(). + '<th>'.&mt('Status').'</th>'. + '<th>'.&mt('Subject').'</th>'. + '<th>'.&mt('Message').'</th>'. + '<th>'.&mt('Recipents').'</th>'. + &Apache::loncommon::end_data_table_header_row(); + $output .= &Apache::loncommon::start_data_table_row(). + '<td valign="middle">'.&mt('Sent').'</td>'. + '<td valign="middle">'.&cr_to_br($subject).'</td>'. + '<td valign="middle">'.&cr_to_br($message).'</td>'. + '<td>'; foreach my $person (@deliveries) { 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> - </tr> - </table> - </td> - </tr>'; + $output .= '</td>'. + &Apache::loncommon::end_data_table_row(). + &Apache::loncommon::end_data_table(); } else { $output .= 'No mail sent - no recipients identified'; } - $output .= &Apache::lonhtmlcommon::end_pick_box(); $output .= '<br /><a href="/adm/notify">Send another message?</a>'."\n"; $output .= '<input type="hidden" name="command" />'."\n". '<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; @@ -729,8 +722,8 @@ sub broadcast_email { foreach my $user (@{$recipients}) { my $msg = new Mail::Send; my ($username,$to) = split(/:/,$user); - $username = &Apache::lonnet::unescape($username); - $to = &Apache::lonnet::unescape($to); + $username = &unescape($username); + $to = &unescape($to); $msg->to($to); $msg->subject($subject); $msg->add('From',"$from"); @@ -746,7 +739,7 @@ sub get_user_info { my ($user,%email_defaults) = @_; my ($uname,$udom) = split(/:/,$user); my @emailtypes = ('permanentemail','critnotification','notification'); - my %userinfo = &Apache::lonnet::get('environment',\@emailtypes,$udom,$uname); + my %userinfo = &Apache::loncommon::getemails($uname,$udom); my $email = ''; foreach my $type (@emailtypes) { $email = $userinfo{$type};