Diff for /loncom/interface/lonnotify.pm between versions 1.22 and 1.43

version 1.22, 2006/07/11 15:37:59 version 1.43, 2019/07/23 13:58:53
Line 1 Line 1
   # The LearningOnline Network with CAPA
   # Sending messages
   #
   # $Id$
 #  #
 # Copyright Michigan State University Board of Trustees  # Copyright Michigan State University Board of Trustees
 #  #
Line 27  package Apache::lonnotify; Line 31  package Apache::lonnotify;
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonsupportreq;  use Apache::courseclassifier;
 use LONCAPA::Enrollment;  use LONCAPA::Enrollment;
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
 use Apache::lonlocal;  use Apache::lonlocal;
Line 114  sub start_page { Line 118  sub start_page {
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
 <br />  <br />
 <form name="$formname" method="POST">  <form name="$formname" method="post" action="">
 ENDONE  ENDONE
   
     return $output;      return $output;
Line 139  function next_page(caller) { Line 143  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;      return;
 }  }
   
Line 160  sub print_display_option_form { Line 180  sub print_display_option_form {
     &Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"});      &Apache::lonhtmlcommon::add_breadcrumb({text=>"Display options"});
   
     my $cmd = 'display';      my $cmd = 'display';
     my $submit_text = 'Display e-mail';      my $submit_text = &mt('Display e-mail');
     my @roles = ('dc');      my @roles = ('dc');
     my $now = time;      my $now = time;
   
Line 200  sub print_display_option_form { Line 220  sub print_display_option_form {
     $output .= &Apache::lonhtmlcommon::row_title(&mt('Choose sender(s)'));      $output .= &Apache::lonhtmlcommon::row_title(&mt('Choose sender(s)'));
     my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles);      my %personnel = &Apache::lonnet::get_domain_roles($cdom,\@roles);
     my @domcc = ();      my @domcc = ();
     foreach my $server (keys %personnel) {      foreach my $server (keys(%personnel)) {
         foreach my $user (sort(keys %{$personnel{$server}})) {          foreach my $user (sort(keys(%{$personnel{$server}}))) {
             my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);              my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);
             unless (grep/^$uname:$udom$/,@domcc) {              unless (grep/^$uname:$udom$/,@domcc) {
                 my %userinfo = &Apache::lonnet::get('environment',['lastname','firstname'],$udom,$uname);                  my %userinfo = &Apache::lonnet::get('environment',['lastname','firstname'],$udom,$uname);
                 $output .= '<input type="checkbox" name="sender" value="'.$uname.':'.$udom.'" />&nbsp;'.$userinfo{firstname}.' '.$userinfo{lastname}.'&nbsp;&nbsp;('.$uname.':'.$udom.')';                  $output .= '<input type="checkbox" name="sender" value="'.$uname.':'.$udom.'" />&nbsp;'.$userinfo{'firstname'}.' '.$userinfo{'lastname'}.'&nbsp;&nbsp;('.$uname.':'.$udom.')';
                 push (@domcc,$uname.':'.$udom);                  push (@domcc,$uname.':'.$udom);
             }              }
         }          }
Line 266  ENDSCRIPT Line 286  ENDSCRIPT
     $output .= &Apache::loncommon::start_data_table();      $output .= &Apache::loncommon::start_data_table();
     if ($msgcount > 0) {      if ($msgcount > 0) {
         $output .= &Apache::loncommon::start_data_table_header_row().          $output .= &Apache::loncommon::start_data_table_header_row().
     '<th><a href="javascript:changeSort(\'date\')">Date</a></th>'.      '<th><a href="javascript:changeSort(\'date\')">'.&mt('Date').'</a></th>'.
     '<th><a href="javascript:changeSort(\'subject\')">Subject</a></th>'.      '<th><a href="javascript:changeSort(\'subject\')">'.&mt('Subject').'</a></th>'.
     '<th><a href="javascript:changeSort(\'sender\')">Sender</a></th>'.      '<th><a href="javascript:changeSort(\'sender\')">'.&mt('Sender').'</a></th>'.
     '<th><a href="javascript:changeSort(\'message\')">Message</a></th>'.      '<th><a href="javascript:changeSort(\'message\')">'.&mt('Message').'</a></th>'.
     '<th><a href="javascript:changeSort(\'recipients\')">Recipients</a></th>'.      '<th><a href="javascript:changeSort(\'recipients\')">'.&mt('Recipients').'</a></th>'.
     &Apache::loncommon::end_data_table_header_row();      &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))) {          if (($env{'form.sortby'} eq 'date') || ($env{'form.sortby'} eq '') || (!defined($env{'form.sortby'})) || (($env{'form.sortby'} eq 'sender') && (@senders <= 1))) {
Line 337  ENDSCRIPT Line 357  ENDSCRIPT
         }          }
     } else {      } else {
         $output .= &Apache::loncommon::start_data_table_empty_row().          $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();      &Apache::loncommon::end_data_table_empty_row();
     }      }
     $output .= &Apache::loncommon::end_data_table();      $output .= &Apache::loncommon::end_data_table();
Line 358  ENDSCRIPT Line 378  ENDSCRIPT
   
 sub print_selection_form {  sub print_selection_form {
     my ($r,$formname,$cdom) = @_;      my ($r,$formname,$cdom) = @_;
     my %coursecodes = ();  
     my %codes = ();      my %codes = ();
     my @codetitles = ();      my @codetitles = ();
     my %cat_titles = ();      my %cat_titles = ();
Line 366  sub print_selection_form { Line 385  sub print_selection_form {
     my %idlist = ();      my %idlist = ();
     my %idnums = ();      my %idnums = ();
     my %idlist_titles = ();      my %idlist_titles = ();
     my $caller = 'global';  
     my $totcodes = 0;      my $totcodes = 0;
     my $format_reply;  
     my $jscript = '';      my $jscript = '';
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                '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.',
                'comp' => 'Compose Message'                 'comp' => 'Compose E-mail'
            );             );
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
           ({text=>"Select Audience"});            ({text=>"Select Audience"});
   
     $totcodes = &Apache::lonsupportreq::retrieve_instcodes(\%coursecodes,$cdom,$totcodes);      my $instcats = &Apache::lonnet::get_dom_instcats($cdom);
     if ($totcodes > 0) {      if (ref($instcats) eq 'HASH') {
         $format_reply = &Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);          if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') &&
         if ($format_reply eq 'ok') {              (ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) {
               %codes = %{$instcats->{'codes'}};
               @codetitles = @{$instcats->{'codetitles'}};
               %cat_titles = %{$instcats->{'cat_titles'}};
               %cat_order = %{$instcats->{'cat_order'}};
               $totcodes = scalar(keys(%codes));
             my $numtypes = @codetitles;              my $numtypes = @codetitles;
             &Apache::lonsupportreq::build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles);              &Apache::courseclassifier::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);              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);
         }          }
     }      }
       my @standardnames = &Apache::loncommon::get_standard_codeitems();
   
     my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom);      my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($cdom);
   
