--- loncom/interface/lonnotify.pm 2007/11/13 03:53:30 1.27 +++ loncom/interface/lonnotify.pm 2014/12/11 13:15:35 1.41 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Sending messages # -# $Id: lonnotify.pm,v 1.27 2007/11/13 03:53:30 raeburn Exp $ +# $Id: lonnotify.pm,v 1.41 2014/12/11 13:15:35 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -118,7 +118,7 @@ sub start_page { $start_page $breadcrumbs <br /> -<form name="$formname" method="POST"> +<form name="$formname" method="post" action=""> ENDONE return $output; @@ -143,19 +143,35 @@ function next_page(caller) { } |; - my $output = &start_page(&add_script($jscript), - 'Broadcast e-mail to Domain', $formname); - - $output .= '<input type="hidden" name="command" />'; - $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 .= &end_page(); - $r->print($output); + my @menu= + ({ categorytitle=>'Broadcast e-mail to Domain', + items =>[ + { linktext => 'Send e-mail to selected users', + url => 'javascript:next_page('."'new'".')', + permission => 1, + #help => '', + icon => 'mail-reply-all.png', + linktitle => 'Send a new e-mail to selected users from this domain' + }, + { linktext => 'Display sent e-mails', + url => 'javascript:next_page('."'view'".')', + permission => 1, + #help => '', + icon => 'messalog.png', + linktitle => 'Display e-mail sent by Domain Coordinators in this domain' + }, + ] + }, + ); + + $r->print( + &start_page(&add_script($jscript), + 'Broadcast e-mail to Domain', $formname) + .'<input type="hidden" name="command" />' + .&Apache::lonhtmlcommon::generate_menu(@menu) + .&end_page() + ); return; } @@ -164,7 +180,7 @@ sub print_display_option_form { &Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"}); my $cmd = 'display'; - my $submit_text = 'Display e-mail'; + my $submit_text = &mt('Display e-mail'); my @roles = ('dc'); my $now = time; @@ -204,8 +220,8 @@ sub print_display_option_form { $output .= &Apache::lonhtmlcommon::row_title(&mt('Choose sender(s)')); my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles); my @domcc = (); - foreach my $server (keys %personnel) { - foreach my $user (sort(keys %{$personnel{$server}})) { + 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); @@ -270,11 +286,11 @@ ENDSCRIPT $output .= &Apache::loncommon::start_data_table(); if ($msgcount > 0) { $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>'. + '<th><a href="javascript:changeSort(\'date\')">'.&mt('Date').'</a></th>'. + '<th><a href="javascript:changeSort(\'subject\')">'.&mt('Subject').'</a></th>'. + '<th><a href="javascript:changeSort(\'sender\')">'.&mt('Sender').'</a></th>'. + '<th><a href="javascript:changeSort(\'message\')">'.&mt('Message').'</a></th>'. + '<th><a href="javascript:changeSort(\'recipients\')">'.&mt('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))) { @@ -341,7 +357,7 @@ ENDSCRIPT } } else { $output .= &Apache::loncommon::start_data_table_empty_row(). - '<td>No mail sent matching supplied criteria</td>'. + '<td>'.&mt('No mail sent matching supplied criteria').'</td>'. &Apache::loncommon::end_data_table_empty_row(); } $output .= &Apache::loncommon::end_data_table(); @@ -378,7 +394,7 @@ sub print_selection_form { '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', 'infs' => 'Internal, Filesystem and Local authentication: enter single default.', - 'comp' => 'Compose Message' + 'comp' => 'Compose E-mail' ); &Apache::lonhtmlcommon::add_breadcrumb ({text=>"Select Audience"}); @@ -397,6 +413,7 @@ sub print_selection_form { $jscript .= &Apache::courseclassifier::javascript_code_selections($formname,@codetitles); } } + my @standardnames = &Apache::loncommon::get_standard_codeitems(); my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom); @@ -410,7 +427,7 @@ sub print_selection_form { internal => 'text', krb4 => 'text', krb5 => 'text', - local => 'text', + localauth => 'text', unix => 'text', ); $jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements); @@ -420,7 +437,7 @@ function setCourseCat(formname) { if (formname.Year.options[formname.Year.selectedIndex].value == -1) { return; } - courseSet('Year'); + courseSet('$codetitles[0]'); for (var j=0; j<formname.Semester.length; j++) { if (formname.Semester.options[j].value == "$env{'form.Semester'}") { formname.Semester.options[j].selected = true; @@ -429,7 +446,7 @@ function setCourseCat(formname) { if (formname.Semester.options[formname.Semester.selectedIndex].value == -1) { return; } - courseSet('Semester'); + courseSet('$codetitles[1]'); for (var j=0; j<formname.Department.length; j++) { if (formname.Department.options[j].value == "$env{'form.Department'}") { formname.Department.options[j].selected = true; @@ -438,7 +455,7 @@ function setCourseCat(formname) { if (formname.Department.options[formname.Department.selectedIndex].value == -1) { return; } - courseSet('Department'); + courseSet('$codetitles[2]'); for (var j=0; j<formname.Number.length; j++) { if (formname.Number.options[j].value == "$env{'form.Number'}") { formname.Number.options[j].selected = true; @@ -464,10 +481,10 @@ function setCourseCat(formname) { </ul>'."\n"; my $submit_text = $lt{'comp'}; my $cmd = 'compose'; - $output .= &Apache::lonhtmlcommon::role_select_row(\@roles,'Roles'); - $output .= &Apache::lonhtmlcommon::course_select_row('Courses',$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles); + $output .= &Apache::lonhtmlcommon::role_select_row(\@roles,&mt('Roles')); + $output .= &Apache::lonhtmlcommon::course_select_row(&mt('Courses'),$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles,undef,undef,\@standardnames); $output .= &Apache::lonhtmlcommon::status_select_row(\%longtypes,&mt('Access status')); - $output .= &Apache::lonhtmlcommon::email_default_row(\%authtypes,&mt('Username -> Email conversion'),$descrip); + $output .= &Apache::lonhtmlcommon::email_default_row(\%authtypes,&mt('Username -> E-mail conversion'),$descrip); $output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),$cmd,$submit_text); $output .= &Apache::lonhtmlcommon::end_pick_box(); $output .= &end_page(); @@ -480,7 +497,7 @@ sub print_composition_form { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:goBack('pick_target')", text=>"Select Audience"}, - {text=>"Compose Message"}); + {text=>"Compose E-mail"}); my $jscript = &Apache::loncommon::check_uncheck_jscript(); $jscript .= qq| function goBack(target) { @@ -510,20 +527,15 @@ function goBack(target) { %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.', undef,undef,'Course'); } elsif ($coursefilter eq 'category') { - my $instcode = ''; - my @cats = ('Semester','Year','Department','Number'); - foreach my $category (@cats) { - if (defined($env{'form.'.$category})) { - unless ($env{'form.'.$category} eq '-1') { - $instcode .= $env{'form.'.$category}; - } - } - } + my $instcode = &Apache::courseclassifier::instcode_from_selectors($cdom); + my $regexp = ''; if ($instcode eq '') { $instcode = '.'; + } else { + $regexp = 1; } %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.', - undef,undef,'Course'); + undef,undef,'Course',$regexp); } elsif ($coursefilter eq 'specific') { if ($env{'form.coursetotal'} > 1) { my @course_ids = split(/&&/,$env{'form.courselist'}); @@ -633,7 +645,7 @@ function goBack(target) { $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) { + foreach my $username (sort(@unmatched)) { $output .= '<li>'.$username.'</li>'; } $output .= '</ul>'; @@ -642,7 +654,7 @@ function goBack(target) { $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(&mt('Submit'),'process',&mt('Send Message')); + $output .= &Apache::lonhtmlcommon::submit_row(&mt('Submit'),'process',&mt('Send')); $output .= &Apache::lonhtmlcommon::end_pick_box(); } else { $output .= $lt{'nore'}."\n". @@ -674,7 +686,7 @@ ENDSCRIPT text=>"Select audience"}); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:goBack('compose')", - text=>"Compose Message"}); + text=>"Compose E-mail"}); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/notify?command=process", text=>"Outcome"}); @@ -693,7 +705,7 @@ ENDSCRIPT '<th>'.&mt('Status').'</th>'. '<th>'.&mt('Subject').'</th>'. '<th>'.&mt('Message').'</th>'. - '<th>'.&mt('Recipents').'</th>'. + '<th>'.&mt('Recipients').'</th>'. &Apache::loncommon::end_data_table_header_row(); $output .= &Apache::loncommon::start_data_table_row(). '<td valign="middle">'.&mt('Sent').'</td>'. @@ -708,9 +720,9 @@ ENDSCRIPT &Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table(); } else { - $output .= 'No mail sent - no recipients identified'; + $output .= &mt('No mail sent - no recipients identified'); } - $output .= '<br /><a href="/adm/notify">Send another message?</a>'."\n"; + $output .= '<br /><a href="/adm/notify">'.&mt('Send another e-mail').'</a>'."\n"; $output .= '<input type="hidden" name="command" />'."\n". '<input type="hidden" name="origin" value="'.$formname.'" />'."\n"; $output .= &Apache::lonhtmlcommon::echo_form_input(['command','origin']); @@ -730,6 +742,7 @@ sub broadcast_email { $msg->to($to); $msg->subject($subject); $msg->add('From',"$from"); + $msg->add('Content-type','text/plain; charset=UTF-8'); if (my $fh = $msg->open()) { print $fh $message; $fh->close; @@ -769,16 +782,16 @@ sub get_user_info { sub form_elements { my ($longtypes,$authtypes) = @_; %{$longtypes} = ( - active => 'Currently has access', - previous => 'Previously had access', - future => 'Will have future access', + active => &mt('Currently has access'), + previous => &mt('Previously had access'), + future => &mt('Will have future access'), ); %{$authtypes} = ( krb4 => 'Kerberos 4', krb5 => 'Kerberos 5', internal => 'Internal (LON-CAPA)', unix => 'Filesystem (UNIX)', - local => 'Local/Customized', + localauth => 'Local/Customized', ); return; }