Line 401  sub print_selection_form { Line 429  sub print_selection_form {
                      internal => 'text',                       internal => 'text',
                      krb4 => 'text',                       krb4 => 'text',
                      krb5 => 'text',                       krb5 => 'text',
                      local => 'text',                       localauth => 'text',
                      unix => 'text',                       unix => 'text',
                    );                     );
     $jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements);      $jscript .= &Apache::lonhtmlcommon::set_form_elements(\%elements);
Line 411  function setCourseCat(formname) { Line 439  function setCourseCat(formname) {
     if (formname.Year.options[formname.Year.selectedIndex].value == -1) {      if (formname.Year.options[formname.Year.selectedIndex].value == -1) {
         return;          return;
     }      }
     courseSet('Year');      courseSet('$codetitles[0]');
     for (var j=0; j<formname.Semester.length; j++) {      for (var j=0; j<formname.Semester.length; j++) {
         if (formname.Semester.options[j].value == "$env{'form.Semester'}") {          if (formname.Semester.options[j].value == "$env{'form.Semester'}") {
             formname.Semester.options[j].selected = true;              formname.Semester.options[j].selected = true;
Line 420  function setCourseCat(formname) { Line 448  function setCourseCat(formname) {
     if (formname.Semester.options[formname.Semester.selectedIndex].value == -1) {      if (formname.Semester.options[formname.Semester.selectedIndex].value == -1) {
         return;          return;
     }      }
     courseSet('Semester');      courseSet('$codetitles[1]');
     for (var j=0; j<formname.Department.length; j++) {      for (var j=0; j<formname.Department.length; j++) {
         if (formname.Department.options[j].value == "$env{'form.Department'}") {          if (formname.Department.options[j].value == "$env{'form.Department'}") {
             formname.Department.options[j].selected = true;              formname.Department.options[j].selected = true;
Line 429  function setCourseCat(formname) { Line 457  function setCourseCat(formname) {
     if (formname.Department.options[formname.Department.selectedIndex].value == -1) {      if (formname.Department.options[formname.Department.selectedIndex].value == -1) {
         return;          return;
     }      }
     courseSet('Department');      courseSet('$codetitles[2]');
     for (var j=0; j<formname.Number.length; j++) {      for (var j=0; j<formname.Number.length; j++) {
         if (formname.Number.options[j].value == "$env{'form.Number'}") {          if (formname.Number.options[j].value == "$env{'form.Number'}") {
             formname.Number.options[j].selected = true;              formname.Number.options[j].selected = true;
Line 455  function setCourseCat(formname) { Line 483  function setCourseCat(formname) {
 </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,'Roles');      $output .= &Apache::lonhtmlcommon::role_select_row(\@roles,&mt('Roles'));
     $output .= &Apache::lonhtmlcommon::course_select_row('Courses',$formname,$totcodes,\@codetitles,\%idlist,\%idlist_titles);      $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::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::submit_row(&mt('Submit'),$cmd,$submit_text);
     $output .= &Apache::lonhtmlcommon::end_pick_box();      $output .= &Apache::lonhtmlcommon::end_pick_box();
     $output .= &end_page();      $output .= &end_page();
Line 471  sub print_composition_form { Line 499  sub print_composition_form {
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"javascript:goBack('pick_target')",          ({href=>"javascript:goBack('pick_target')",
           text=>"Select Audience"},            text=>"Select Audience"},
          {text=>"Compose Message"});           {text=>"Compose E-mail"});
     my $jscript = &Apache::loncommon::check_uncheck_jscript();      my $jscript = &Apache::loncommon::check_uncheck_jscript();
     $jscript .= qq|      $jscript .= qq|
 function goBack(target) {  function goBack(target) {
Line 496  function goBack(target) { Line 524  function goBack(target) {
   'Broadcast e-mail to users', $formname));    'Broadcast e-mail to users', $formname));
   
     my $coursefilter = $env{'form.coursepick'};      my $coursefilter = $env{'form.coursepick'};
     my %courses = ();      my %courses;
     if ($coursefilter eq 'all') {      if ($coursefilter eq 'all') {
         %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.',          %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.',
                                                  undef,undef,'Course');                                                   undef,undef,'Course');
     } elsif ($coursefilter eq 'category') {      } elsif ($coursefilter eq 'category') {
         my $instcode = '';          my $instcode = &Apache::courseclassifier::instcode_from_selectors($cdom);
         my @cats = ('Semester','Year','Department','Number');          my $regexp = '';
         foreach my $category (@cats) {  
             if (defined($env{'form.'.$category})) {  
                 unless ($env{'form.'.$category} eq '-1') {  
                     $instcode .= $env{'form.'.$category};  
                 }  
             }  
         }  
         if ($instcode eq '') {          if ($instcode eq '') {
             $instcode = '.';              $instcode = '.';
           } else {
               $regexp = 1;
         }          }
         %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.',          %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.',
                                                  undef,undef,'Course');                                                   undef,undef,'Course',$regexp);
     } elsif ($coursefilter eq 'specific') {      } elsif ($coursefilter eq 'specific') {
         if ($env{'form.coursetotal'} > 1) {          if ($env{'form.coursetotal'} > 1) {
             my @course_ids = split(/&&/,$env{'form.courselist'});              my @course_ids = split(/&&/,$env{'form.courselist'});
             foreach (@course_ids) {              foreach my $cid (@course_ids) {
                 $courses{$_} = '';                  $courses{$cid} = '';
             }              }
         } else {          } else {
             $courses{$env{'form.courselist'}} = '';              $courses{$env{'form.courselist'}} = '';
Line 572  function goBack(target) { Line 595  function goBack(target) {
         $access{$type} = $type;          $access{$type} = $type;
     }      }
     foreach my $course_id (keys(%courses)) {      foreach my $course_id (keys(%courses)) {
         my ($cdom,$cnum) = split(/_/,$course_id);          my %coursehash = 
               &Apache::lonnet::coursedescription($course_id,{'one_time' => 1});
           my $cdom = $coursehash{'domain'};
           my $cnum = $coursehash{'num'};
         &Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users);          &Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users);
     }      }
     foreach my $role (keys(%users)) {      foreach my $role (keys(%users)) {
Line 607  function goBack(target) { Line 633  function goBack(target) {
  $output .= &Apache::loncommon::start_data_table();   $output .= &Apache::loncommon::start_data_table();
         if (keys(%recipients) > 0) {          if (keys(%recipients) > 0) {
     $output .= &Apache::loncommon::start_data_table_header_row();      $output .= &Apache::loncommon::start_data_table_header_row();
             $output .= '<th>&nbsp;<th>username:domain</th><th>&nbsp;&nbsp;</th><th>'.$lt{'emad'}.'</th>';              $output .= '<th>&nbsp;<th>username:domain</th><th>'.$lt{'emad'}.'</th>';
     $output .= &Apache::loncommon::end_data_table_header_row();      $output .= &Apache::loncommon::end_data_table_header_row();
         }          }
         foreach my $username (sort(keys(%recipients))) {          foreach my $username (sort(keys(%recipients))) {
     $output .= &Apache::loncommon::start_data_table_row();      $output .= &Apache::loncommon::start_data_table_row();
             if ($recipients{$username} =~ /\@/) {              if ($recipients{$username} =~ /\@/) {
                 my $value=&escape($username).':'.&escape($recipients{$username});                  my $value=&escape($username).':'.&escape($recipients{$username});
                 $output .= '<td><input type="checkbox" name="recipient" value="'.$value.'" /></td><td>'.$username.'</td><td>&nbsp;&nbsp;</td><td>'.$recipients{$username}.'</td>';                  $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 .= &Apache::loncommon::end_data_table_row();
         }          }
         $output .= &Apache::loncommon::end_data_table();          $output .= &Apache::loncommon::end_data_table();
         if (@unmatched) {          if (@unmatched) {
             $output .= '<br /><br />'.&mt('Could not determine e-mail addresses for the following users:').'<ul>';              $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 .= '<li>'.$username.'</li>';
             }              }
             $output .= '</ul>';              $output .= '</ul>';
Line 630  function goBack(target) { Line 656  function goBack(target) {
         $output .= &Apache::lonhtmlcommon::row_title(&mt('Sender e-mail address'));          $output .= &Apache::lonhtmlcommon::row_title(&mt('Sender e-mail address'));
         $output .= '<input type="text" name="sender" value="'.$sender.'" />';          $output .= '<input type="text" name="sender" value="'.$sender.'" />';
         $output .= &Apache::lonhtmlcommon::row_closure();          $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();          $output .= &Apache::lonhtmlcommon::end_pick_box();
     } else {      } else {
         $output .= $lt{'nore'}."\n".          $output .= $lt{'nore'}."\n".
Line 662  ENDSCRIPT Line 688  ENDSCRIPT
           text=>"Select audience"});            text=>"Select audience"});
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"javascript:goBack('compose')",          ({href=>"javascript:goBack('compose')",
           text=>"Compose Message"});            text=>"Compose E-mail"});
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"/adm/notify?command=process",          ({href=>"/adm/notify?command=process",
           text=>"Outcome"});            text=>"Outcome"});
Line 681  ENDSCRIPT Line 707  ENDSCRIPT
     '<th>'.&mt('Status').'</th>'.      '<th>'.&mt('Status').'</th>'.
     '<th>'.&mt('Subject').'</th>'.      '<th>'.&mt('Subject').'</th>'.
     '<th>'.&mt('Message').'</th>'.      '<th>'.&mt('Message').'</th>'.
     '<th>'.&mt('Recipents').'</th>'.      '<th>'.&mt('Recipients').'</th>'.
     &Apache::loncommon::end_data_table_header_row();      &Apache::loncommon::end_data_table_header_row();
  $output .= &Apache::loncommon::start_data_table_row().   $output .= &Apache::loncommon::start_data_table_row().
     '<td valign="middle">'.&mt('Sent').'</td>'.      '<td valign="middle">'.&mt('Sent').'</td>'.
Line 696  ENDSCRIPT Line 722  ENDSCRIPT
     &Apache::loncommon::end_data_table_row().      &Apache::loncommon::end_data_table_row().
     &Apache::loncommon::end_data_table();      &Apache::loncommon::end_data_table();
     } else {      } 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".      $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']);
Line 718  sub broadcast_email { Line 744  sub broadcast_email {
         $msg->to($to);          $msg->to($to);
         $msg->subject($subject);          $msg->subject($subject);
         $msg->add('From',"$from");          $msg->add('From',"$from");
           $msg->add('Content-type','text/plain; charset=UTF-8');
         if (my $fh = $msg->open()) {          if (my $fh = $msg->open()) {
             print $fh $message;              print $fh $message;
             $fh->close;              $fh->close;
Line 730  sub get_user_info { Line 757  sub get_user_info {
     my ($user,%email_defaults) = @_;      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::loncommon::getemails($uname,$udom);
     my $email = '';      my $email = '';
     foreach my $type (@emailtypes) {      foreach my $type (@emailtypes) {
         $email = $userinfo{$type};          $email = $userinfo{$type};
Line 757  sub get_user_info { Line 784  sub get_user_info {
 sub form_elements {  sub form_elements {
    my ($longtypes,$authtypes) = @_;     my ($longtypes,$authtypes) = @_;
    %{$longtypes} = (     %{$longtypes} = (
                    active => 'Currently has access',                     active => &mt('Currently has access'),
                    previous => 'Previously had access',                     previous => &mt('Previously had access'),
                    future => 'Will have future access',                     future => &mt('Will have future access'),
                    );                     );
    %{$authtypes} = (     %{$authtypes} = (
                    krb4 => 'Kerberos 4',                     krb4 => 'Kerberos 4',
                    krb5 => 'Kerberos 5',                     krb5 => 'Kerberos 5',
                    internal => 'Internal (LON-CAPA)',                     internal => 'Internal (LON-CAPA)',
                    unix => 'Filesystem (UNIX)',                     unix => 'Filesystem (UNIX)',
                    local => 'Local/Customized',                     localauth => 'Local/Customized',
                    );                     );
    return;     return;
 }  }
Line 778  sub store_mail { Line 805  sub store_mail {
                         $attachmenturl,$recipients,undef,undef,'dcmail');                          $attachmenturl,$recipients,undef,undef,'dcmail');
   
 # Store in dc email db files on primary library server for domain.  # Store in dc email db files on primary library server for domain.
     my $server = $Apache::lonnet::domain_primary{$domain};      my $server = &Apache::lonnet::domain($domain,'primary');
     if (defined($server)) {      if (defined($server)) {
         unless (&Apache::lonnet::dcmailput($domain,$msgid,$message,$server)           unless (&Apache::lonnet::dcmailput($domain,$msgid,$message,$server) 
                                                             eq 'ok') {                                                              eq 'ok') {

Removed from v.1.22  
changed lines
  Added in v.1.43


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>